Skip to content
Last updated

Batch Export Integration

このインテグレーションは、Batch Profile Mass Update APIを使用して、Treasure AIからBatchへ顧客プロファイルデータを直接エクスポートします。Batchは、モバイルプッシュ、Webプッシュ、アプリ内メッセージング、メール、SMSにわたるオムニチャネルキャンペーンのための顧客エンゲージメントプラットフォーム(CEP)です。

このインテグレーションは、各クエリ結果の行をBatchのプロファイル操作にマッピングします。識別子、ネイティブ属性、カスタム属性、イベントはすべて、クエリ内の列名プレフィックス規約で宣言されるため、列ごとの設定は不要です。インテグレーションはAttributesモード(1行で1プロファイルを更新)またはEventsモード(1行で1イベントを記録し、識別子ごとにグループ化)で実行できます。

前提条件

  • Treasure AIの基本的な知識。
  • Batchのプロファイル、custom ID、installation識別子、ネイティブ属性、イベントに関する基本的な知識。
  • Batch REST APIキー。
  • Batchプロジェクトキー。
  • identifier__列名プレフィックス(identifier__custom_id、またはidentifier__apikeyidentifier__installation_idの組み合わせ)でプロファイル識別子を公開するクエリ。

Treasure Data Integration の静的 IP アドレス

セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: IP Addresses for Integrations

制限事項

  • 配列値の属性はすべて置換専用です。string_array__カスタム属性と$topic_preferencesは常に完全な配列として送信されます。Batch APIは増分操作をサポートしていますが、このバージョンでは増分の$add/$remove操作はサポートされていません。クエリで目的の配列全体を出力する必要があります。
  • batch__プレフィックスのオプトアウトはありません。batch__regionという名前の列は常にネイティブの$region属性にマッピングされます。代わりにカスタム属性として送信するには、プレフィックスのない名前に列をエイリアスしてください。
  • Profile Mass Update APIは同期型です。非同期のインデックストークンやポーリングはありません。(Batch Audience APIには非同期トークンがありますが、両者を混同しないでください。)
  • スループット(1秒あたり10,000プロファイル更新)はクライアント側で能動的にスロットリングされません。429応答のみがバックオフをトリガーします。
  • 列名は自動的に小文字に正規化されるため、大文字や大小文字が混在した名前も受け付けられます。小文字化した後でも^[a-z0-9_]{1,30}$に一致しない名前(例:ハイフンやドットを含む、または30文字を超える名前)は、クエリでエイリアスする必要があります。大小文字の変換以外の実行時のリネームはサポートされていません。
  • レート制限(429)とサーバーエラー(5xx、ネットワークタイムアウト)は指数バックオフで再試行されます。400401応答は、ペイロードまたは認証の問題を示すため、即座に失敗します。

新しい認証の作成

Treasure AIでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、Batchにアクセスするための認証を提供します。

  1. TD Consoleを開きます。
  2. Integrations Hub > Catalogに移動します。
  3. Catalogの右端にある検索アイコンをクリックして、Batchと入力します。
  4. Batchコネクタにカーソルを合わせて、Create Authenticationを選択します。

New Authenticationダイアログが開きます。

  1. BatchのREST API Keyを入力します。
  2. BatchのProject Keyを入力します。
  3. 接続の名前を入力します。
  4. Continueを選択します。
パラメータ 必須 説明
rest_api_keyはいBatch REST APIキー。
project_keyはいBatchプロジェクトキー。

エクスポート結果の設定

インテグレーションを設定するには:

  1. TD Consoleを開きます。
  2. Data Workbench > Queriesに移動します。
  3. New Queryをクリックしてクエリを作成するか、エクスポートしたい保存済みクエリを開きます。
  4. クエリエディタの上部で、Export Resultsを選択します。
  5. 作成したBatch認証を選択します。
  6. エクスポートパラメータを設定します。

エクスポートの仕組み

  1. 列プレフィックスの検出:インテグレーションは各クエリ結果の列名を検査し、識別子(identifier__)、ネイティブ属性(batch__)、型プレフィックス付きカスタム属性(date__url__string_array__object__array__)、またはプレーンなカスタム属性(プレフィックスなし、Embulkの列型から型を推論)に分類します。
  2. 識別子の抽出:各行について、インテグレーションはidentifier__値を読み取り、custom_idまたはinstallation形式(apikey + installation_id)を使用してidentifiersブロックを構築します。
  3. 属性またはイベントのマッピングAttributesモードでは、ネイティブ列は予約された$…ワイヤキーで出力され、カスタム列はラップされたキーまたはプレーンキーで出力されます。Eventsモードでは、各行が1つのイベントを構築し、イベントは識別子ごとにevents[]配列にグループ化されます。
  4. 行ごとの検証:インテグレーションは、送信前にキー形式、値の制限、ネイティブ属性の型、および25 kBのシリアライズされた属性サイズを検証します。
  5. バッチ処理:操作はバッファリングされ、バッチ単位(最大batch_size、リクエストあたり最大10,000操作)でフラッシュされます。
  6. 再試行と部分エラー429およびサーバーエラーはバックオフで再試行されます。BatchのSUCCESS_WITH_PARTIAL_ERRORS応答はignore_partial_errorsに従って処理されます。

