Snowflake Integration Guide
Snowflake は、パートナーがデータを保存し、UID2 フレームワークとインテグレーションできるクラウドデータウェアハウジングソリューションです。Snowflake を使用することで、UID2 は、機密性の高い 直接識別情報 (DII) を公開することなく、消費者識別子データを安全に共有できます。オペレーター Web サービスを直接クエリして消費者識別子データを取得するオプションもありますが、Snowflake UID2 インテグレーションはよりシームレスなエクスペリエンスを提供します。
このドキュメントは、最新の Snowflake Marketplace listing を使用している方を対象としています。以前のバージョンを使用している場合は、Snowflake Integration Guide (Pre-July 2025) を参照してください。以前の実装を使用している場合は、更新と強化を利用するために新しいバージョンへの移行を推奨します。詳細は、Changes from Previous Version を参照してください。移行情報は、Migration Guide を参照してください。
Snowflake Marketplace Listing
以下の 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 に暗号化することはできます。
パブリッシャーで、bidstream で UID2 Token を共有している場合は、Tokenized Sharing in the Bidstream を参照してください。
Changes from Previous Version
2025年7月の UID2 Snowflake Marketplace インテグレーションの更新では、UID2 のリフレッシュ管理を簡素化し、ローテーション後 90 日間の以前の raw UID2 にアクセスできる新しい ID マッピング関数が導入されました。
これらの変更は、コードインテグレーションが 2025 年 7 月以前に公開された Snowflake 関数のバージョンを使用していることを前提としています: Snowflake Integration Guide (Pre-July 2025) を参照してください。このバージョンへの移行の詳細は、Migration Guide を参照してください。
The following table shows the differences between the old and new identity mapping functions.
| Function | Version | Return Fields | Key Differences | Comments |
|---|---|---|---|---|
FN_T_IDENTITY_MAP | 以前のバージョン | UID, BUCKET_ID, UNMAPPED | 基本的な ID マッピングとソルトバケットの追跡 | ソルトバケット監視を使用したレガシー関数。詳細は、Snowflake Integration Guide (Pre-July 2025) を参照してください。 |
FN_T_IDENTITY_MAP_V3 | 現在 | UID, PREV_UID, REFRESH_FROM, UNMAPPED | 強化された以前の UID2 アクセスとリフレッシュタイムスタンプ | ローテーション後 90 日間の以前の UID2 を返し、ソルトバケット監視の代わりにリフレッシュタイムスタンプを使用します。詳細は、Map DII を参照してください。 |
Key Benefits
このアップデートにより、以下の 2 つの主要な利点が提供されます:
- Simplified Refresh Management:
REFRESH_FROMタイムスタンプに達した UID2 を監視できるようになり、ローテーションのために Salt Bucket をポーリングする必要がなくなります。 - Previous UID2 Access: ローテーション後 90 日間、以前の raw UID2 にアクセスできるようになり、キャンペーンの測定が可能になります。
Workflow Diagram
以下の図は、Snowflake における UID2 インテグレーションプロセスの異なる部分とワークフローを示しています。

