# Adform Export Integration

このインテグレーションは2種類のファイルをエクスポートします。**taxonomy**エクスポートはAdform DMP内にオーディエンス定義を作成し、**audience**エクスポートはそのオーディエンスにユーザーを追加、または削除します。ユーザーデータをエクスポートする前にAdform DMP側にオーディエンスが存在している必要があるため、新規セットアップでは必ずtaxonomyエクスポートから始めます。

## このインテグレーションでできること

- 各オーディエンス、そのカテゴリ、および有効期間（TTL）を定義したtaxonomyファイルをエクスポートして、Adform DMPにオーディエンスを作成します。
- ハッシュ化メールアドレス、モバイル広告ID、cookie ID、または自社のCRM IDでユーザーを識別し、既存の1つ以上のオーディエンスにユーザーを追加します。
- 特定のオーディエンスから、またはすべてのオーディエンスから一括でユーザーを削除します。たとえばGDPRの削除要求に対応する場合に使用します。


## データ配信の仕組み

Adform Export IntegrationはAdformのAPIを呼び出しません。エクスポートジョブごとにファイルを生成し、Adformが所有してスキャンしているAmazon S3バケットにアップロードします。

1. Adform DMP Account ID、target、ID type、operationをインテグレーションに設定します。
2. Treasure AIは、お使いのTreasure AIアカウントに登録されているAdform DMPアカウントのリストに対してDMP Account IDを検証します。
3. インテグレーションはクエリまたはセグメントの結果からファイルを生成します。taxonomyはカンマ区切りのCSV、audienceデータはTAB区切りかつGZip圧縮されます。
4. インテグレーションは、DMP Account ID、ID type、エクスポート日から導出されたパスでAdformのS3バケットにファイルをアップロードします。
5. Adformは15分ごとにバケットをスキャンします。新しく検出されたファイルが読み込まれて適用され、通常1〜2時間でオーディエンスに反映されます。


配信がファイルベースであるため、Treasure AIのジョブが成功したということは、ファイルがS3に受け付けられたことを意味し、Adformの処理が完了したことを意味しません。オーディエンスのメンバーシップはAdform DMPで確認してください。

### S3パス

配信先のパスはインテグレーションが構築します。設定する必要はありません。

| Target  | パス  |
|  --- | --- |
| Taxonomy | `data-providers/treasure-data/dt=YYYYMMDD/taxonomy/{dmp_account_id}/{file_name}.csv` |
| Audience | `data-providers/treasure-data/dt=YYYYMMDD/{hashed_email|maid|cookie|first_party}/{file_name}.gz` |


## 前提条件

- Treasure AIの基本知識
- 有効なAdform DMPアカウント
- Adform DMP Account ID、およびエクスポート先となる各オーディエンスのOwner ID。いずれもAdformから提供されます。
- Treasure AIに登録済みのAdform DMP Account ID。登録はオンボーディング時に行われます。DMP Account IDを追加するには、カスタマーサクセス担当者またはテクニカルサポートにお問い合わせください。未登録のIDでエクスポートすると`DMP Account ID not authorized for this account`で失敗します。
- `cookie`のID typeを使用する場合は、AdformのUser ID Syncピクセルを自社Webサイトに設置していること。ピクセルの設置はこのインテグレーションの対象範囲外です。


## 要件と制限事項

- ユーザーデータをエクスポートする前に、Adform DMPにオーディエンスが存在している必要があります。先にtaxonomyエクスポートを実行し、Adform DMPでオーディエンスが作成されたことを確認してください。
- クエリの列名は、このページに記載された名称と完全に一致させてください。列名の大文字・小文字は区別されず、前後の空白は無視されますが、大文字・小文字の違いだけで区別される2つの列があるとジョブは失敗します。
- 列の値にカンマ、TAB、二重引用符、改行を含めることはできません。出力フォーマットは位置ベースでエスケープ処理を行わないため、これらの文字はレコードを壊します。
- Owner IDの値に使用できる文字は`a-z`、`A-Z`、`0-9`、`.`、`_`、`-`のみです。
- 圧縮後の出力が100 MBに達すると、ファイルは自動的に分割されます。Adform側の上限は1ファイル4 GBです。
- Adformはアップロードされたファイルを14日間、最大900ファイルまで保持します。Adformの処理速度を超える頻度でアップロードすることが、ファイル数上限に達する主な原因です。
- 2週間アップロードがないと、Adformはバケットを無効化します。バケットが有効な状態を保てる頻度でエクスポートをスケジュールしてください。
- audienceファイルのGZip圧縮、TAB区切り、ヘッダー行なしの仕様は固定です。これらはAdformの要件であり、変更できません。