エクスポートパラメータ

パラメータ 必須 デフォルト 説明
targetいいえProfileこれをProfileコネクタとして識別する固定定数。前方互換性のために予約されています。不明な値は設定エラーになります。
profile_sync_typeいいえAttributesエクスポートモード。Attributesは1行を1プロファイル更新にマッピングします。Eventsは1行を1イベントにマッピングし、識別子ごとにグループ化します。
batch_sizeいいえ10000リクエストあたりのプロファイル操作数。1から10000までの整数である必要があります。0または10000を超える値は設定エラーになります。
omit_null_fieldsいいえtruetrueの場合、null値のフィールドはペイロードから除去され、属性は変更されません。falseの場合、nullフィールドはJSON nullとして出力され、Batchは属性を消去します。プロファイル属性とイベントプロパティの両方に適用されます。
skip_invalid_recordsいいえtruetrueの場合、クライアント側の検証に失敗した行はスキップされ、ログに記録され、カウントされ、有効な行は続行されます。falseの場合、最初の無効な行でタスクが失敗し、何も送信されません。
ignore_partial_errorsいいえtrueBatchのサーバー側SUCCESS_WITH_PARTIAL_ERRORS応答のみを制御します。trueの場合、レコードごとのエラーがログに記録され、タスクは続行されます。falseの場合、タスクは中止されます。

データマッピング

識別子と属性の型は、クエリ結果スキーマの列名プレフィックスで宣言されます。列の設定は不要です。列は3つのグループに分類されます。

列名は大小文字を区別せずにマッチングおよびシリアライズされます。インテグレーションはプレフィックスを検出してBatchのワイヤキーを導出する前に各列名を小文字化するため、IDENTIFIER__Custom_IdBATCH__Email_Address、プレーンなLoyaltyTierはそれぞれidentifier__custom_idbatch__email_addressloyaltytierとして扱われます。そのため、カスタム属性キーは常に小文字でBatchに送信されます(Batchはカスタムキーが^[a-z0-9_]{1,30}$に一致することを要求します)。Eventsモードでは、batch__nameの値も検証および送信の前に小文字化されるため、Purchase_Completedpurchase_completedになります。

