# Onetrust インポート連携

世界中でますます多くのデータ保護法が制定される中、コンプライアンスの確保は優先事項となっています。OneTrustは、プライバシー管理とマーケティングコンプライアンスを提供する企業です。このサービスは、GDPRなどのグローバルな規制に準拠するために組織によって利用されています。

このOneTrustインポート連携は、顧客の同意データを収集してTreasure Dataにロードできるインポート連携を提供します。Treasure Dataプラットフォーム上でOneTrustデータにアクセスできることで、マーケティングチームがデータを最適に活用できるようになります。

## 前提条件

- Treasure Dataの基礎知識
- OneTrustの基礎知識
- データを制限するための単一のコレクションポイントのGUID（提供されない場合は、すべてのコレクションポイントから取得されます）


## APIキーの取得

1. [https://app.onetrust.com/integrations/api-keys](https://app.onetrust.com/integrations/api-keys) にアクセスします。
2. 必要に応じてOneTrustアプリケーションにサインオンします。
3. **Add New** を選択します。
![](/assets/image-20200930-061815.c53f036e36130a0a7e2c360d76560b778712ac0880b88b1cdcaa927756594700.1a9c01a1.png)
4. 接続名として使用する名前を入力します。
5. **Install** を選択します。


## コレクションポイントGUIDの取得

1. [https://app.onetrust.com/consent/collection-points](https://app.onetrust.com/consent/collection-points) にアクセスします。
コレクションポイント画面が表示されます。
![](/assets/image-20201009-001408.5073acf5069945ba884a13e7c84ecc6cc00031a3691eac099dd0348e0f8d1292.1a9c01a1.png)
2. 対応するコレクションポイントを選択すると、GUIDがURLに表示されます。例：
![](/assets/image-20201009-001534.412d4e3f8d017c7dacba82e12cc7c0f613655dff3786d5113662cda6952d3326.1a9c01a1.png)


## OAuth アクセストークンの取得

クライアントIDとシークレットを保存するためのOneTrustトークンを作成します。
これは短期間有効なトークンです。

1. [https://app.onetrust.com/settings/client-credentials/list](https://app.onetrust.com/settings/client-credentials/list) にアクセスします。
2. **Add** を選択します。
![](/assets/image-20200930-062051.3d2e97b5f72ce0b6c8a832877d4d1d47a913eb211ce45214def2950e238129b5.1a9c01a1.png)
3. トークンの名前と説明を入力します。
4. 適切な **Access Token Lifetime** を選択します。デフォルトの有効期間は1時間です。
![](/assets/image-20201007-163501.9e9203cad027c81f71bda8022fcfde213fa60367f43cb088f6891bbc7dce5b98.1a9c01a1.png)
5. [https://app.onetrust.com/settings/client-credentials/list](https://app.onetrust.com/settings/client-credentials/list) にアクセスします。
6. 認証情報を選択します。
7. **Generate Token** を選択します。
![](/assets/image-20201007-163605.b299e5cda4872485c67a620c34f07ceb259b8d87eb0daf2f3a4eecc34e474c1a.1a9c01a1.png)


## Treasure コンソールを使用した接続の作成

### 新しい接続の作成

データ接続を構成する際、連携にアクセスするための認証を提供します。Treasure Dataでは、認証を構成し、ソース情報を指定します。

1. Treasure コンソールを開きます。
2. Integrations Hub > Catalogに移動します。
3. OneTrustを検索して選択します。
![](/assets/image-20200930-035432.52223b020cbfad0122a72e473007058025e579fd65bf1a5e252dc4c3ecde712c.1a9c01a1.png)
4. OneTrustアプリケーションで作成したアクセストークンの名前を入力します。
5. Continueを選択します。
6. 接続の名前を入力します。
7. **Done** を選択します。


### OneTrustアカウントデータのTreasure Dataへの転送

認証済み接続を作成すると、自動的にAuthenticationsに移動します。

1. 作成した接続を検索します。
2. **New Source** を選択します。
3. データ転送の名前を入力します。
![](/assets/image-20201007-164656.14d9bbe63434c2b5c8f4cf85deb3eb3558b104e3b700565f7fdc0a4456ab160f.1a9c01a1.png)
4. **Next** を選択します。
Source Tableダイアログが開きます。
![](/assets/screenshot-2025-04-02-at-21.54.18.52cd8f0eb32e7e29268a45767952f5d407b1b632380a9b1a57aaf7c6806e1f54.1a9c01a1.png)
5. **Next** を選択します。
Data Settingsダイアログが開きます。
![](/assets/onetrust-import-integration-2024-02-09-2.41d7dab48769d91a50da4546496f97fe4d23a6372ded4f6e725105c3b2046394.1a9c01a1.png)
6. 以下のパラメータを編集します：


| パラメータ  | 説明  |
|  --- | --- |
| **Data Type** | - **Data Subject Profile**：データサブジェクトプロファイルデータを取得します。
- **Collection Point**：コレクションポイントデータを取得します。
- **Data Subject Profile (API V4)**：OneTrust API V4によってデータサブジェクトプロファイルを取得します。
- **Link Token (API V4)**：OneTrust API V4によってリンクトークンを取得します。
- **Purpose (API V4)**：OneTrust API V4によって目的を取得します。

 |
| **Collection Point GUID**（オプション） | データを制限するための単一のコレクションポイントのGUID。提供されない場合は、すべてのコレクションポイントから取得されます。 |
| **Incremental Loading** | 新しい**Start Time**の自動計算による増分レポートの読み込みを有効にします。例えば、**Start Time** = `2014-10-02T15:01:23Z` から `2014-10-03T15:01:23Z` で増分読み込みを開始した場合、次のジョブ実行時の新しい**Start Time**は `2014-10-03T15:01:23` になります。 |
| **Start Time**（Incremental Loading選択時に必須。すべてのAPI V4データタイプで必須） | UI設定の場合、対応ブラウザから日付と時刻を選択するか、ブラウザが期待する形式で日付を入力できます。例えば、Chromeでは年、月、日、時、分を選択するカレンダーが表示されます。Safariでは`2020-10-25T00:00`のようなテキストを入力する必要があります。CLI設定の場合、RFC3339 UTC "Zulu"形式のタイムスタンプ（ナノ秒まで正確）が必要です。例：`"2014-10-02T15:01:23Z"` |
| **Incremental By Modifications of** | - **Data Subject**：データサブジェクトの最終更新日による増分
- **Consent Information**：同意情報の最終同意日による増分

 |
| **End Time**（Incremental Loading選択時に必須。すべてのAPI V4データタイプで必須） | UI設定の場合、対応ブラウザから日付と時刻を選択するか、ブラウザが期待する形式で日付を入力できます。例えば、Chromeでは年、月、日、時、分を選択するカレンダーが表示されます。Safariでは`2020-10-25T00:00`のようなテキストを入力する必要があります。CLI設定の場合、RFC3339 UTC "Zulu"形式のタイムスタンプ（ナノ秒まで正確）が必要です。例：`"2014-10-02T15:01:23Z"` |
| **Properties**（オプション） | **Data Subject Profile**データタイプを取得する際に`properties`クエリパラメータを追加するためのカンマ区切り設定。データタイプで**Data Subject Profile**を選択すると表示されます。注意事項：- すべてのクエリにproperties=ignoreCountを含めることが重要です。ignoreCountを含めないと、パフォーマンスが大幅に低下します。カウントが必要な場合は、最初のクエリでのみ含め、後続のページ呼び出しには含めないことをお勧めします。
- propertiesクエリパラメータで渡される値は、このAPIのレスポンスを変更できます。大規模なデータセットで高速なレスポンスを得るには、次のいずれかの値を渡します：linkTokens、ignoreCount、ignoreTopics、ignoreCustomPreferences。
- データサブジェクトレコードの複数ページを処理する際のパフォーマンス向上のため、このAPIのレスポンスで返されるrequestContinuationパラメータを次のAPIリクエストに渡してページネーションすることを強くお勧めします。詳細については、Understanding & Implementing Paginationを参照してください。
- 推奨パラメータ：ignoreCount、requestContinuation 参考：[Get List of Data Subjects get](https://developer.onetrust.com/onetrust/reference/getdatasubjectprofileusingget)

 |
| **Request Continues Paging**（オプション）
-- チェックした場合、リクエストの継続トークンによってページ分割されたデータを取得するための取り込みプロセスが実行されます。このオプションは、データ量が大きい場合に便利です。 |


### データ設定

1. **Next**を選択します。
データ設定ページが開きます。
2. ダイアログのこのページはスキップします。


### Data Preview

インポートを実行する前に、Generate Preview を選択してデータの[プレビュー](/products/customer-data-platform/integration-hub/batch/import/previewing-your-source-data)を表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。

1. **Next** を選択します。Data Preview ページが開きます。
2. データをプレビューする場合は、**Generate Preview** を選択します。
3. データを確認します。


### Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

1. **Next** を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。
2. **Database** を選択 > **Select an existing** または **Create New Database** を選択します。
3. オプションで、database 名を入力します。
4. **Table** を選択 > **Select an existing** または **Create New Table** を選択します。
5. オプションで、table 名を入力します。
6. データをインポートする方法を選択します。
  - **Append** (デフォルト) - データインポートの結果は table に追加されます。
table が存在しない場合は作成されます。
  - **Always Replace** - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
  - **Replace on New Data** - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
7. **Timestamp-based Partition Key** 列を選択します。
デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。
8. データストレージの **Timezone** を選択します。
9. **Schedule** の下で、このクエリを実行するタイミングと頻度を選択できます。


#### 一度だけ実行

1. **Off** を選択します。
2. **Scheduling Timezone** を選択します。
3. **Create & Run Now** を選択します。


#### 定期的に繰り返す

1. **On** を選択します。
2. **Schedule** を選択します。UI では、*@hourly*、*@daily*、*@monthly*、またはカスタム *cron* の 4 つのオプションが提供されます。
3. **Delay Transfer** を選択して、実行時間の遅延を追加することもできます。
4. **Scheduling Timezone** を選択します。
5. **Create & Run Now** を選択します。


転送が実行された後、**Data Workbench** > **Databases** で転送の結果を確認できます。

## CLI（Toolbelt）を使用したOneTrustからのインポート

統合を設定する前に、最新バージョンの[TD Toolbelt](https://toolbelt.treasuredata.com/)をインストールしてください。

### ロードファイルの準備


```yaml
in:
  type: onetrust
  base_url: ***************
  auth_method: oauth
  access_token: ***************
  data_type: data_subject_profile
  incremental: false
  start_time: 2025-01-30T00:49:04Z
  end_time: 2025-02-28T17:00:00.000Z
  thread_count: 5
out:
  mode: replace
```

この例は、データサブジェクトプロファイルオブジェクトのリストを取得します。start_timeは、データの取得を開始する日付を指定します。この場合、インポートは2025年1月30日の00:49からデータを取得し始めます。

**パラメータリファレンス**

| 名前  | 説明  | 値  | デフォルト値  | 必須  |
|  --- | --- | --- | --- | --- |
| type | インポートのソース。 | "onetrust" |  | Yes |
| base_url | OnetrustサーバーのベースURL。 | 文字列 | "app.onetrust.com" | Yes |
| auth_method | 認証方法「oauth」または「api_key」 | 文字列 | "oauth" | Yes |
| access_token | `oauth`認証モードの場合に必要なOAuthアクセストークン。 | 文字列 |  | auth_methodが「oauth」の場合Yes |
| api_key | `api_key`認証モードの場合に必要なAPIキー。 | 文字列 |  | auth_medthod が「api_key」の場合Yes |
| data_type | Onetrustから取得したいデータタイプ。- **Data Subject Profile**。データサブジェクトプロファイルデータを取得します。
- **Collection Point**。コレクションポイントデータを取得します。
- **Data Subject Profile (API V4)**。API V4からデータサブジェクトプロファイルデータを取得します。
- **Link Token (API V4)**。API V4からリンクトークンデータを取得します。
- **Purpose (API V4)**。API V4から目的データを取得します。

 | 文字列。サポートされているdata_type:- data_subject_profile
- collection_point
- data_subject_profile_api_v4
- link_token_api_v4
- purpose_api_v4

 |  | Yes |
| collection_point_guid(オプション) | データを制限するための単一のコレクションポイントのGUID。指定されていない場合は、すべてのコレクションポイントから取得します。データタイプが**Data Subject Profile**および**Purpose (API V4)**の場合に表示されます。 | 文字列 |  | No |
| incremental | 新しい**開始時刻**を自動計算して、増分レポートの読み込みを有効にします。例えば、**開始時刻**が`2014-10-02T15:01:23Z`で**終了時刻**が`2014-10-03T15:01:23Z`の増分読み込みを開始すると、次のジョブ実行時の新しい**開始時刻**は`2014-10-03T15:01:23`になります。 | Boolean | False | Yes |
| start_time
 | UI設定の場合、サポートされているブラウザから日付と時刻を選択するか、ブラウザが期待する日時形式に適した日付を入力できます。例えば、Chromeでは年、月、日、時、分を選択できるカレンダーが表示され、Safariでは`2020-10-25T00:00`のようなテキストを入力する必要があります。
CLI設定の場合、RFC3339 UTC「Zulu」形式のタイムスタンプが必要です。ナノ秒まで正確に記述します。例: `"2014-10-02T15:01:23Z"`
 | タイムスタンプ
 |  | 増分ロードを選択した場合Yes。
すべての**API V1**データタイプ（data_subject_apiおよびcollection_point）の場合No。
すべての**API V4**データタイプ（data_subject_profile_v4、link_token_api_v4、purpose_api_v4）の場合Yes。
 |
| incremental_type | Onetrustからデータを取得する時刻タイプを選択します。 | 文字列- **data_subject_profile**。データサブジェクトの最終更新日時による増分。

 | **collection_point**。同意情報の最終同意日による増分。 | "data_subject_profile" | **data_subject_profile** Data Typeで増分読み込みを選択した場合はYes。 |
| data_subject_properties(オプション)
 | **Data Subject Profile** Data Typeを取得する際に`properties`クエリパラメータを追加するためのカンマ区切り設定。
Data Type **Data Subject Profile**を選択した場合に表示されます。
 | String
 |  | No
 |
| end_time
 | UI設定の場合、サポートされているブラウザから日付と時刻を選択するか、ブラウザの日時形式に適した日付を入力できます。たとえば、Chromeでは年、月、日、時、分を選択するカレンダーが表示されます。Safariでは`2020-10-25T00:00`のようなテキストを入力する必要があります。
CLI設定の場合、RFC3339 UTC "Zulu"形式のタイムスタンプが必要で、ナノ秒まで正確である必要があります。例：`"2014-10-02T15:01:23Z"`。
 | TimeStamp
 |  | すべての**API V1** Data Type（data_subject_apiおよびcollection_point）ではNo。
すべての**API V4** Data Type（data_subject_profile_v4、link_token_api_v4、およびpurpose_api_v4）ではYes。
 |
| request_continues_paging | trueの場合、取り込みプロセスはリクエスト継続トークンによってページ分割されたデータを取得するために実行されます。このオプションは、データ量が大きい場合に便利です。 | Boolean | false | No |
| ingest_duration_minutes | targetがdata_subject_profileでrequest_continues_pagingがtrueの場合の取り込み期間の時間範囲を設定します | Integer | 1440 | No |


データをプレビューするには、
`td connector:preview`
コマンドを使用します。


```bash
td connector:preview load.yml
```

### ロードジョブの実行

データのサイズによっては、数時間かかる場合があります。データを保存するTreasure Dataのデータベースとテーブルを必ず指定してください。Treasure Dataのストレージは時間でパーティション化されているため、--time-columnオプションも指定することを推奨します（[データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)を参照）。このオプションが指定されていない場合、データコネクターは最初のlong型またはtimestamp型の列をパーティショニング時間として選択します。--time-columnで指定する列の型は、long型またはtimestamp型のいずれかである必要があります。

データに時間列がない場合は、*add_time*フィルターオプションを使用して時間列を追加できます。詳細については、[add_timeフィルター関数](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)のドキュメントを参照してください。


```bash
$ td connector:issue load.yml --database td_sample_db --table td_sample_table \--time-column created_at
```

connector:issueコマンドは、すでにデータベース（td_sample_db）とテーブル（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 created_at --auto-create-table
```

データコネクターはサーバー側でレコードをソートしません。時間ベースのパーティショニングを効果的に使用するには、事前にファイル内のレコードをソートしてください。

timeというフィールドがある場合は、--time-columnオプションを指定する必要はありません。


```
$ td connector:issue load.yml --database td_sample_db --table td_sample_table
```

### インポートモード

load.ymlファイルのout:セクションでファイルインポートモードを指定します。out:セクションは、データがTreasure Dataテーブルにどのようにインポートされるかを制御します。たとえば、既存のテーブルにデータを追加するか、データを置き換えるかを選択できます。

| **モード** | **説明** | **例** |
|  --- | --- | --- |
| Append | レコードがターゲットテーブルに追加されます。 | in:    ...  out:    mode: append |
| Always   Replace | ターゲットテーブルのデータを置き換えます。ターゲットテーブルに対して行われた手動のスキーマ変更はそのまま残ります。 | in:    ...  out:    mode: replace |
| Replace on new data | インポートする新しいデータがある場合にのみ、ターゲットテーブルのデータを置き換えます。 | in:    ...  out:    mode: replace_on_new_data |


### 実行のスケジューリング

増分ファイルインポートのために、定期的なデータコネクターの実行をスケジュールできます。Treasure Dataスケジューラーは、高可用性を確保するように最適化されています。

スケジュールされたインポートの場合、指定されたプレフィックスに一致し、次のいずれかの条件を満たすすべてのファイルをインポートできます：

- use_modified_timeが無効になっている場合、最後のパスが次回の実行のために保存されます。2回目以降の実行では、統合はアルファベット順で最後のパスより後のファイルのみをインポートします。
- それ以外の場合、ジョブが実行された時刻が次回の実行のために保存されます。2回目以降の実行では、コネクターはその実行時刻以降にアルファベット順で変更されたファイルのみをインポートします。


### TD Toolbeltを使用したスケジュールの作成

td connector:createコマンドを使用して新しいスケジュールを作成できます。


```
$ td connector:create daily_import "10 0 * * *" \td_sample_db td_sample_table load.yml
```

Treasure Dataのストレージは時間でパーティション化されているため、--time-columnオプションも指定することを推奨します（[データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)を参照）。


```
$ td connector:create daily_import "10 0 * * *" \td_sample_db td_sample_table load.yml \--time-column created_at
```

cronパラメータは、@hourly、@daily、@monthlyの3つの特別なオプションも受け入れます。

デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、Asia/Tokyo、America/Los_Angelesなどの拡張タイムゾーン形式のみをサポートしています。PST、CSTなどのタイムゾーンの略語はサポートされておらず、予期しないスケジュールになる可能性があります。