## 新しい接続の作成

Treasure コンソールで、クエリを実行する前にデータ接続を作成して設定します。このインテグレーションにOAuthや認証情報の入力手順はありません。S3の認証情報はTreasure AIが内部で保持しており、入力する値はAdform DMP Account IDのみです。

1. **Treasure コンソール**を開きます。
2. **Integrations Hub > Catalog**に移動します。
3. **Adform Export**を検索して選択します。


![](/assets/new_authen.bb05088df93ea7d7d77e9043e9c01ccd7ffae589b2a84cb4532d9d299aaaefb0.c42be0a5.webp)

1. **Create Authentication**を選択し、Adform DMP Account IDを入力します。
2. **Continue**を選択し、認証情報の名前を入力して**Done**を選択します。


![](/assets/new_authen_config.72854cd2a0aeb6cf02c09a62dd82223f46ae3c1ff45e9339b9f8a26e0865907d.c42be0a5.webp)

### 認証フィールド

| Field Name  | Type  | 説明  |
|  --- | --- | --- |
| **Adform DMP Account ID** (Required) | string | データを受け取るAdform DMPアカウント。お使いのTreasure AIアカウントに登録されているDMP Account IDのいずれかである必要があります。 |


## エクスポート用のクエリ結果の設定

Treasure コンソールでは複数の方法でデータをエクスポートできます。Data Workbenchからエクスポートする場合は次のとおりです。