| Partner Snowflake Account | UID2 Snowflake Account | UID2 Core Opt-Out Cloud Setup |
|---|---|---|
| パートナーとして、データをホストし、UID2 インテグレーションに参加するための Snowflake アカウントをセットアップします。UID2 Share を通じて関数とビューを消費します。 | UID2 インテグレーションは、Snowflake アカウントでホストされ、UID2 関連のタスクを実行するために必要なデータのみを引き出す認可された関数とビューへのアクセスを提供します。プライベートテーブルにはアクセスできません。UID2 Share は、UID2 関連のタスクを実行するために必要な基本的なデータのみを公開します。 Note: ソルト と暗号化キーはプライベートテーブルに保存されています。DII はどの時点でも保存されません。 | ETL (Extract Transform Load) ジョブは、UID2 Core/Optout Snowflake ストレージを常に更新し、UID2 Operator Web サービスを動かす内部データを提供します。Operator Web サービスで使用されるデータは、UID2 Share を通じても利用可能です。 |
| 共有関数とビューを使用すると、トランザクションコンピューティングコストを Snowflake に支払います。 | これらのプライベートテーブルは、UID2 Snowflake アカウントで保護され、UID2 関連のタスクを完了するために使用される内部データを保持する UID2 Core/Optout Snowflake ストレージと自動的に同期します。 |
Preparing DII for Processing
UID2 に変換する入力データが許容可能な形式であることは非常に重要です。そうでない場合、期待される結果は得られません。たとえば、Phone Number Normalization で説明されているように、電話番号には国コードを含めるように正規化する必要があります。
詳細は、Preparing Emails and Phone Numbers for Processing を参照してください。
Summary of Integration Steps
データのリクエストを行うには、ACCOUNTADMIN ロールまたは Snowflake アカウントで CREATE DATABASE および IMPORT SHARE 権限を持つ他のロールを使用する必要があります。
以下のリストは、本番環境での Snowflake における UID2 マッピングのインテグレーション手順をまとめたものです:
本番環境を使用する前にインテグレーションを試してみたい場合は、Testing in the Integ Environmentを参照してください。
-
UID2 POC が UID2 担当者によって署名されていることを確認してください。担当者がわからない場合は、Contact Infoを参照してください。
-
UID2 Share へのアクセスをリクエストします:
-
Snowflake Marketplace Listing でアクセスをリクエストします。リクエストには、Snowflake アカウント番号とリージョンを含めてください。
-
UID2 担当者にアクセスをリクエストしたことを伝えてください。
-
-
UID2 担当者が、UID2 mapping share へのアクセスをあなたの Snowflake アカウントにプロビジョニングします。
初期のテストを行った場合(Testing in the Integ Environmentを参照)、関数を本番の UID2 Share に更新し、関連するテーブル名も更新してください。
Testing in the Integ Environment
UID2 POC に署名する前に mapping share をテストしたい場合は、UID2 担当者に integ (インテグレーション) 環境の Snowflake シェアへのアクセスをリクエストできます。この環境はテスト専用であり、本番データはありません。リクエストには、アカウント番号とリージョンを必ず含めてください。
このシナリオでは、以下の手順が実行されます:
-
UID2 担当者がSnowflakeプライベートマーケットプレイスにシェアリスティングをプロビジョニングし、このステップが完了したら知らせます。
-
その後、プライベートマーケットプレイスのリスティングを表示し、integ シェアへのアクセスをリクエストできます。
-
アクセスをリクエストすると、UID2 担当者が integ シェアをあなたのアカウントにプロビジョニングします。
Shared Objects
DII を UID2 にマッピングするには、以下の関数を使用します:
FN_T_IDENTITY_MAP_V3(詳細はMap DIIを参照してください)
以下の関数は FN_T_IDENTITY_MAP_V3 に置き換えられ、非推奨となっています。以前の Snowflake バージョンを使用している場合は引き続き使用できますが、できるだけ早くアップグレードすることをお勧めします(詳細は Snowflake Integration Guide (Pre-July 2025) を参照してください):
FN_T_IDENTITY_MAP(deprecated)
非推奨の関数を使用していて、新しい関数への移行についてのヘルプが必要な場合は、Migration Guideを参照してください。
再生成が必要な UID2 を特定するには、FN_T_IDENTITY_MAP_V3 関数から返される REFRESH_FROM タイムスタンプを監視します。詳細は Monitor Raw UID2 Refresh and Regenerate Raw UID2s を参照してください。
以下の関数は、UID2 Share 参加者向けに利用可能です:
FN_T_ENCRYPT(See Encrypt Tokens)FN_T_DECRYPT(See Decrypt Tokens)
詳細は、Usage for UID2 Sharersを参照してください。
Database and Schema Names
以下のセクションは、各ソリューションのクエリ例を含みます。これらは、データベース名とスキーマ名の変数を除いて同一です:
{DATABASE_NAME}.{SCHEMA_NAME}
例:
select UID, PREV_UID, REFRESH_FROM, UNMAPPED from table({DATABASE_NAME}.{SCHEMA_NAME}.FN_T_IDENTITY_MAP_V3('validate@example.com', 'email'));
すべてのクエリ例は、各名前変数に対して以下のデフォルト値を使用します:
| Variable | Default Value | Comments |
|---|---|---|
{DATABASE_NAME} | UID2_PROD_UID_SH | 必要に応じて、選択した UID2 Share へのアクセスが付与された後に新しいデータベースを作成する際に、デフォルトのデータベース名を変更できます。 |
{SCHEMA_NAME} | UID | これは変更できません。 |
Map DII
すべての種類の DII をマッピングするには、FN_T_IDENTITY_MAP_V3 関数を使用します。
DII がメールアドレスの場合、サービスは UID2 Email Address Normalization ルールを使用してデータを正規化します。
DII が電話番号の場合、UID2 Phone Number Normalization ルールを使用して、サービスに送信する前に正規化する必要があります。
| Argument | Data Type | Description |
|---|---|---|
INPUT | varchar(256) | UID2 にマップする DII、リフレッシュ タイムスタンプ、およびローテーション後 90 日間の前の UID2。 |
INPUT_TYPE | varchar(256) | マップする DII のタイプ。許可される値: email、email_hash、phone、 phone_hash。 |
指定した DII に対して、成功したクエリは以下の情報を返します。
| Column Name | Data Type | Description |
|---|---|---|
UID | TEXT | 値は次のいずれかです:
|
PREV_UID | TEXT | 値は次のいずれかです:
|
REFRESH_FROM | TIMESTAMP | 値は次のいずれかです:
|
UNMAPPED | TEXT | 値は次のいずれかです:
|
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
以下のクエリは、default database and schema namesを使用して、単一のメールア ドレスをマッピングする方法です。
select UID, PREV_UID, REFRESH_FROM, UNMAPPED from table(UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3('validate@example.com', 'email'));
単一のメールアドレスのクエリ結果は以下の通りです:
+----------------------------------------------+--------------------------------------------------+--------------+----------+
| UID | PREV_UID | REFRESH_FROM | UNMAPPED |
+----------------------------------------------+--------------------------------------------------+--------------+----------+
| 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | vP9zK2mL7fR4tY8qN3wE6xB0dH5jA1sC+nI/oGuMeVa= | 1735689600 | NULL |
+----------------------------------------------+--------------------------------------------------+--------------+----------+
Mapping Request Example - Multiple Unhashed Emails
以下のクエリは、default database and schema namesを使用して、複数のメールアドレスをマッピングする方法です。
select a.ID, a.EMAIL, m.UID, m.PREV_UID, m.REFRESH_FROM, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3(EMAIL, 'email') t) m
on a.ID=m.ID;
複数のメールアドレスのクエリ結果は以下の通りです:
以下の表は、レスポンス内の各項目を識別し、NULL または不正な形式のメールアドレスに対する NULL 値を含みます。
+----+----------------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
| ID | EMAIL | UID | PREV_UID | REFRESH_FROM | UNMAPPED |
+----+----------------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
| 1 | validate@example.com | 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | vP9zK2mL7fR4tY8qN3wE6xB0dH5jA1sC+nI/oGuMeVa= | 1735689600 | NULL |
| 2 | test@uidapi.com | IbW4n6LIvtDj/8fCESlU0QG9K/fH63UdcTkJpAG8fIQ= | NULL | 1735689600 | NULL |
| 3 | optout@example.com | NULL | NULL | NULL | OPTOUT |
| 4 | invalid-email | NULL | NULL | NULL | INVALID IDENTIFIER |
| 5 | NULL | NULL | NULL | NULL | INVALID IDENTIFIER |
+----+----------------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
Mapping Request Example - Single Unhashed Phone Number
以下のクエリは、default database and schema namesを使用して、単一の電話番号をマッピングする方法です。
電話番号は、UID2 Phone Number Normalization ルールを使用して正規化する必要があります。
select UID, PREV_UID, REFRESH_FROM, UNMAPPED from table(UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3('+12345678901', 'phone'));
単一の電話番号のクエリ結果は以下の通りです:
+----------------------------------------------+----------+--------------+----------+
| UID | PREV_UID | REFRESH_FROM | UNMAPPED |
+----------------------------------------------+----------+--------------+----------+
| 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | NULL | 1735689600 | NULL |
+----------------------------------------------+----------+--------------+----------+
Mapping Request Example - Multiple Unhashed Phone Numbers
以下のクエリは、default database and schema namesを使用して、複数の電話番号をマッピングする方法です。
電話番号は、UID2 Phone Number Normalization ルールを使用して正規化する必要があります。
select a.ID, a.PHONE, m.UID, m.PREV_UID, m.REFRESH_FROM, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3(PHONE, 'phone') t) m
on a.ID=m.ID;
複数の電話番号のクエリ結果は以下の通りです:
以下の表は、レスポンス内の各項目を識別し、NULL または不正な形式の電話番号に対する NULL 値を含みます。
+----+--------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
| ID | PHONE | UID | PREV_UID | REFRESH_FROM | UNMAPPED |
+----+--------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
| 1 | +12345678901 | 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | vP9zK2mL7fR4tY8qN3wE6xB0dH5jA1sC+nI/oGuMeVa= | 1735689600 | NULL |
| 2 | +61491570006 | IbW4n6LIvtDj/8fCESlU0QG9K/fH63UdcTkJpAG8fIQ= | NULL | 1735689600 | NULL |
| 3 | +56789123001 | NULL | NULL | NULL | OPTOUT |
| 4 | 1234 | NULL | NULL | NULL | INVALID IDENTIFIER |
| 5 | NULL | NULL | NULL | NULL | INVALID IDENTIFIER |
+----+--------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
Mapping Request Example - Single Hashed Email
以下のクエリは、default database and schema namesを使用して、単一のメールアドレスハッシュをマッピングする方法です。
select UID, PREV_UID, REFRESH_FROM, UNMAPPED from table(UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3(BASE64_ENCODE(SHA2_BINARY('validate@example.com', 256)), 'email_hash'));
単一のメールアドレスハッシュのクエリ結果は以下の通りです:
+----------------------------------------------+----------------------------------------------+--------------+----------+
| UID | PREV_UID | REFRESH_FROM | UNMAPPED |
+----------------------------------------------+----------------------------------------------+--------------+----------+
| 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | vP9zK2mL7fR4tY8qN3wE6xB0dH5jA1sC+nI/oGuMeVa= | 1735689600 | NULL |
+----------------------------------------------+----------------------------------------------+--------------+----------+
Mapping Request Example - Multiple Hashed Emails
以下のクエリは、default database and schema namesを使用して、複数のメールアドレスハッシュをマッピングする方法です。
select a.ID, a.EMAIL_HASH, m.UID, m.PREV_UID, m.REFRESH_FROM, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3(EMAIL_HASH, 'email_hash') t) m
on a.ID=m.ID;
複数のメールアドレスハッシュのクエリ結果は以下の通りです:
以下の表は、レスポンス内の各項目を識別し、NULL または不正な形式のメールアドレスハッシュに対する NULL 値を含みます。
+----+----------------------------------------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
| ID | EMAIL_HASH | UID | PREV_UID | REFRESH_FROM | UNMAPPED |
+----+----------------------------------------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
| 1 | LdhtUlMQ58ZZy5YUqGPRQw5xUMS5dXG5ocJHYJHbAKI= | 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | vP9zK2mL7fR4tY8qN3wE6xB0dH5jA1sC+nI/oGuMeVa= | 1735689600 | NULL |
| 2 | /XJSTajB68SCUyuc3ePyxSLNhxrMKvJcjndq8TuwW5g= | IbW4n6LIvtDj/8fCESlU0QG9K/fH63UdcTkJpAG8fIQ= | NULL | 1735689600 | NULL |
| 2 | UebesrNN0bQkm/QR7Jx7eav+UDXN5Gbq3zs1fLBMRy0= | NULL | NULL | 1735689600 | OPTOUT |
| 4 | NULL | NULL | NULL | NULL | INVALID IDENTIFIER |
+----+----------------------------------------------+----------------------------------------------+----------------------------------------------+--------------+--------------------+
Mapping Request Example - Single Hashed Phone Number
以下のクエリは、default database and schema namesを使用して、単一の電話番号ハッシュをマッピングする方法です。
select UID, PREV_UID, REFRESH_FROM, UNMAPPED from table(UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3(BASE64_ENCODE(SHA2_BINARY('+12345678901', 256)), 'phone_hash'));
単一の電話番号ハッシュのクエリ結果は以下の通りです:
+----------------------------------------------+----------------------------------------------+--------------+----------+
| UID | PREV_UID | REFRESH_FROM | UNMAPPED |
+----------------------------------------------+----------------------------------------------+--------------+----------+
| 2ODl112/VS3x2vL+kG1439nPb7XNngLvOWiZGaMhdcU= | vP9zK2mL7fR4tY8qN3wE6xB0dH5jA1sC+nI/oGuMeVa= | 1735689600 | NULL |
+----------------------------------------------+----------------------------------------------+--------------+----------+
Mapping Request Example - Multiple Hashed Phone Numbers
以下のクエリは、default database and schema namesを使用して、複数の電話番号ハッシュをマッピングする方法です。
select a.ID, a.PHONE_HASH, m.UID, m.PREV_UID, m.REFRESH_FROM, m.UNMAPPED from AUDIENCE a LEFT JOIN(
select ID, t.* from AUDIENCE, lateral UID2_PROD_UID_SH.UID.FN_T_IDENTITY_MAP_V3(PHONE_HASH, 'phone_hash') t) m
on a.ID=m.ID;