# Yahoo Export Integration Yahoo! integrationは、広告目的で顧客セグメントをエクスポートします。 - Partnermatch API経由でユーザーIDをアップロードできます - ユーザーとオーディエンス属性をYahoo!にアップロードできます 消費者は、ショッピング、バンキング、ニュース閲覧、ゲーム、動画視聴など、どこにいても、どのデバイスを使用していても、シームレスなオンライン体験を期待しています。Yahoo! Content Delivery Network(CDN)は、オンラインバンキング、eコマース、メディア配信において世界最大のブランドの一部から信頼されています。これは、顧客体験を向上させ、ロイヤルティを高める高品質、パフォーマンス、信頼性、スケールを提供するためです。 Yahoo!は次のことを支援します: - 大規模にオーディエンスを魅了する。 - 適切なタイミングで適切な広告を配信する。 - DisneyとABCのデジタルブロードバンドメッセージングを統合する。 このトピックには以下が含まれます: ## この統合で何ができますか? - Yahoo!のファンベースと顧客ベースをマッチングして、最高のパーソナライズされた体験を提供します。 - カスタム属性を含め、TD上で作成されたセグメントをYahoo!と同期して、より良いカテゴリ化を提供し、パフォーマンスの高いキャンペーンを構築します。 - Yahoo! DMP広告ターゲティングのために、Yahoo!セグメントにオーディエンスをアップロードまたは削除します。 ## 前提条件 - Treasure Dataの基本知識。 - Yahoo! DataX APIの基本知識 - Yahoo!サポートが提供するMDM ID ## 要件と制限事項 DataX APIは非同期方式で実行されます。コネクタからのすべての操作は、30分から1日以上の範囲で有効になります。ジョブ結果をダウンロードする必要がある場合は、TDサポートに連絡してください。 Yahoo!とプロバイダーの制限: - 1時間あたり100回のAPI呼び出し - 5GBの圧縮ファイルアップロード制限 TDはアップロードセグメントのステータスの監視をサポートしていません。TDログを確認することでステータスを監視できます。 ## MDM IDの取得 MDM IDについては、Yahoo!サポートにお問い合わせください。 ## TD Consoleを使用して接続を作成する ### 新しい接続を作成する Treasure Dataでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、統合にアクセスするための認証を提供します。 1. **TD Console**を開きます。 2. **Integrations Hub** > **Catalog**に移動します。 3. Yahoo!を検索して選択します。 ![](/assets/image2021-9-24_23-23-12.c03dc3ead9c5dfb608294c339f7f9bd74e68b7372632f45ed01b6842116feaea.02d9e1e4.png) 4. Create Authenticationを選択します。 ![](/assets/image2021-7-1_11-48-51.ada35b10940624606d2b0c3cdc5bf2d875e26b9a930588ff43a8f66f081302e0.02d9e1e4.png) 5. MDM IDを入力します。例: OH224。 ![](/assets/image2021-7-1_12-6-10.5abc7b3fee55317175b732f4861ce9b3ba20add4e80d3c9a69ce1f60681c2f23.02d9e1e4.png) 6. 接続の名前を入力します。 7. **Done**を選択します。 ### クエリを定義する ### Yahoo!の統合パラメータ | Parameter | Values | Description | | --- | --- | --- | | Mode | 値は以下:- Partner Match - Audience - Taxonomy - Opt-out | アップロードモードを選択 - Partner Match: Partner Match API経由でユーザーIDとメールをアップロード - Audience: オーディエンスレコードをアップロード - Taxonomy: タクソノミー階層を作成または変更 - Opt-out: タクソノミー階層全体からオーディエンスを削除 | | Taxonomy Mode | 値は以下:- Whole Structure - Append Node - Replace Node - Delete Node | Taxonomyアップロードのモードを選択:- Whole Structure: デフォルトの動作、タクソノミー構造全体をアップロード。**(デフォルト)** - Append Node: 既存の親ノードに単一ノードまたはサブツリーを追加。 - Replace Node: 既存のタクソノミーノードとそのサブツリーを新しいタクソノミーデータで置き換える - Delete Node: サブツリーと共に既存のタクソノミーノードを削除 | | URN Type | 値は選択したモードによって異なります。例の型は:- PXID - GPADVID - email - DXID - ZIP4 - YAHID | 値は選択したモードによって異なります。Uniform Resource Name(**URN**)は、場所に関係なくリソースまたは情報の単位を識別します。**URN**はグローバルに一意で、永続的で、ネットワーク経由でアクセス可能です。Yahoo! urnの構文: `"urn":{string}, "seg":[{"id":{string},"ts":{number},"exp":{number}}]` 例: {"urn" : "99ff2333f3fe7659c38b3674bc927f32", "seg" : [{"id":"OH224"}]} | | Target Segment ID | Audienceモードが選択されている場合。 | ターゲットセグメントのID。これはクエリ結果のオプションフィールドと組み合わせます: seg_exp, seg_ts | | GDPR | Audienceモードが選択されている場合。 | General Data Protection Regulation (EU GDPR) | | Dry Run | Taxonomyが選択されている場合 | 現在のTaxonomyを更新せずに、同期が期待どおりかどうかを確認するために有効化します。 | ### 各モードでサポートされている列 #### Pattern Match: | Column name | Type | Required | Description | | --- | --- | --- | --- | | Email | String | Yes | この列はプレーンテキストのメールまたはSHA256ハッシュメールを受け入れます。プレーンテキストのメールはYahoo!サーバーに送信される前にハッシュ化されます | | PXID | String | Yes | | | Phone | String | No | この列はプレーンテキストまたはSHA256ハッシュ電話を受け入れます。プレーンテキストの電話はYahoo!サーバーに送信される前にハッシュ化されます。 | クエリ例 ```sql select 'abc@tese.com' as email, 'abc' as pxid UNION ALL SELECT 'abc123@tese.com' as email, 'a12bc' as pxid UNION ALL SELECT 'abcadcc@tese.com' as email, 'ab1231c' as pxid select 'abc@tese.com' as email, 'abc' as pxid, '+112345678' as phone UNION ALL SELECT 'abc123@tese.com' as email, 'a12bc' as pxid, '+134567182' as phone UNION ALL SELECT 'abcadcc@tese.com' as email, 'ab1231c' as pxid, '+1456104632' as phone ``` #### Audience: | Column name | Type | Required | Description | | --- | --- | --- | --- | | urn | String | Yes | 値は選択したURN Typeと一致します。プレーンテキストのメールは送信前にハッシュ化されます | | | Any type | | Taxonomyで定義された任意の属性ID。例: Age、Country、G123... クエリで複数の属性IDを選択できます | | seg_ts | Long | | urnに関連付けられたタイムスタンプ | | seg_exp | Long | | urnに関連付けられた有効期限 | | att_ts | Long | | 属性に関連付けられたタイムスタンプ | | att_exp | Long | | 属性に関連付けられた有効期限 | クエリ例 ```sql SELECT urn, CT01, GEN, seg_ts, seg_exp, att_ts, att_exp FROM audiences ``` #### Taxonomy | Column name | Type | Required | Description | | --- | --- | --- | --- | | parent_id | String | Yes | Null値はルートタクソノミーを示します | | id | String | Yes | 必須値で、会社全体で一意である必要があります。 | | name | String | Yes | "id"の人間にわかりやすい同等物 | | type | String | Yes | 現在サポートされている型は: **SEGMENT, ATTRIBUTE** | | description | String | | | | att_type | String | | 属性型。現在可能な値は: ENUM、DATETIME、ZIPCODE、NUMBER、STRING。詳細については、この外部リファレンスを参照してください: [https://developer.yahooinc.com/datax/guide/taxonomy/taxonomy-rep/](https://developer.yahooinc.com/datax/guide/taxonomy/taxonomy-rep/)。 | | att_values | String | | 属性値。ENUMおよびNUMBER型には必須。例: - enumの場合: [ "Loyal", "Occasional", "Rare" ] - 数値の場合: [ "1 | | gdpr_mode | String | | | #### Opt-out | Column name | Type | Required | Description | | --- | --- | --- | --- | | urn | String | Yes | 値は選択したURN Typeと一致します。プレーンテキストのメールは送信前にハッシュ化されます | ### Taxonomy TaxonomyはYahooがパートナーのデータの階層的(またはフラット)な組織とその関連メタデータをインポートするのに役立ちます。タクソノミーのアップロードは、ユーザー/オーディエンスデータのアップロードの前提条件です。 #### 一般的な概念 - TD Root: すべてのアカウントは単一のルート名"Private"(デフォルトID: TD0001)の下に作成されます。すべてのクライアントサブツリーは、このルートの下に追加する必要があります。 - 各アカウント(**MDM ID**で表される)には、単一のルートを持つ1つのツリー(**アカウントツリー**)のみがあります。例: Account A。 - 各ツリーノードのIDは、すべてのアカウントで一意です。 - 各ノードタイプは**SEGMENT**または**ATTRIBUTE**のみを受け入れます クライアントサブツリーを持つTreasure Data Taxonomyツリーの例: ``` + Private (TD0001) ├-- Account A | ├── seg1 name(seg1) | │ ├── seg1.1 name(seg1.1) | │ └── seg1.2 name(seg1.2) | └── root attribute name 100(root attribute 100) | └── att1 name(att1) ├-- Account B ├--- Seg AB ``` コネクタはTaxonomyツリー構造アップロード用の4つのモードをサポートしています: - **Whole Structure** - **Append Node** - **Replace Node** - **Delete Node** **Whole Structure**: これはTaxonomyのデフォルトモードです。ツリー構造全体をアップロードし、新しいノードのみを保持します。現在のアカウントツリーの古いノードは削除され、新しいツリーの新しいノードに置き換えられます。 検証: - アカウントルートノードのID = null(データベースではparent_id = null)、ID列は必須です。 - 親を持たない孤立ノードは許可されていません。 - 各実行で削除できるのはリーフノードのみです。 - アカウントノードが存在しない場合、TDルートまたはPrivate(TD0001)に追加されます。 ``` 1つのルート(parent_id = null)のみが許可されます。 ``` **Append Node** 既存のparentIdノードに単一ノードまたはサブツリーを追加します。会社ツリーが作成されていない場合、入力ルートで新しいツリーが作成され、TDルートの下に追加されます。 検証: - アカウントツリーが存在しない場合、1つの入力ルートを持つ新しいアカウントツリーが作成され、Private(デフォルトID: TD0001)に追加されます。 - アカウントツリーが存在しない場合、クエリ結果で最大1つのルートノードが許可されます。 - アカウントツリーが存在する場合、クエリ結果でルートノードは許可されません。 - 会社ルートがnullでない場合、各ノードの親IDが存在する必要があります。 - 会社ツリーがnullでない場合、Append nodeを使用してはいけません。 例: 現在のアカウントツリー ``` root segment name 200 (root segment 200) ├── SEG Child 6 (seg6) ├── SEG Child 2 (seg2) ├── SEG Child 5 (seg5) │ ├── SEG Child 5.1 (seg5.1) │ └── SEG Child 5.2 (seg5.2) ├── SEG Child 4(seg4) │ ├── SEG Child 4.3 (seg4.3) │ └── SEG Child 4.1 (seg4.1) └── SEG Child 3 (seg3) ├── SEG Child 3.1 (seg3.1) └── SEG Child 3.2 (seg3.2) ``` 入力データ ```sql SELECT parent_id, id, name, type FROM ( VALUES ('TD0008','seg8.1','SEG 8.1','SEGMENT') ) tbl (parent_id,id,name,type); ``` 期待されるツリーは以下のようになります: ``` root segment name 200 (root segment 200) ├── SEG Child 6 (seg6) │ ├── SEG Child 6.1 (seg6.1) │ └── SEG Child 6.2 (seg6.2) ├── SEG Child 2 (seg2) ├── SEG Child 5 (seg5) │ ├── SEG Child 5.1 (seg5.1) │ └── SEG Child 5.2 (seg5.2) ├── SEG Child 4 (seg4) │ ├── SEG Child 4.3 (seg4.3) │ └── SEG Child 4.1 (seg4.1) ├── SEG Child 3 (seg3) │ ├── SEG Child 3.1 (seg3.1) │ └── SEG Child 3.2 (seg3.2) ├── SEG 8 (seg8) │ └── SEG Child 8.1 (seg8.1) └── SEG 7 (seg7) ``` **Replace Node**既存のタクソノミーノードとそのサブツリーを新しいタクソノミーデータで置き換えます。会社ルートまたはTDルートを置き換えることはできません。会社ルートのサブツリーのみを置き換えることができます。 検証: - この操作を行うには、アカウントツリーが存在する必要があります。 - 入力サブツリーのルートは空であってはなりません。 - アカウントルートの置き換えは許可されていません。 - TDルート(Private)の置き換えは許可されていません。 - 入力ツリーのルートノードはアカウントツリーの下にある必要があります。 例 以下のようなアカウントツリーがあります ``` Sample TD Segment(TD0002) ├── Child 1(TD0003) │ └── Child 1.1(TD0007) │ └── Child 1.1.1(TD0008) │ └── SEG 8.1(seg8.1) └── Child 2(TD0004) ├── Child 2.1(TD005) │ └── Child 2.1.1(TD005_1) └── Child 2.2(TD0006) └── Child 2.2.2(TD0006_1) ``` SQLデータからこの階層を構築することを期待します ```sql SELECT parent_id, id, name, type FROM ( VALUES ('','TD0007','Child 1.1','SEGMENT'), ('TD0007','TD0008','Child 1.1.1','SEGMENT'), ('TD0007','TD0009','Child 1.1.2','SEGMENT'), ('TD0007','TD0010','Child 1.1.3','SEGMENT') ) tbl (parent_id,id,name,type); ``` 期待されるツリーは以下のようになります ``` Sample TD Segment(TD0002) ├── Child 1(TD0003) │ └── Child 1.1(TD0007) │ ├── Child 1.1.2(TD0009) │ ├── Child 1.1.1(TD0008) │ └── Child 1.1.3(TD0010) └── Child 2(TD0004) ├── Child 2.1(TD005) │ └── Child 2.1.1(TD005_1) └── Child 2.2(TD0006) └── Child 2.2.2(TD0006_1) ``` **Replace Node**サブツリーと共に既存のタクソノミーノードを削除します。 検証: - ツリールート(アカウントルートまたはTDルート)の削除は許可されていません。 - `ノードはnullであってはならず、アカウントツリーに存在する必要があります。` - `この操作を行うには会社ツリーが存在する必要があります。` 例: 以下のようなアカウントツリーがあります ``` Sample TD Segment(TD0002) ├── Child 1(TD0003) │ └── Child 1.1(TD0007) │ └── Child 1.1.1(TD0008) └── Child 2(TD0004) ├── Child 2.1(TD005) │ └── Child 2.1.1(TD005_1) └── Child 2.2(TD0006) └── Child 2.2.2(TD0006_1) ``` SQLデータからこの階層を構築することを期待します ```sql SELECT parent_id,id,name,type FROM ( VALUES ('','TD005_1','Child 2.1.1','SEGMENT') )tbl (parent_id,id,name,type); ``` 期待されるツリーは以下のようになります ``` Sample TD Segment(TD0002) ├── Child 1(TD0003) │ └── Child 1.1(TD0007) │ └── Child 1.1.1(TD0008) └── Child 2(TD0004) ├── Child 2.1(TD005) └── Child 2.2(TD0006) └── Child 2.2.2(TD0006_1) ``` ### (Optional) Schedule Query Export Jobs You can use Scheduled Jobs with Result Export to periodically write the output result to a target destination that you specify. Treasure Data's scheduler feature supports periodic query execution to achieve high availability. When two specifications provide conflicting schedule specifications, the specification requesting to execute more often is followed while the other schedule specification is ignored. For example, if the cron schedule is `'0 0 1 * 1'`, then the 'day of month' specification and 'day of week' are discordant because the former specification requires it to run every first day of each month at midnight (00:00), while the latter specification requires it to run every Monday at midnight (00:00). The latter specification is followed. #### Scheduling your Job Using TD Console 1. Navigate to **Data Workbench > Queries** 2. Create a new query or select an existing query. 3. Next to **Schedule**, select None. ![](/assets/image2021-1-15_17-28-51.f1b242f6ecc7666a0097fdf37edd1682786ec11ef80eff68c66f091bc405c371.0f87d8d4.png) 4. In the drop-down, select one of the following schedule options: ![](/assets/image2021-1-15_17-29-47.45289a1c99256f125f4d887e501e204ed61f02223fde0927af5f425a89ace0c0.0f87d8d4.png) | Drop-down Value | Description | | --- | --- | | Custom cron... | Review [Custom cron... details](#custom-cron-details). | | @daily (midnight) | Run once a day at midnight (00:00 am) in the specified time zone. | | @hourly (:00) | Run every hour at 00 minutes. | | None | No schedule. | #### Custom cron... Details ![](/assets/image2021-1-15_17-30-23.0f94a8aa5f75ea03e3fec0c25b0640cd59ee48d1804a83701e5f2372deae466c.0f87d8d4.png) | **Cron Value** | **Description** | | --- | --- | | `0 * * * *` | Run once an hour. | | `0 0 * * *` | Run once a day at midnight. | | `0 0 1 * *` | Run once a month at midnight on the morning of the first day of the month. | | "" | Create a job that has no scheduled run time. | ``` * * * * * - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +---------- month (1 - 12) | | +--------------- day of month (1 - 31) | +-------------------- hour (0 - 23) +------------------------- min (0 - 59) ``` The following named entries can be used: - Day of Week: sun, mon, tue, wed, thu, fri, sat. - Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec. A single space is required between each field. The values for each field can be composed of: | Field Value | Example | Example Description | | --- | --- | --- | | A single value, within the limits displayed above for each field. | | | | A wildcard `'*'` to indicate no restriction based on the field. | `'0 0 1 * *'` | Configures the schedule to run at midnight (00:00) on the first day of each month. | | A range `'2-5'`, indicating the range of accepted values for the field. | `'0 0 1-10 * *'` | Configures the schedule to run at midnight (00:00) on the first 10 days of each month. | | A list of comma-separated values `'2,3,4,5'`, indicating the list of accepted values for the field. | `0 0 1,11,21 * *'` | Configures the schedule to run at midnight (00:00) every 1st, 11th, and 21st day of each month. | | A periodicity indicator `'*/5'` to express how often based on the field's valid range of values a schedule is allowed to run. | `'30 */2 1 * *'` | Configures the schedule to run on the 1st of every month, every 2 hours starting at 00:30. `'0 0 */5 * *'` configures the schedule to run at midnight (00:00) every 5 days starting on the 5th of each month. | | A comma-separated list of any of the above except the `'*'` wildcard is also supported `'2,*/5,8-10'`. | `'0 0 5,*/10,25 * *'` | Configures the schedule to run at midnight (00:00) every 5th, 10th, 20th, and 25th day of each month. | 1. (Optional) You can delay the start time of a query by enabling the Delay execution. ### Execute the Query Save the query with a name and run, or just run the query. Upon successful completion of the query, the query result is automatically exported to the specified destination. Scheduled jobs that continuously fail due to configuration errors may be disabled on the system side after several notifications. (Optional) You can delay the start time of a query by enabling the Delay execution. ## Activate a Segment in Audience Studio You can also send segment data to the target platform by creating an activation in the Audience Studio. 1. Navigate to **Audience Studio**. 2. Select a parent segment. 3. Open the target segment, right-mouse click, and then select **Create Activation.** 4. In the **Details** panel, enter an Activation name and configure the activation according to the previous section on Configuration Parameters. 5. Customize the activation output in the **Output Mapping** panel. ![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png) - Attribute Columns - Select **Export All Columns** to export all columns without making any changes. - Select **+ Add Columns** to add specific columns for the export. The Output Column Name pre-populates with the same Source column name. You can update the Output Column Name. Continue to select **+ Add Columns**to add new columns for your activation output. - String Builder - **+ Add string** to create strings for export. Select from the following values: - String: Choose any value; use text to create a custom value. - Timestamp: The date and time of the export. - Segment Id: The segment ID number. - Segment Name: The segment name. - Audience Id: The parent segment number. 1. Set a **Schedule**. ![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png) - Select the values to define your schedule and optionally include email notifications. 1. Select **Create**. If you need to create an activation for a batch journey, review [Creating a Batch Journey Activation](/products/customer-data-platform/journey-orchestration/batch/creating-a-batch-journey-activation). ## (オプション)Workflowでエクスポート結果を設定する Treasure Workflow内で、このデータコネクタを使用してデータをエクスポートすることを指定できます。 詳細は[Using Workflows to Export Data with the TD Toolbelt](https://api-docs.treasuredata.com/en/tools/cli/api/#workflow-commands)を参照してください。 ### Yahoo!設定キー | Name | Type | Required | Description | | --- | --- | --- | --- | | type | String | Yes | verizon_media | | mdm_id | String | Yes | 会社のMDM ID | | upload_mode | String | Yes | PARTNER_MATCH, TAXONOMY, AUDIENCE_UPLOAD, OPT_OUT | | taxonomy_mode | String | | Taxonomyアップロードにのみ適用 | | urn_type | String | Yes | Audienceアップロードにのみ適用 | | partner_match_urn_type | String | Yes | Partner Matchモードにのみ適用 | | opt_out_urn_type | String | Yes | Opt-outモードにのみ適用 | | target_segment_id | String | | このセグメントにオーディエンスをアップロード | | gdpr | Boolean | | デフォルトtrue | | taxonomy_dry_run | Boolean | | Taxonomyアップロードジョブの実行のみを検証(実際のデータを変更せずに)。デフォルトfalse | ### Yahoo!のワークフロー例 ```yaml _export: td: database: td.database +verizon_media_export_task: td>: export_verizon_media.sql database: ${td.database} result_connection: verizon_media result_settings: type: verizon_media upload_mode: audience urn_type: Email ``` ## (オプション)CLIを使用したエクスポート統合 TD Toolbeltが提供するCLIを使用して、クエリ結果をYahoo!にエクスポートすることもできます。 td queryコマンドを使用する場合、--result RESULT_URLオプションでLINE変換サーバーURLを指定します。詳細については、[td query](https://api-docs.treasuredata.com/en/tools/cli/api/#td-query)を参照してください。 オプションの形式はJSONで、一般的な構造は以下のとおりです。 ```json { "type": "verizon_media", "mdm_id": "100", "upload_mode": "taxonomy", "taxonomy_mode": "append_node" } ``` **パラメータ** | Name | Type | Required | Description | | --- | --- | --- | --- | | type | String | Yes | verizon_media | | mdm_id | String | Yes | 会社のMDM ID | | upload_mode | String | Yes | PARTNER_MATCH, TAXONOMY, AUDIENCE_UPLOAD, OPT_OUT | | taxonomy_mode | String | | Taxonomyアップロードにのみ適用。値: - whole_structure - append_node, - replace_node - delete_node | | urn_type | String | Yes | Audienceアップロードにのみ適用 | | partner_match_urn_type | String | Yes | Partner Matchモードにのみ適用 | | opt_out_urn_type | String | Yes | Opt-outモードにのみ適用 | | target_segment_id | String | | このセグメントにオーディエンスをアップロード | | gdpr | Boolean | | デフォルトtrue | | taxonomy_dry_run | Boolean | | Taxonomyアップロードジョブの実行のみを検証(実際のデータを変更せずに)。デフォルトfalse | ## 使用例 ```bash td query \ --result '{ "type": "verizon_media", "upload_mode": "taxonomy", "taxonomy_mode": "append_node", "mdm_id": "100" }' \ -d sample_datasets \ "SELECT * FROM verizon_media_tbl" \ -T presto ```