1. **Data Workbench > Queries**に移動します。
2. **New Query**を選択し、[クエリの定義](#%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E5%AE%9A%E7%BE%A9)の説明に従ってクエリを定義します。
3. **Export Results**を選択します。
4. 既存の認証情報を選択するか、前のセクションの手順に従って新規作成します。
5. [設定パラメータ](#%E8%A8%AD%E5%AE%9A%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF)に記載されたパラメータを設定し、**Done**を選択します。


![Taxonomyの設定](/assets/taxonomy.ac06e0ab5cead864e4979bd8941761adab7a8fddc1f91fbf5d112b4d18ca32b2.c42be0a5.webp)

![Audienceの設定](/assets/audience.1213768aca362bb8ade1eb0a8683e8398c8b3a0a209a0f20a20ba36bd6bc0a28.c42be0a5.webp)

## クエリの定義

クエリは、設定したtargetとID typeで必要となる列を返す必要があります。それ以外の列は無視されます。必須列がnullまたは空の場合、そのレコードは無効となります。**Skip Invalid Records**が有効な場合はレコードがスキップされ、無効な場合はジョブが失敗します。

### Audienceの列

audienceエクスポートには、1つのID列と少なくとも1つのOwner ID列が必要です。

| 列  | 必須  | Data Type  | 説明  |
|  --- | --- | --- | --- |
| `email` / `maid` / `cookie_id` / `crm_id` | はい | string | ユーザー識別子。どの列が必須になるかはID typeによって決まります。次の表を参照してください。 |
| `owner_id` | はい | string | ユーザーが所属するオーディエンスのAdform Owner ID。`remove` operationでは必須です。`add`でも、番号付きの列を指定しない場合は必須です。 |
| `owner_id1`、`owner_id2`、… `owner_idN` | いいえ | string | 同一ユーザーに対する追加のオーディエンス。`add` operationでのみ使用できます。 |


### ID typeごとのID列

| ID Type  | 必須の列  | フォーマットと検証  | 値の例  |
|  --- | --- | --- | --- |
| `hashed_email` | `email` | 64文字の小文字16進数のSHA-256ハッシュはそのまま使用されます。それ以外の値は生のメールアドレスとして扱われ、前後の空白が除去されたうえでインテグレーションがSHA-256でハッシュ化します。ハッシュ化の前に小文字化は行われません。 | `taro.yamada@example.com` または `b6ebd83922edfa96b0ff9166a958badcc230dd68d2315ddfea22f20eaf05994a` |
| `maid` | `maid` | 空でない文字列。モバイル広告ID（IDFAまたはAAID）です。 | `550e8400-e29b-41d4-a716-446655440000` |
| `cookie` | `cookie_id` | 空でない文字列。Treasure AIが生成したcookie ID（`td_client_id`、`td_ssc_id`、`td_global_id`）です。 | `951741598523654` |
| `first_party` | `crm_id` | 空でない文字列。自社のCRM識別子です。 | `USR-00012345` |


生のメールアドレスは自動的にハッシュ化されるため、クエリ側でハッシュ化する必要はありません。ご自身でハッシュ化した場合は、その値がそのまま送信されます。

### オーディエンスへのユーザーの追加

**Operation**を`add`に設定すると、空でないOwner ID列のそれぞれがそのユーザーのオーディエンスとして扱われます。複数の列に重複して指定された値は、列の並び順で1回だけ送信されます。Owner ID列がすべて空のレコードは無効です。

クエリ出力の例:

| email  | owner_id  | owner_id1  | owner_id2  |
|  --- | --- | --- | --- |
| taro.yamada@example.com | 14471 | 14445 | 14448 |
| hanako.suzuki@example.com | 14485 |  |  |


### オーディエンスからのユーザーの削除

**Operation**を`remove`に設定した場合、クエリは`owner_id`列を1つだけ返す必要があります。各レコードは1つのオーディエンス、またはすべてのオーディエンスからユーザーを削除するため、番号付きの`owner_id1` … `owner_idN`列は受け付けられません。

| `owner_id`の値  | 生成される値  | 意味  |
|  --- | --- | --- |
| 数値のOwner ID（例: `14471`） | `sg=--14471` | そのオーディエンスからユーザーを削除します。 |
| `all` | `--DeleteAll` | DMPアカウント内のすべてのオーディエンスからユーザーを削除します。 |


クエリ出力の例:

| email  | owner_id  |
|  --- | --- |
| taro.yamada@example.com | 14471 |
| ken.tanaka@example.com | all |


### Taxonomyの列

taxonomyエクスポートはオーディエンスそのものを定義します。`ref_id`には、後続のaudienceデータが参照するOwner IDを指定します。ここで使用した値はaudienceエクスポートの`owner_id`の値になるため、保管しておいてください。

| 列  | 必須  | Data Type  | デフォルト  | 検証  | 説明  |
|  --- | --- | --- | --- | --- | --- |
| `ref_id` | はい | string | — | 空でないこと。使用できる文字: `a-z`、`A-Z`、`0-9`、`.`、`_`、`-` | オーディエンスのOwner ID。 |
| `name` | はい | string | — | 空でないこと | Adform DMPに表示されるオーディエンス名。 |
| `category` | はい | string | — | 空でないこと | 親カテゴリのパス。階層は`/`で区切ります（例: `Demography/Gender`）。カテゴリが存在しない場合はAdformが作成します。 |
| `ttl` | いいえ | long | `21` | 正の整数 | 有効期間（日数）。 |
| `frequency` | いいえ | long | `1` | 正の整数 | オーディエンスのfrequency設定。 |
| `fee` | いいえ | long または double | `0` | 0以上 | オーディエンスの価格。 |
| `status` | いいえ | string | `Active` | `Active` または `Inactive` | オーディエンスが有効かどうか。大文字・小文字は区別されません。 |
| `data_type` | いいえ | long | `1` | `1`、`2`、`3` | `1`は自社で収集したファーストパーティデータ、`2`は直接のパートナーと共有するセカンドパーティデータ、`3`はブランデッドデータプロバイダーとして販売するサードパーティデータを表します。 |
| `iab_taxonomy_id` | いいえ | string | — | — | オーディエンスに割り当てるIABタクソノミーのカテゴリID。セミコロン区切りで指定します（例: `1;15;16`）。 |


省略可能な列が存在しない、または空の場合はデフォルト値が使用されます。上記の5つのデフォルト値により、最小構成のtaxonomyクエリでは`ref_id`、`name`、`category`のみを返せば十分です。

クエリ出力の例:

| ref_id | name | category | ttl | frequency | fee | status | data_type | iab_taxonomy_id |
|  --- | --- | --- | --- | --- | --- | --- | --- | --- |
| G1-01 | Male | Demography/Gender | 21 | 1 | 1 | Active | 1 | 1;15;16 |
| G1-02 | Female | Demography/Gender | 21 | 1 | 2 | Active | 2 | 1;15;17 |
| G12-01 | 18-24 | Demography/Age | 21 | 1 | 0.5 | Active | 3 | 1;2;4 |


## 設定パラメータ

| Parameter Name  | Type  | デフォルト  | 説明  |
|  --- | --- | --- | --- |
| **Target** (Optional) | string | `audience` | エクスポートで作成する対象。`taxonomy`はAdform DMPにオーディエンスを定義し、`audience`は既存のオーディエンスにユーザーを追加または削除します。 |
| **ID Type** (Optional) | string | `hashed_email` | ユーザーのマッチングに使用する識別子（`hashed_email`、`maid`、`cookie`、`first_party`）。必須のID列とS3のフォルダが決まります。Targetが`taxonomy`の場合は無視されます。 |
| **Operation** (Optional) | string | `add` | `add`はOwner ID列で指定されたオーディエンスにユーザーを追加し、`remove`は削除します。Targetが`taxonomy`の場合は無視されます。 |
| **Skip Invalid Records** (Optional) | boolean | `true` | 有効にすると、無効なレコードは件数が集計されてスキップされ、最初の100件のエラーメッセージがジョブログに出力されます。無効にすると、最初の無効なレコードでジョブが失敗し、アップロードは行われません。 |


## 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 出力をカスタマイズします。


![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png)

- 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** を設定します。


![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png)

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


1. **Create** を選択します。


batch journey の activation を作成する必要がある場合は、[Creating a Batch Journey Activation](/products/customer-data-platform/journey-orchestration/batch/creating-a-batch-journey-activation) を参照してください。

### (オプション) 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 を選択します。
![](/assets/image2021-1-15_17-28-51.f1b242f6ecc7666a0097fdf37edd1682786ec11ef80eff68c66f091bc405c371.0f87d8d4.png)
4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:
![](/assets/image2021-1-15_17-29-47.45289a1c99256f125f4d887e501e204ed61f02223fde0927af5f425a89ace0c0.0f87d8d4.png)
| ドロップダウン値 | 説明 |
|  --- | --- |
| Custom cron... | [Custom cron... の詳細](#custom-cron-details)を参照してください。 |
| @daily (midnight) | 指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。 |
| @hourly (:00) | 毎時 00 分に実行します。 |
| None | スケジュールなし。 |


#### Custom cron... の詳細

![](/assets/image2021-1-15_17-30-23.0f94a8aa5f75ea03e3fec0c25b0640cd59ee48d1804a83701e5f2372deae466c.0f87d8d4.png)

| **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.


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

div
| フィールド値  | 例  | 例の説明  |
|  --- | --- | --- |
| 各フィールドに対して上記で表示された制限内の単一の値。 |  |  |
| フィールドに基づく制限がないことを示すワイルドカード
`'*'`。 | `'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 を有効にすることで、クエリの開始時刻を遅延させることができます。

## （オプション）Treasure ワークフローを使用したエクスポートインテグレーション

Treasure ワークフロー内では、このインテグレーションを使用してデータをエクスポートすることを指定できます。詳細については、[Exporting Data with Parameters](/products/customer-data-platform/data-workbench/workflows/exporting-data-with-parameters)を参照してください。

taxonomyエクスポートでオーディエンスを作成します。

```yaml
_export:
  td:
    database: adform_db

+adform_taxonomy_task:
  td>: taxonomy.sql
  database: ${td.database}
  result_connection: new_created_adform
  result_settings:
    type: adform
    dmp_account_id: "12345"
    target: taxonomy
```

作成したオーディエンスにユーザーを追加します。

```yaml
_export:
  td:
    database: adform_db

+adform_audience_add_task:
  td>: audience.sql
  database: ${td.database}
  result_connection: new_created_adform
  result_settings:
    type: adform
    dmp_account_id: "12345"
    target: audience
    id_type: hashed_email
    operation: add
```

特定のオーディエンス、またはすべてのオーディエンスからユーザーを削除します。

```yaml
_export:
  td:
    database: adform_db

+adform_audience_remove_task:
  td>: removal.sql
  database: ${td.database}
  result_connection: new_created_adform
  result_settings:
    type: adform
    dmp_account_id: "12345"
    target: audience
    id_type: hashed_email
    operation: remove
```

### パラメータ

| Name  | 説明  | 値  | デフォルト  | 必須  |
|  --- | --- | --- | --- | --- |
| `type` | コネクタタイプ | `adform` | N/A | はい |
| `dmp_account_id` | データを受け取るAdform DMP Account ID | N/A | N/A | はい |
| `target` | エクスポートで作成する対象 | `taxonomy`、`audience` | `audience` | いいえ |
| `id_type` | ユーザーのマッチングに使用する識別子 | `hashed_email`、`maid`、`cookie`、`first_party` | `hashed_email` | いいえ |
| `operation` | オーディエンスにユーザーを追加するか削除するか | `add`、`remove` | `add` | いいえ |
| `skip_invalid_records` | ジョブを失敗させる代わりに無効なレコードをスキップするか | `true`、`false` | `true` | いいえ |


## トラブルシューティング

設定エラーが発生した場合、ジョブは即座に失敗します。レコードのエラーは**Skip Invalid Records**の設定に応じてスキップされるか、ジョブの失敗となります。スキップされた場合は、スキップされた合計件数と最初の100件のメッセージがジョブログに出力されます。

| メッセージ  | 原因  | 対処  |
|  --- | --- | --- |
| `DMP Account ID not authorized for this account` | DMP Account IDがお使いのTreasure AIアカウントに登録されていません。 | IDに誤りがないか確認してください。正しい場合は、カスタマーサクセス担当者に連絡して登録を依頼してください。 |
| `dmp_account_id cannot be null or empty.` | 認証情報にDMP Account IDが設定されていません。 | 認証情報を編集し、Adform DMP Account IDを入力してください。 |
| `Schema invalid. Duplicate columns: …` | 大文字・小文字または前後の空白の違いだけで区別される2つの列がクエリから返されています。 | いずれかの列にクエリでエイリアスを付けてください。 |
| `Required column 'email' not found for ID type 'hashed_email'` | 設定したID typeで必要なID列がクエリから返されていません。 | メッセージに示された列を追加するか、ID Typeを変更してください。 |
| `Required column 'owner_id' not found` | audienceエクスポートでOwner ID列が返されていません。 | `owner_id`列を追加してください。 |
| `Columns [owner_id1] are not accepted for the remove operation, only a single 'owner_id' column is allowed` | removeエクスポートで番号付きのOwner ID列が返されています。 | `owner_id`のみを返し、削除するオーディエンスごとに1レコードとしてください。 |
| `Column 'ref_id' must not be empty` | そのレコードで必須列がnull、空、または空白のみになっています。 | クエリで該当行を除外するか、値を設定してください。 |
| `Column 'owner_id' value '…' contains unsupported symbols, allowed symbols are a-z, A-Z, 0-9, '.', '_', '-'` | Owner IDにサポートされていない文字が含まれています。 | ソースデータ側で値を修正してください。 |
| `Column 'ttl' must be of type long, but is 'string'` | 列のデータ型が誤っています。 | クエリで列をキャストしてください。データ型は[クエリの定義](#%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E5%AE%9A%E7%BE%A9)を参照してください。 |


ジョブは成功しているのにAdform DMPでオーディエンスが空のままの場合は、次の項目を順に確認してください。

- オーディエンスが存在すること。taxonomyエクスポートで作成されていないオーディエンス向けのデータは有効化されません。
- 2時間が経過していないこと。Adformは15分ごとにバケットをスキャンし、1〜2時間でオーディエンスに反映します。
- `owner_id`の値がtaxonomyエクスポートの`ref_id`の値と一致していること。
- 直近2週間以内にエクスポートが実行されていること。Adformは使用されていないバケットを無効化し、無効化されたバケットへのアップロードはDMPに届きません。


## その他

- Result Exportと[スケジュールジョブ](/products/customer-data-platform/job-management/scheduling-jobs-using-td-console)を組み合わせて、定期的にAdformへデータをアップロードできます。