Zuoraのデータソースオブジェクト(アカウントや請求書など)をTreasure Dataにインポートできます。インポートのモードは以下の通りです:
- base
- fetch-related
fetch-relatedインポートでは、事前に結合されたすべてのオブジェクトを含むFullオブジェクトのインポートを指定できます。
- Treasure Dataの基本知識
- Zuoraの基本知識
- Zuora Import IntegrationはZuora SOAP APIを内部的に使用しています。このAPIはZuora USデータセンターのお客様が利用可能です。
- Zuora EUデータセンターのお客様でこの統合機能を利用したい場合は、カスタマーサクセス担当者にお問い合わせください。
Integrations Hub > Catalogに移動し、Zuoraを検索します。
Zuoraを選択します。

Zuoraのログイン情報を入力し、Nextを選択して接続名を指定します:

接続を作成すると、自動的にAuthentications(認証)ページに移動します。作成した接続を探してNew Transferを選択します。

情報の詳細を入力し、Nextを選択します。

Fetch related objects: Zuoraのほとんどのデータソースは関連するビジネスオブジェクトを提供しており、ネストされたクエリを構築する必要がなくなり、パフォーマンスが向上します。関連するビジネスオブジェクトデータが必要な場合は、チェックボックスにチェックを入れてクエリしたいデータソースを選択します。
API Version (default v85): Zuora SOAP APIバージョン。v85以降をサポートしています。
Duration to import: このオプションでは、インポートの'start_date'に基づいて'end_date'を選択できます。
- Start dateが02/07/2017, 12:00 AMに設定され、Number of Unitが1 DAYの場合、データ転送には02/08/2017, 12:00 AMまでのすべてのデータが含まれます。
この例では、'end_date'は次のように計算されます:
'start_date' + 'number_of_unit' = 'end_date'
02/07/2017, 12:00AM + 1 DAY = 02/08/2017, 12:00AM- 転送がスケジュールされている場合、'start_date'は前回のインポート以降の新しい'end_date'に基づいて常に変化します(前述のように計算されます)。
- incrementalが選択されていない場合、インポートは'start_date'から現在までとなります。
- ユーザーのタイムゾーンが保持されます。
'start_date'を変更したい場合は、転送を再作成することを強くお勧めします。既存の転送を編集しても'start_date'には影響しません。
データをプレビューします。何か変更したい場合はAdvanced Settingsを選択し、そうでなければNextを選択します。

データを転送するデータベースとテーブルを選択します:

データ転送のスケジュールを指定し、Start Transferをクリックします:

