このインテグレーションは、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__apikeyとidentifier__installation_idの組み合わせ)でプロファイル識別子を公開するクエリ。
セキュリティポリシーで 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、ネットワークタイムアウト)は指数バックオフで再試行されます。400と401応答は、ペイロードまたは認証の問題を示すため、即座に失敗します。
Treasure AIでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、Batchにアクセスするための認証を提供します。
- TD Consoleを開きます。
- Integrations Hub > Catalogに移動します。
- Catalogの右端にある検索アイコンをクリックして、Batchと入力します。
- Batchコネクタにカーソルを合わせて、Create Authenticationを選択します。

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

- BatchのREST API Keyを入力します。
- BatchのProject Keyを入力します。
- 接続の名前を入力します。
- Continueを選択します。
| パラメータ | 必須 | 説明 |
|---|---|---|
rest_api_key | はい | Batch REST APIキー。 |
project_key | はい | Batchプロジェクトキー。 |
インテグレーションを設定するには:
- TD Consoleを開きます。
- Data Workbench > Queriesに移動します。
- New Queryをクリックしてクエリを作成するか、エクスポートしたい保存済みクエリを開きます。
- クエリエディタの上部で、Export Resultsを選択します。
- 作成したBatch認証を選択します。
- エクスポートパラメータを設定します。

- 列プレフィックスの検出:インテグレーションは各クエリ結果の列名を検査し、識別子(
identifier__)、ネイティブ属性(batch__)、型プレフィックス付きカスタム属性(date__、url__、string_array__、object__、array__)、またはプレーンなカスタム属性(プレフィックスなし、Embulkの列型から型を推論)に分類します。 - 識別子の抽出:各行について、インテグレーションは
identifier__値を読み取り、custom_idまたはinstallation形式(apikey+installation_id)を使用してidentifiersブロックを構築します。 - 属性またはイベントのマッピング:
Attributesモードでは、ネイティブ列は予約された$…ワイヤキーで出力され、カスタム列はラップされたキーまたはプレーンキーで出力されます。Eventsモードでは、各行が1つのイベントを構築し、イベントは識別子ごとにevents[]配列にグループ化されます。 - 行ごとの検証:インテグレーションは、送信前にキー形式、値の制限、ネイティブ属性の型、および25 kBのシリアライズされた属性サイズを検証します。
- バッチ処理:操作はバッファリングされ、バッチ単位(最大
batch_size、リクエストあたり最大10,000操作)でフラッシュされます。 - 再試行と部分エラー:
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 | いいえ | true | trueの場合、null値のフィールドはペイロードから除去され、属性は変更されません。falseの場合、nullフィールドはJSON nullとして出力され、Batchは属性を消去します。プロファイル属性とイベントプロパティの両方に適用されます。 |
skip_invalid_records | いいえ | true | trueの場合、クライアント側の検証に失敗した行はスキップされ、ログに記録され、カウントされ、有効な行は続行されます。falseの場合、最初の無効な行でタスクが失敗し、何も送信されません。 |
ignore_partial_errors | いいえ | true | Batchのサーバー側SUCCESS_WITH_PARTIAL_ERRORS応答のみを制御します。trueの場合、レコードごとのエラーがログに記録され、タスクは続行されます。falseの場合、タスクは中止されます。 |
識別子と属性の型は、クエリ結果スキーマの列名プレフィックスで宣言されます。列の設定は不要です。列は3つのグループに分類されます。
列名は大小文字を区別せずにマッチングおよびシリアライズされます。インテグレーションはプレフィックスを検出してBatchのワイヤキーを導出する前に各列名を小文字化するため、IDENTIFIER__Custom_Id、BATCH__Email_Address、プレーンなLoyaltyTierはそれぞれidentifier__custom_id、batch__email_address、loyaltytierとして扱われます。そのため、カスタム属性キーは常に小文字でBatchに送信されます(Batchはカスタムキーが^[a-z0-9_]{1,30}$に一致することを要求します)。Eventsモードでは、batch__nameの値も検証および送信の前に小文字化されるため、Purchase_Completedはpurchase_completedになります。
| Treasure AIクエリ結果 | Batch送信先 | 説明 |
|---|---|---|
identifier__custom_id | identifiers.custom_id | プロファイル識別子。この形式、または以下のinstallation形式を使用します。正確に1つの形式が存在する必要があります。文字列、最大512文字。 |
identifier__apikey + identifier__installation_id | identifiers.installation.apikeyおよびidentifiers.installation.installation_id | installation識別子形式。両方の列が一緒に存在する必要があります。 |
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_address、email_marketing、phone_number、sms_marketing、email_open_tracking_consent、language、timezone、region、topic_preferencesです。Eventsモードでは、batch__プレフィックスは代わりに予約済みイベントフィールドname(必須)、time、label、tagsを保持します。ネイティブ属性セットはprofile_sync_typeによってゲートされます。プロファイルネイティブ名はEventsモードで拒否され、イベント予約名はAttributesモードで拒否されます。
コネクタは、プレーンな(プレフィックスなしの)カスタム属性のBatch型をTreasure AIの列型から推論します。
| Treasure AIタイプ | Batchデータタイプ |
|---|---|
string | string |
long | number |
double | number |
boolean | boolean |
timestamp | date__<name>を使用してBatchのdate(<name>)属性として送信します。 |
| パラメータ | 値 | 動作 |
|---|---|---|
profile_sync_type | Attributes | 1つの入力行を1つのプロファイル更新にマッピングします。ネイティブ属性とカスタム属性がプロファイルに書き込まれます。 |
profile_sync_type | Events | 1つの入力行を1つのイベントにマッピングします。イベントは識別子ごとにevents[]配列にグループ化されます。フラッシュ前に識別子ごとに最大15イベントが蓄積されます。 |
omit_null_fields | true | null値のフィールドはクライアント側で除去され、Batchプロファイルの属性は変更されません。 |
omit_null_fields | false | null値のフィールドは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 |
|---|---|---|---|---|
| abc123 | user@example.com | en | FR | gold |
| def456 | jane@example.com | fr | fr | silver |
これは1つのPOST /2.11/profiles/mass-updateリクエストを生成します。各行は、identifiers.custom_idブロックと、$email_address、$language、$region、date(signup_date)、url(profile_url)、loyalty_tierワイヤキーを使用するattributesオブジェクトを持つ1つの操作になります。batch__regionの値frはFRに正規化されます。
必要な設定
| パラメータ | 値 |
|---|---|
target | Profile |
profile_sync_type | Attributes |
skip_invalid_records | true |
omit_null_fields | true |
この例では、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 |
|---|---|---|---|---|
| abc123 | purchase | 2026-06-21T10:00:00Z | electronics | 299 |
| abc123 | purchase | 2026-06-21T14:30:00Z | books | 42 |
両方の行はcustom_id abc123を共有しているため、events[]配列に2つのエントリを持つ1つの操作にグループ化されます。categoryとamount列はevents[].attributesの下のイベント属性になります。
必要な設定
| パラメータ | 値 |
|---|---|
target | Profile |
profile_sync_type | Events |
skip_invalid_records | true |
Batchはサーバー側でbatch__timeに24時間の recency ウィンドウを適用します。イベントは最大24時間前まで可能で、未来であってはなりません。スケジュールされた同期では、イベントのタイムスタンプがデータの論理的な日付ではなく、コネクタの実行時刻の過去24時間以内に収まるようにしてください。batch__timeを省略すると、Batchがリクエスト到着時刻をスタンプします。
Scheduled JobsとResult Exportを使用して、出力結果を定期的にBatchに書き込むことができます。
Treasure AIのスケジューラ機能は、高可用性を実現するための定期的なクエリ実行をサポートしています。
Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。
Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。
2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。
例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。
Data Workbench > Queries に移動します
新しいクエリを作成するか、既存のクエリを選択します。
Schedule の横にある None を選択します。

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

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

