Snowflake Integration Guide
Snowflake は、パートナーがデータを保存し、UID2 フレームワークとインテグレーションするためのクラウドデー タウェアハウスソリューションです。Snowflake を使用することで、UID2 は機密性の高い directly identifying information (DII) を公開することなく、認可された消費者識別子データを安全に共有できます。消費者識別子データを直接 Operator Web Services に問い合わせることもできますが、Snowflake UID2 とのインテグレーションにより、よりシームレスな体験が可能になります。
UID2 の以下のリストが Snowflake marketplace で入手可能です:
広告主とデータプロバイダー向けのすべてのインテグレーションオプションと手順の概要については、Advertiser/Data Provider Integration Overview を参照してください。
Functionality
次の表は、UID2 Snowflake インテグレーション で利用可能な機能をまとめたものです。
Encrypt Raw UID2 to UID2 Token for Sharing | Decrypt UID2 Token to Raw UID2 | Generate UID2 Token from DII | Refresh UID2 Token | Map DII to Raw UID2s |
---|---|---|---|---|
✅ | ✅ | —* | — | ✅ |
*Snowflake を使用して DII から直接 UID2 Token を生成することはできません。ただし、DII を raw UID2 に変換し、raw UID2 を UID2 Tokenに暗号化することはできます。
ビッドストリームで UID2 Token を共有するパブリッシャーの場合は、Tokenized Sharing in the Bidstream を参照してください
Workflow Diagram
次の図は、Snowflake が UID2 インテグレーションプロセスにどのように関わるかを示しています:
Partner Snowflake Account | UID2 Snowflake Account | UID2 Core Opt-Out Cloud Setup |
---|---|---|
パートナーとして、Snowflake アカウントを設定してデータをホストし、UID2 Share を通じて関数やビューを使うことで、UID2 インテグレーションに関与できます。 | Snowflake アカウントでホストされている UID2 インテグレーションでは、プライベートテーブルからデータを引き出す許可をされた関数とビューへのアクセスが許可されます。プライベートテーブルにはアクセスできません。UID2 Share では、UID2 関連のタスクを実行するために必要な重要なデータのみが公開されます。 | ETL (抽出・変換・ロード) ジョブは、UID2 Core/Optout Snowflake ストレージを常に更新し、UID2 Operator Web Services を動かす内部データを提供します。Operator Web Services で使用されるデータは、UID2 Share からも入手できます。 |
Shared 関数とビューを使用する場合、Snowflake にトランザクションのコストを支払いま す。 | UID2 Snowflake アカウントで保護されたこれらのプライベートテーブルは、UID2 関連のタスクを完了するために使用される内部データを保持する UID2 Core/Optout Snowflake ストレージと自動的に同期されます。 |
Access the UID2 Shares
UID2 Shareへのアクセスは、Snowflake Data Marketplace を通して行います。ここでは、選択した UID2 パーソナライズドリストに基づいて特定のデータセットをリクエストすることができます。
Snowflakeデータマーケットプレイスでは、UID2 用に2つのパーソナライズされたリストが提供されています:
- 広告主/ブランド向けの Unified ID 2.0 Advertiser Identity Solution
- データプロバイダー向けの Unified ID 2.0 Data Provider Identity Solution
データをリクエストするには、Snowflake アカウントにACCOUNTADMIN
ロール権限が必要です。
UID2 Share へのアクセスを要求するには、次の手順を実行します。
- Snowflake Data Marketplace にログインし、関心のある UID2 ソリューションを選択します:
- パーソナライズドデータ セクションで、データのリクエスト をクリックします。
- 画面の指示に従って、連絡先やその他の必要情報を確認し、入力してください。
- The Trade Desk の既存顧客で Advertiser Identity Solution に興味がある場合は、データリクエストフォームの Message 欄に The Trade Desk が発行したパートナー ID および広告主 ID を記載してください。
- フォームを送信します。
リクエストを受け取った後、UID2 Administrator が適切なアクセス方法をご連絡します。Snowflake でのデータリクエストの管理についての詳細は Snowflake documentation を参照してください。
Shared Objects
選択した UID2 ソリューションに関係なく、以下の関数を使って、DII を UID2 にマッピングできます:
FN_T_UID2_IDENTITY_MAP
(Map DII を参照してください)
以下の関数は非推奨となり、FN_T_UID2_IDENTITY_MAP
が優先されます。これらの関数はまだ使用できますが、 FN_T_UID2_IDENTITY_MAP
の方が優れています。すでにこれらの関数を使用している場合は、できるだけ早くアップグレードすることを勧めます。
FN_T_UID2_IDENTITY_MAP_EMAIL
(非推奨)FN_T_UID2_IDENTITY_MAP_EMAIL_HASH
(非推奨)
非推奨の関数を使用していて、新しい関数への移行の手助けが必要な場合は、Migration Guide を参照してください。
再生成が必要な UID2 を特定するには、UID Share から UID2_SALT_BUCKETS
ビューを使用します。詳細は、Monitor for Salt Bucket Rotation and Regenerate Raw UID2s を参照してください。
UID2 Sharing 参加者には、以下の機能も利用できます:
FN_T_UID2_ENCRYPT
(See Encrypt Tokens)FN_T_UID2_DECRYPT
(See Decrypt Tokens)
詳細は Usage for UID2 Sharers を参照してください。
Database and Schema Names
以下のセクションでは、各ソリューションのクエリ例を示します。これらは、データベースとスキーマ名の変数を除けば、同じものです:
{DATABASE_NAME}.{SCHEMA_NAME}
例:
select UID2, BUCKET_ID, UNMAPPED from table({DATABASE_NAME}.{SCHEMA_NAME}.FN_T_UID2_IDENTITY_MAP('validate@example.com', 'email'));
すべてのクエリ例では、各名前変数に以下のデフォルト値を使用しています:
Variable | Advertiser Solution Default Value | Data Provider Solution Default Value | Comments |
---|---|---|---|
{DATABASE_NAME} | UID2_PROD_ADV_SH | UID2_PROD_DP_SH | 必要であれば、選択した UID2 Share へのアクセス権が与えられた後に新しいデータベースを作成する際に、デフォルトのデータベース名を変更できます。 |
{SCHEMA_NAME} | ADV | DP | これはイミュータブルです。 |
Map DII
すべてのタイプの DII をマッピングするには、FN_T_UID2_IDENTITY_MAP
関数を使用します。
DII がメールアドレスの場合、サービスは UID2 メールアドレスの正規化 規則を使用して正規化されます。
DII が電話番号の場合、UID2 電話番号正規化 ルールを使用して、サービスに送信する前に正規化する必要があります。
Argument | Data Type | Description |
---|---|---|
INPUT | varchar(256) | UID2とセカンドレベルレベルのバケット ID にマッピングするDII。 |
INPUT_TYPE | varchar(256) | マッピングするDIIのタイプ。指定できる値: email , email_hash , phone , phone_hash |
クエリに成功すると、指定された DII について以下の情報が返されます。
Column Name | Data Type | Description |
---|---|---|
UID2 | TEXT | DII は正常にマッピングされました: DII は正常にマップされませんでした: NULL 。 |
BUCKET_ID | TEXT | DIIは正常にマップされました: UID2 の生成に使われたセカンドレベルのソルトバケットの ID。この ID は UID2_SALT_BUCKETS ビューのバケットIDに対応します。DIIは正常にマップされませんでした: NULL 。 |
UNMAPPED | TEXT | DII は正常にマッピングされました: NULL DII は正常にマップされませんでした: NULL : DII は正常にマップされませんでした: 識別子がマップされなかった理由: OPTOUT 、INVALID IDENTIFIER 、INVALID INPUT TYPE のいずれか。詳細は Values for the UNMAPPED Column を参照してください。 |
Values for the UNMAPPED Column
UNMAPPED
に指定できる値は以下の通りです:
Value | Meaning |
---|---|
NULL | DII は正常にマッピングされました。 |
OPTOUT | ユーザはオプトアウトしました。 |
INVALID IDENTIFIER | メールアドレスまたは電話番号が無効です。 |
INVALID INPUT TYPE | INPUT_TYPE の値が無効です。INPUT_TYPE の値は以下のいずれかでなければなりません: email 、email_hash 、phone 、phone_hash 。 |
Examples
このセクションのマッピングリクエストの例:
- Single Unhashed Email
- Multiple Unhashed Emails
- Single Unhashed Phone Number
- Multiple Unhashed Phone Numbers
- Single Hashed Email
- Multiple Hashed Emails
- Single Hashed Phone Number
- Multiple Hashed Phone Numbers
これらの例の入出力データは、説明のみを目的とした架空のものです。提供された値は実際の値ではありません。
Mapping Request Example - Single Unhashed Email
次のクエリは、デフォルトのデータベースとスキーマ名 を使用して、単一のメールアドレスをマッピングする方法を示しています。
単一のメールアドレスに対する広告主ソリューションのクエリー:
select UID2, BUCKET_ID, UNMAPPED from table(UID2_PROD_ADV_SH.ADV.FN_T_UID2_IDENTITY_MAP('validate@example.com', 'email'));
単一のメールアドレスに対するデータプロバイダーソリューションのクエリー:
select UID2, BUCKET_ID, UNMAPPED from table(UID2_PROD_DP_SH.DP.FN_T_UID2_IDENTITY_MAP('validate@example.com', 'email'));
単一のメールアドレスに対するクエリー結果:
+----------------------------------------------+------------+----------+
| UID2 | BUCKET_ID | UNMAPPED |
+----------------------------------------------+------------+----------+
| 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | ad1ANEmVZ | NULL |
+----------------------------------------------+------------+----------+
Mapping Request Example - Multiple Unhashed Emails
以下のクエリは、デフォルトのデータベースとスキーマ名 を使用して、複数のメールアドレスをマッピングする方法を示しています。
複数のメールアドレスに対する広告主ソリューションのクエリー:
select a.ID, a.EMAIL, m.UID2, m.BUCKET_ID, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_ADV_SH.ADV.FN_T_UID2_IDENTITY_MAP(EMAIL, 'email') t) m
on a.ID=m.ID;
複数のメールアドレスに対するデータプロバイダーソリューションのクエリー:
select a.ID, a.EMAIL, m.UID2, m.BUCKET_ID, UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_DP_SH.DP.FN_T_UID2_IDENTITY_MAP(EMAIL, 'email') t) m
on a.ID=m.ID;
複数のメールアドレスに対するクエリー結果:
次の表は、NULL
または不適切な書式のメールアドレスに対する NULL
値を含む、レスポンスの各項目です。
+----+--------------------+----------------------------------------------+------------+--------------------+
| ID | EMAIL | UID2 | BUCKET_ID | UNMAPPED |
+----+--------------------+----------------------------------------------+------------+--------------------+
| 1 | validate@example.com | 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | ad1ANEmVZ | NULL |
| 2 | test@uidapi.com | IbW4n6LIvtDj/8fCESlU0QG9K/fH63UdcTkJpAG8fIQ= | a30od4mNRd | NULL |
| 3 | invalid-email | NULL | NULL | INVALID IDENTIFIER |
| 4 | NULL | NULL | NULL | INVALID IDENTIFIER |
+----+--------------------+----------------------------------------------+------------+--------------------+
Mapping Request Example - Single Unhashed Phone Number
以下のクエリは、デフォルトのデータベース名とスキーマ名 を使って電話番号をマッピングする方法を示しています。
電話番号は、UID2 電話番号正規化 ルールを使って正規化する必要があります。
単一の電話番号に対する広告主ソリューションのクエリー:
select UID2, BUCKET_ID, UNMAPPED from table(UID2_PROD_ADV_SH.ADV.FN_T_UID2_IDENTITY_MAP('+12345678901', 'phone'));
単一の電話番号に対するデータプロバイダーソリューションのクエリー:
select UID2, BUCKET_ID, UNMAPPED from table(UID2_PROD_DP_SH.DP.FN_T_UID2_IDENTITY_MAP('+12345678901', 'phone'));
単一の電話番号に対するクエリー結果:
+----------------------------------------------+------------+----------+
| UID2 | BUCKET_ID | UNMAPPED |
+----------------------------------------------+------------+----------+
| 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | ad1ANEmVZ | NULL |
+----------------------------------------------+------------+----------+
Mapping Request Example - Multiple Unhashed Phone Numbers
以下のクエリは、デフォルトのデータベース名とスキーマ名 を使用して、複数の電話番号をマップする方法を示しています。
電話番号は UID2 の電話番号正規化 ルールを使って正規化する必要があります。
複数の電話番号に対する広告主ソリューションのクエリー:
select a.ID, a.PHONE, m.UID2, m.BUCKET_ID, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_ADV_SH.ADV.FN_T_UID2_IDENTITY_MAP(PHONE, 'phone') t) m
on a.ID=m.ID;
複数の電話番号に対するデータプロバイダーソリューションのクエリー:
select a.ID, a.PHONE, m.UID2, m.BUCKET_ID, UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_DP_SH.DP.FN_T_UID2_IDENTITY_MAP(PHONE, 'phone') t) m
on a.ID=m.ID;
複数の電話番号に対するクエリー結果:
The following table identifies each item in the response, including NULL
values for NULL
or invalid phone numbers.
+----+--------------+----------------------------------------------+------------+--------------------+
| ID | PHONE | UID2 | BUCKET_ID | UNMAPPED |
+----+--------------+----------------------------------------------+------------+--------------------+
| 1 | +12345678901 | 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | ad1ANEmVZ | NULL |
| 2 | +61491570006 | IbW4n6LIvtDj/8fCESlU0QG9K/fH63UdcTkJpAG8fIQ= | a30od4mNRd | NULL |
| 3 | 1234 | NULL | NULL | INVALID IDENTIFIER |
| 4 | NULL | NULL | NULL | INVALID IDENTIFIER |
+----+--------------+----------------------------------------------+------------+--------------------+
Mapping Request Example - Single Hashed Email
以下のクエリは、デフォルトのデータベースとスキーマ名 を使用して、単一のメールアドレスハッシュをマップする方法を示しています。
単一のハッシュ化されたメールアドレスに対する広告主ソリューションのクエリー:
select UID2, BUCKET_ID, UNMAPPED from table(UID2_PROD_ADV_SH.ADV.FN_T_UID2_IDENTITY_MAP(BASE64_ENCODE(SHA2_BINARY('validate@example.com', 256)), 'email_hash'));
単一のハッシュ化されたメールアドレスに対するデータプロバイダーソリューションのクエリー:
select UID2, BUCKET_ID, UNMAPPED from table(UID2_PROD_DP_SH.DP.FN_T_UID2_IDENTITY_MAP(BASE64_ENCODE(SHA2_BINARY('validate@example.com', 256)), 'email_hash'));
単一のハッシュ化されたメールアドレスに対するクエリー結果:
+----------------------------------------------+------------+----------+
| UID2 | BUCKET_ID | UNMAPPED |
+----------------------------------------------+------------+----------+
| 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | ad1ANEmVZ | NULL |
+----------------------------------------------+------------+----------+
Mapping Request Example - Multiple Hashed Emails
以下のクエリは、デフォルトのデータベースとスキーマ名 を使用して、複数のメールアドレスハッシュをマッピングする方法を示しています。
複数のハッシュ化されたメールアドレスに対する広告主ソリューションのクエリー:
select a.ID, a.EMAIL_HASH, m.UID2, m.BUCKET_ID, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_ADV_SH.ADV.FN_T_UID2_IDENTITY_MAP(EMAIL_HASH, 'email_hash') t) m
on a.ID=m.ID;
複数のハッシュ化されたメールアドレスに対するデータプロバイダーソリューションのクエリー:
select a.ID, a.EMAIL_HASH, m.UID2, m.BUCKET_ID, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_DP_SH.DP.FN_T_UID2_IDENTITY_MAP(EMAIL_HASH, 'email_hash') t) m
on a.ID=m.ID;
複数のハッシュ化されたメールアドレスに対するクエリー結果:
次の表は、NULL
ハッシュの NULL
値を含め、レスポンスの各項目を示しています。
+----+----------------------------------------------+----------------------------------------------+------------+--------------------+
| ID | EMAIL_HASH | UID2 | BUCKET_ID | UNMAPPED |
+----+----------------------------------------------+----------------------------------------------+------------+--------------------+
| 1 | LdhtUlMQ58ZZy5YUqGPRQw5xUMS5dXG5ocJHYJHbAKI= | 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | ad1ANEmVZ | NULL |
| 2 | NULL | NULL | NULL | INVALID IDENTIFIER |
| 3 |/XJSTajB68SCUyuc3ePyxSLNhxrMKvJcjndq8TuwW5g= | IbW4n6LIvtDj/8fCESlU0QG9K/fH63UdcTkJpAG8fIQ= | a30od4mNRd | NULL |
+----+----------------------------------------------+----------------------------------------------+------------+--------------------+