My Input Transfersタブの下に、進行中の新しいデータ転送が表示され、対応するジョブがJobsセクションに表示されます。
最新のTD Toolbeltをインストールできます。
$ td --version
0.15.0Zuoraアカウントのアクセス情報を使用して、次の例のように設定ファイル(例: load.yml)を準備します。
in:
type: zuora
username: xxxxxxxx
password: xxxxxxxx
base_object: Account #(required if fetch_related = false, see Appendix B)
data_source: Account #(required if fetch_related = true, see Appendix C)
fetch_related: true #(optional, default: false)
from_timestamp: 12-05-2016T11:00:00.000Z
incremental: true #(optional, default: true)
duration: { unit: DAY, num: 1 } #(required if `incremental: true`)
out:
mode: replaceこの例では、Zuora Accountデータソースをダンプしています:
username と password: ログイン情報
describe_api_verion: Zuora Describe APIバージョン。Zuora Describe APIを参照してください
base_object: インポートしたいZuora SOAP(Base)オブジェクトの名前。fetch_related: falseの場合は必須です
- 利用可能なbaseオブジェクトのリストについては、Appendixを参照してください。
data_source: インポートしたいZuoraデータソースの名前。fetch_related: trueの場合は必須です
- 利用可能なデータソースのリストについては、Appendixを参照してください。
fetch_related: baseまたはfullオブジェクト(すべての事前結合されたオブジェクトを含む)のインポートを選択できます。デフォルトはfalseです
from_timestamp: データがインポートされる開始時刻。フォーマットは: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
incremental: データインポートを継続的に行うか1回のみ行うか。デフォルトはtrueです。trueの場合、durationが必須です
duration: データがインポートされる期間。対象オブジェクトのUpdatedDateフィールドによって決定されます。unitには3つのオプションがあります: DAY、HOUR、MIN。デフォルトはDAYです。
ZuoraのいくつかのLimited Availabilityオブジェクトには、追加の設定が必要です。以下はBilling Preview Runの追加設定のリストです:
- from_timestamp : Billing Preview Runで使用する場合、これはプレビュー実行のTarget Dateです。
- include_evergreen_sub : エバーグリーンサブスクリプションを含めるかどうかを示します。デフォルトは'false'です
- batch : このプレビュー実行に含める顧客バッチを指定します
- assume_renewal : アカウントの更新を想定するかどうか。有効な値はAll、None、またはAutorenewです。デフォルトは'None'です。
- charge_type_to_exclude : 予測実行から除外する課金タイプ。可能な値: OneTime、Recurring、Usage、およびこれらの値のカンマ区切りの組み合わせ。
利用可能なoutモードの詳細については、Appendixを参照してください。
td connector:previewコマンドを使用して、インポートされるデータをプレビューできます。
td connector:preview load.ymlロードジョブを送信します。データサイズによっては数時間かかる場合があります。ユーザーはデータが保存されるデータベースとテーブルを指定する必要があります。
Treasure Dataのストレージは時間で分割されているため、--time-columnオプションを指定することをお勧めします(データパーティショニングも参照してください)。オプションが指定されていない場合、Data Connectorは最初のlongまたはtimestamp型のカラムをパーティショニング時間として選択します。--time-columnで指定するカラムの型は、longまたはtimestamp型のいずれかである必要があります。
データに時間カラムがない場合は、add_timeフィルターオプションを使用して追加できます。詳細はadd_timeフィルタープラグインを参照してください。
td connector:issue load.yml \
--database td_sample_db --table td_sample_table \
--time-column updated_dateconnector:issueコマンドは、database(td_sample_db) と table(td_sample_table) がすでに作成されていることを前提としています。TD内にデータベースまたはテーブルが存在しない場合、コマンドは失敗します。そのため、データベースとテーブルを手動で作成するか、td connector:issueコマンドで--auto-create-tableオプションを使用してデータベースとテーブルを自動作成してください。
td connector:issue load.yml \
--database td_sample_db --table td_sample_table \
--time-column updated_date --auto-create-table「Partitioning Key」に時刻フォーマット列を割り当てるには、「--time-column」オプションを使用します。
定期的なZuoraインポートのために、定期的なData Connector実行をスケジュールできます。Treasure Dataのスケジューラーの負荷分散と操作は、高可用性を実現するために最適化されています。Treasure Dataのスケジューラーを使用することで、ローカルデータセンターにcronデーモンを配置する必要がなくなります。
td connector:createコマンドを使用して新しいスケジュールを作成できます。スケジュールの名前、cron形式のスケジュール、データが保存されるデータベースとテーブル、Data Connector設定ファイルを指定します。これらの値は必須です。
td connector:create \
daily_zuora_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.yml'cron'パラメータは、'@hourly'、'@daily'、'@monthly'の3つのオプションも受け入れます。
デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートすることに注意してください。PST、CSTなどのタイムゾーン略語はサポートされておらず、予期しないスケジュールにつながる可能性があります。
td connector:listでスケジュールエントリのリストを確認できます。
$ td connector:listtd connector:showは、スケジュールエントリの実行設定を表示します。
td connector:show daily_zuora_importtd connector:deleteはスケジュールを削除します。
$ td connector:delete daily_zuora_import| Base Object | Base Object | Base Object |
|---|---|---|
| Account | InvoiceItem. | ProductRatePlanChargeTier |
| AccountingCode | InvoiceItemAdjustment | RatePlan |
| AccountingPeriod | InvoicePayment | RatePlanCharge |
| BillingRun | Payment | RatePlanChargeTier |
| BillingPreviewRun | PaymentMethod | Refund |
| ChargeMetrics | PaymentMethodTransactionLog | RefundInvoicePayment |
| Contact | PaymentTransactionLog | RefundTransactionLog |
| CreditBalanceAdjustment | Product | Subscription |
| Feature | ProductFeature | SubscriptionProductFeature |
| Invoice | ProductRatePlan | TaxationItem |
| InvoiceAdjustment | ProductRatePlanCharge | Usage |
| Data Source | Data Source | Data Source |
|---|---|---|
| Account | Payment | RatePlanChargeTier |
| AccountingCode | PaymentGatewayReconciliationEventLog | RevenueChargeSummaryItem |
| BillingRun | PaymentMethod | RevenueEventItem |
| Contact | PaymentMethodTransactionLog | RevenueEventItemCreditMemoItem |
| ChargeMetrics | PaymentPart | RevenueEventItemDebitMemoItem |
| CreditBalanceAdjustment | PaymentPartItem | RevenueEventItemInvoiceItem |
| Invoice | PaymentReconciliationLog | RevenueEventItemInvoiceItemAdjustment |
| InvoiceAdjustment | PaymentTransactionLog | RevenueScheduleItem |
| InvoiceItemAdjustment | ProcessedUsage | RevenueScheduleItemInvoiceItem |
| InvoicePayment | Product | RevenueScheduleItemInvoiceItemAdjustment |
| JournalEntryItem | ProductRatePlanChargeTier | RevenueScheduleItemCreditMemoItem |
| Order | RatePlan | RevenueScheduleItemDebitMemoItem |
| OrderAction | RatePlanCharge | Subscription |
| OrderQuantity | RatePlanChargeTier | SubscriptionProductFeature |
| OrderMrr | Refund | UpdaterDetail (PaymentMethodUpdate) |
| OrderTcb | RefundInvoicePayment | Usage |
| OrderTcv | RefundTransactionLog |
Base Objectのデータをインポートする場合、一部の特殊なフィールドはデフォルトで除外されます。これは、Zuoraによって各Base Objectに適用される制限または制約によるものです。
例:RatePlanCharge DiscountAmountは、次のフィールドと一緒にクエリできません:Price、IncludedUnits、DiscountPercentage、OveragePrice。プラグインはデフォルトでこれらのフィールドを除外します。Advanced Configuration UIで除外フィールドのリストを変更できます。Advanced ConfigurationはBase Objectの除外フィールドのリストを自動的に入力します。
除外フィールドを変更する手順:
- Base Objectプレビュー画面で、Advanced Settingsを選択します。
- Advanced Settingsには、事前定義された除外フィールドのリストが含まれています(存在する場合)。フィールドを置き換えたり変更したりすることもできます。ただし、一部のフィールドは一緒に含めることができないことに注意してください。


除外フィールド設定はBase Objectターゲットでのみ機能し、Data Sourceターゲットでは無視されます
Timestamp列は、データコネクタが時間範囲フィルタを適用するために使用するZuoraオブジェクト列です。列はデフォルトでUpdatedDateまたはプラグイン内部設定で事前設定された列になります。
| Zuora Object | Incremental Column |
|---|---|
| PaymentGatewayReconciliationEventLog | CreatedDate |
| PaymentMethodTransactionLog | TransactionDate |
| PaymentReconciliationLog | CreatedDate |
| PaymentTransactionLog | TransactionDate |
| RefundTransactionLog | TransactionDate |
前の表にリストされていない、サポートされているその他すべてのZuoraオブジェクトは、デフォルトの列UpdatedDateを使用します。
異なる列をtimestamp列として使用したい場合があります。Advanced Configuration画面のTimestamp列設定を通じて列を指定できます。

パラメータ値は、Zuora ZOQLフィルタと同じ形式で、ObjectName.ColumnNameの形式になります。例:RatePlanCharge.UpdatedAt、RatePlan.UpdatedAt、RatePlanChargeTier.UpdatedAt。
timestamp列として使用される列は、ZuoraでDateTime型データタイプを持つ必要があります。