| 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) に実行するようにスケジュールを設定します。 |
- (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。
設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。
(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。
- Audience Studio に移動します。
- parent segment を選択します。
- ターゲット segment を開き、右クリックして、Create Activation を選択します。
- Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
- 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 番号。
- + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
- Schedule を設定します。

- スケジュールを定義する値を選択し、オプションでメール通知を含めます。
- 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__apikeyとidentifier__installation_idの組み合わせ。 |
| カスタムキーエラーでエクスポートが失敗する。 | カスタム属性の列名が小文字化した後でも^[a-z0-9_]{1,30}$に一致しません(例:ハイフンやドットを含む、または30文字を超える)。名前は自動的に小文字化されるため、大文字だけではこのエラーは発生しません。 | クエリで列を、小文字・数字・アンダースコアのみを使用した30文字以下の名前にエイリアスしてください。 |
| 行がスキップされる。 | 行がクライアント側の検証に失敗し(例:無効なメール形式、または25 kBを超える属性オブジェクト)、skip_invalid_recordsがtrueです。 | ジョブログで行インデックス、列、ルールを確認し、ソースデータを修正してください。行をスキップする代わりにエクスポートを失敗させるには、skip_invalid_recordsをfalseに設定します。 |
| エクスポートがレート制限される。 | Batchが429 Too Many Requestsを返しました。 | 対応は不要です。コネクタは少なくとも5秒待機し、自動的に再試行します。 |
BatchがSUCCESS_WITH_PARTIAL_ERRORSを返す。 | Batchはリクエストを受け入れましたが、一部のレコードを拒否しました。 | ジョブログでレコードごとの診断情報(bulk index、category、attribute、reason)を確認し、ソースデータを修正してください。部分エラー発生時にエクスポートを失敗させるには、ignore_partial_errorsをfalseに設定します。 |