Treasure AIクエリ結果 Batch送信先 説明
identifier__custom_ididentifiers.custom_idプロファイル識別子。この形式、または以下のinstallation形式を使用します。正確に1つの形式が存在する必要があります。文字列、最大512文字。
identifier__apikey + identifier__installation_ididentifiers.installation.apikeyおよびidentifiers.installation.installation_idinstallation識別子形式。両方の列が一緒に存在する必要があります。
batch__<native_name>$<native_name>ネイティブプロファイル属性。batch__プレフィックスが除去され、予約された$…ワイヤキーが出力されます。以下のネイティブ属性リストを参照してください。
date__<name>date(<name>)カスタム日付属性。値はエポック秒またはRFC 3339文字列です。
url__<name>url(<name>)カスタムURL属性。値にはスキーム(://)が含まれ、最大2048文字である必要があります。
string_array__<name><name>カスタム文字列配列属性(置換専用)。空でない文字列のJSON配列、各項目最大300文字、最大25項目。
object__<name> / array__<name><name>カスタムオブジェクトまたは配列属性。セルは整形式のJSONオブジェクトまたは配列文字列である必要があります。
<name>(プレフィックスなし)<name>カスタム属性。Embulkの列型から型が推論されます。キーは^[a-z0-9_]{1,30}$に一致する必要があります。

Attributesモードでサポートされるbatch__ネイティブ属性名は、email_addressemail_marketingphone_numbersms_marketingemail_open_tracking_consentlanguagetimezoneregiontopic_preferencesです。Eventsモードでは、batch__プレフィックスは代わりに予約済みイベントフィールドname(必須)、timelabeltagsを保持します。ネイティブ属性セットはprofile_sync_typeによってゲートされます。プロファイルネイティブ名はEventsモードで拒否され、イベント予約名はAttributesモードで拒否されます。

コネクタは、プレーンな(プレフィックスなしの)カスタム属性のBatch型をTreasure AIの列型から推論します。

Treasure AIタイプ Batchデータタイプ
stringstring
longnumber
doublenumber
booleanboolean
timestampdate__<name>を使用してBatchのdate(<name>)属性として送信します。

同期モード

パラメータ 動作
profile_sync_typeAttributes1つの入力行を1つのプロファイル更新にマッピングします。ネイティブ属性とカスタム属性がプロファイルに書き込まれます。
profile_sync_typeEvents1つの入力行を1つのイベントにマッピングします。イベントは識別子ごとにevents[]配列にグループ化されます。フラッシュ前に識別子ごとに最大15イベントが蓄積されます。
omit_null_fieldstruenull値のフィールドはクライアント側で除去され、Batchプロファイルの属性は変更されません。
omit_null_fieldsfalsenull値のフィールドはJSON nullとして出力され、Batchは属性を消去します。型付きのdate__/url__属性の場合、削除のためにプレーンなアンラップキーが出力されます。

サンプルクエリ

プロファイル属性のエクスポート

この例では、ネイティブ属性(メール、言語、地域)とカスタム属性(サインアップ日、プロファイルURL、ロイヤルティ階層)を含む顧客プロファイルをエクスポートします。

SELECT
  customer_id          AS identifier__custom_id,
  email                AS batch__email_address,
  marketing_consent    AS batch__email_marketing,
  phone                AS batch__phone_number,
  preferred_language   AS batch__language,
  timezone             AS batch__timezone,
  country_code         AS batch__region,
  CAST(signup_ts AS VARCHAR) AS date__signup_date,
  profile_url          AS url__profile_url,
  loyalty_tier,
  interests            AS string_array__interests,
  preferences_json     AS object__preferences
FROM customer_profiles
WHERE TD_TIME_RANGE(time, TD_DATE_TRUNC('day', TD_SCHEDULER_TIME() - 86400, 'UTC'), NULL)

サンプルクエリ結果

identifier__custom_id batch__email_address batch__language batch__region loyalty_tier
abc123user@example.comenFRgold
def456jane@example.comfrfrsilver

これは1つのPOST /2.11/profiles/mass-updateリクエストを生成します。各行は、identifiers.custom_idブロックと、$email_address$language$regiondate(signup_date)url(profile_url)loyalty_tierワイヤキーを使用するattributesオブジェクトを持つ1つの操作になります。batch__regionの値frFRに正規化されます。

必要な設定

パラメータ
targetProfile
profile_sync_typeAttributes
skip_invalid_recordstrue
omit_null_fieldstrue

イベントのエクスポート

この例では、Eventsモードで行ごとに1つの購入イベントを記録します。batch__name列は必須です。イベントは各識別子の下にグループ化されます。

SELECT
  customer_id          AS identifier__custom_id,
  'purchase'           AS batch__name,
  CAST(purchased_at AS VARCHAR) AS batch__time,
  product_category     AS category,
  order_amount         AS amount
FROM purchases
WHERE TD_TIME_RANGE(time, TD_DATE_TRUNC('day', TD_SCHEDULER_TIME() - 86400, 'UTC'), NULL)

サンプルクエリ結果

identifier__custom_id batch__name batch__time category amount
abc123purchase2026-06-21T10:00:00Zelectronics299
abc123purchase2026-06-21T14:30:00Zbooks42

両方の行はcustom_id abc123を共有しているため、events[]配列に2つのエントリを持つ1つの操作にグループ化されます。categoryamount列はevents[].attributesの下のイベント属性になります。

必要な設定

パラメータ
targetProfile
profile_sync_typeEvents
skip_invalid_recordstrue
イベントの鮮度ウィンドウ

Batchはサーバー側でbatch__timeに24時間の recency ウィンドウを適用します。イベントは最大24時間前まで可能で、未来であってはなりません。スケジュールされた同期では、イベントのタイムスタンプがデータの論理的な日付ではなく、コネクタの実行時刻の過去24時間以内に収まるようにしてください。batch__timeを省略すると、Batchがリクエスト到着時刻をスタンプします。

クエリエクスポートジョブのスケジュール設定(オプション)

Scheduled JobsとResult Exportを使用して、出力結果を定期的にBatchに書き込むことができます。

Treasure AIのスケジューラ機能は、高可用性を実現するための定期的なクエリ実行をサポートしています。

(オプション) Query Export ジョブをスケジュールする

Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。

Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。

Treasure コンソール を使用してジョブをスケジュールする

  1. Data Workbench > Queries に移動します

  2. 新しいクエリを作成するか、既存のクエリを選択します。

  3. Schedule の横にある None を選択します。

  4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

    ドロップダウン値説明
    Custom cron...Custom cron... の詳細を参照してください。
    @daily (midnight)指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。
    @hourly (:00)毎時 00 分に実行します。
    Noneスケジュールなし。

Custom cron... の詳細

Cron 値説明
0 * * * *1 時間に 1 回実行します。
0 0 * * *1 日 1 回午前 0 時に実行します。
0 0 1 * *毎月 1 日の午前 0 時に 1 回実行します。
""スケジュールされた実行時刻のないジョブを作成します。
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)

次の名前付きエントリを使用できます:

  • Day of Week: sun, mon, tue, wed, thu, fri, sat.
  • Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:

フィールド値 例の説明
各フィールドに対して上記で表示された制限内の単一の値。
フィールドに基づく制限がないことを示すワイルドカード '*''0 0 1 * *'毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
範囲 '2-5' フィールドの許可される値の範囲を示します。'0 0 1-10 * *'毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。0 0 1,11,21 * *'毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。'30 */2 1 * *'毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10''0 0 5,*/10,25 * *'毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
  1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

クエリを実行する

クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。

設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。

(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

Audience Studio で Segment をアクティベートする

Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。

  1. Audience Studio に移動します。
  2. parent segment を選択します。
  3. ターゲット segment を開き、右クリックして、Create Activation を選択します。
  4. Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
  5. Output Mapping パネルで activation 出力をカスタマイズします。

  • Attribute Columns
    • Export All Columns を選択すると、変更を加えずにすべての列をエクスポートできます。
    • + Add Columns を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。+ Add Columns を選択し続けて、activation 出力用の新しい列を追加します。
  • String Builder
    • + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
      • String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
      • Timestamp: エクスポートの日時。
      • Segment Id: segment ID 番号。
      • Segment Name: segment 名。
      • Audience Id: parent segment 番号。
  1. Schedule を設定します。

  • スケジュールを定義する値を選択し、オプションでメール通知を含めます。
  1. Create を選択します。

batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。

ワークフローでのエクスポート結果の設定(オプション)

Treasure Workflow内で、データコネクタを使用してデータをエクスポートするように指定できます。

詳細はUsing Workflows to Export Data with the TD Toolbeltを参照してください。

サンプルワークフロー設定

timezone: UTC

_export:
  td:
    database: sample_datasets

+td-result-into-batch:
  td>: queries/batch_export.sql
  result_connection: batch
  result_settings:
    target: Profile
    profile_sync_type: Attributes
    batch_size: 10000
    skip_invalid_records: true
    ignore_partial_errors: true
    omit_null_fields: true

トラブルシューティング

エラーまたは症状 原因 解決策
認証が401で失敗する。rest_api_keyまたはproject_keyが正しくないか、認証情報がプロジェクトへのアクセス権を持っていません。BatchコンソールのSettingsでREST APIキーとプロジェクトキーを確認してください。
設定時に「unknown Batch native attribute」でエクスポートが失敗する。batch__列がサポートされていないネイティブ属性のサフィックスを使用しているか、間違ったモードで使用されています(例:Eventsモードでのプロファイルネイティブ名)。サポートされているネイティブ属性名を確認し、profile_sync_typeと一致することを確認してください。batch__topic_preferences__addのような増分形式はサポートされていません。
識別子列が存在しないためエクスポートが失敗する。クエリにidentifier__custom_idもinstallation列もないか、両方の識別子形式が含まれています。正確に1つの識別子形式を指定してください:identifier__custom_id、またはidentifier__apikeyidentifier__installation_idの組み合わせ。
カスタムキーエラーでエクスポートが失敗する。カスタム属性の列名が小文字化した後でも^[a-z0-9_]{1,30}$に一致しません(例:ハイフンやドットを含む、または30文字を超える)。名前は自動的に小文字化されるため、大文字だけではこのエラーは発生しません。クエリで列を、小文字・数字・アンダースコアのみを使用した30文字以下の名前にエイリアスしてください。
行がスキップされる。行がクライアント側の検証に失敗し(例:無効なメール形式、または25 kBを超える属性オブジェクト)、skip_invalid_recordstrueです。ジョブログで行インデックス、列、ルールを確認し、ソースデータを修正してください。行をスキップする代わりにエクスポートを失敗させるには、skip_invalid_recordsfalseに設定します。
エクスポートがレート制限される。Batchが429 Too Many Requestsを返しました。対応は不要です。コネクタは少なくとも5秒待機し、自動的に再試行します。
BatchがSUCCESS_WITH_PARTIAL_ERRORSを返す。Batchはリクエストを受け入れましたが、一部のレコードを拒否しました。ジョブログでレコードごとの診断情報(bulk index、category、attribute、reason)を確認し、ソースデータを修正してください。部分エラー発生時にエクスポートを失敗させるには、ignore_partial_errorsfalseに設定します。

関連項目