Snowflake Clean Roomsは、複数の組織が互いの生データを公開せずに共同分析を行うためのデータコラボレーション基盤です。 広告効果測定、顧客オーバーラップ分析、データエンリッチメントなどのユースケースで、 プライバシーを保護しながらデータの価値を引き出すことを目的としています。 GDPRやCCPAなどのプライバシー規制への対応が求められる中、 Clean Roomsはサードパーティクッキーの廃止後のマーケティング分析基盤としても注目されています。
Clean RoomsはProvider(データ提供者)とConsumer(データ利用者)の2者間で構成されます。 Providerがデータと分析テンプレートを定義し、ConsumerはテンプレートをAPIとして実行します。
┌─────────────────────────────────┐
│ Provider(広告媒体社) │
│ │
│ [広告インプレッションデータ] │
│ ├─ user_hash (ハッシュ化ID) │
│ ├─ campaign_id │
│ ├─ impression_date │
│ └─ channel │
│ │
│ [分析テンプレート] │
│ ├─ Overlap Analysis │
│ ├─ Reach & Frequency │
│ └─ Conversion Attribution │
└──────────────┬──────────────────┘
│ Clean Room(集計結果のみ共有)
│ ← 生データは渡さない
┌──────────────┴──────────────────┐
│ Consumer(広告主) │
│ │
│ [顧客データ] │
│ ├─ user_hash (ハッシュ化ID) │
│ ├─ purchase_date │
│ ├─ product_category │
│ └─ amount │
│ │
│ テンプレートを実行 → 集計結果を取得 │
└─────────────────────────────────┘Clean Roomsは複数のSnowflake機能を組み合わせて実現されています。
| 構成要素 | 役割 |
|---|---|
| Secure Data Sharing | テンプレート(Secure UDF / Stored Procedure)をConsumerアカウントに共有 |
| Secure UDF / Stored Procedure | 分析ロジックをカプセル化し、Consumer側から実行可能にする |
| Row Access Policy | ConsumerがJOIN結合できるデータ範囲を制限 |
| Aggregation Policy | 結果セットの最小集計粒度を強制(個人を特定できない粒度に制限) |
| Native App Framework | Clean Roomをパッケージ化してMarketplace経由で配布 |
最も一般的なClean Roomのユースケースです。 Provider側の顧客リストとConsumer側の顧客リストをハッシュ化IDで突合し、 重複する顧客数やセグメント別の分布を集計結果のみで返します。
-- Provider側: Overlap Analysisテンプレートの定義(概念例)
CREATE OR REPLACE SECURE FUNCTION clean_room.overlap_analysis(
consumer_table VARCHAR,
join_column VARCHAR,
group_by_column VARCHAR
)
RETURNS TABLE (segment VARCHAR, overlap_count NUMBER, overlap_pct FLOAT)
AS
$
SELECT
p.segment,
COUNT(DISTINCT p.user_hash) AS overlap_count,
ROUND(COUNT(DISTINCT p.user_hash) * 100.0
/ (SELECT COUNT(DISTINCT user_hash) FROM provider_data.customers), 2) AS overlap_pct
FROM provider_data.customers p
INNER JOIN IDENTIFIER(consumer_table) c
ON p.user_hash = c.user_hash
GROUP BY p.segment
HAVING COUNT(DISTINCT p.user_hash) >= 25 -- 最小集計粒度(k-匿名性)
ORDER BY overlap_count DESC
$;
-- Consumer側: テンプレートの実行
SELECT * FROM TABLE(
shared_clean_room.clean_room.overlap_analysis(
'my_db.my_schema.my_customers',
'user_hash',
'segment'
)
);Consumer側のデータをProvider側のデータで補強するユースケースです。 たとえばConsumer側の顧客リストに対して、Provider側が保有するデモグラフィック属性のセグメント別集計値を付与します。 個人レベルの属性は返さず、セグメント粒度での統計値のみを提供します。
-- Provider側: Enrichmentテンプレート(概念例)
CREATE OR REPLACE SECURE FUNCTION clean_room.enrich_demographics(
consumer_table VARCHAR
)
RETURNS TABLE (age_group VARCHAR, income_bracket VARCHAR, user_count NUMBER)
AS
$
SELECT
p.age_group,
p.income_bracket,
COUNT(DISTINCT c.user_hash) AS user_count
FROM IDENTIFIER(consumer_table) c
INNER JOIN provider_data.demographics p
ON c.user_hash = p.user_hash
GROUP BY p.age_group, p.income_bracket
HAVING COUNT(DISTINCT c.user_hash) >= 50
ORDER BY user_count DESC
$;広告のインプレッションデータ(Provider)と購買データ(Consumer)を突合し、 キャンペーン別のコンバージョン率を集計で算出するパターンです。
-- 概念例: キャンペーン別コンバージョン集計
-- Provider: 広告インプレッション / Consumer: 購買データ
-- 結果のイメージ(集計データのみConsumerに返却)
-- campaign_id | impressions | converters | conversion_rate
-- CAMP_001 | 15,230 | 1,892 | 12.4%
-- CAMP_002 | 28,450 | 2,105 | 7.4%
-- CAMP_003 | 9,870 | 423 | 4.3%| 比較項目 | Clean Rooms | Data Sharing |
|---|---|---|
| データの公開範囲 | 集計結果のみ(生データ非公開) | 共有されたオブジェクトに対するSELECTが可能 |
| Consumer側の操作 | 定義済みテンプレートの実行のみ | 任意のSELECTクエリを実行可能 |
| プライバシー保護 | 強い(集計粒度制限・k-匿名性) | Provider側のポリシー設計に依存 |
| 主なユースケース | 広告測定、顧客分析、医療研究 | データ商品化、パートナー連携、部門間共有 |
| データコピー | なし(Provider側のストレージに存在) | なし(同じくProvider側に存在) |
| コスト負担 | Consumer側のコンピュート(またはProvider側) | Consumer側のコンピュート |
| カスタマイズ性 | テンプレートの範囲内 | 高い(自由にクエリ設計可能) |
| 制御 | 目的 | 実装方法 |
|---|---|---|
| ハッシュ化結合 | PII(生のメール等)を使わずにデータを突合 | SHA-256ハッシュで事前に匿名化 |
| 最小集計粒度 | 少数のレコードを含む結果を排除(再特定リスク低減) | HAVING COUNT(*) >= k(k-匿名性) |
| テンプレート制限 | ConsumerのSQLを制限し、意図しない集計を防止 | Secure UDF / Stored Procedure |
| 差分プライバシー | 集計値にノイズを加えて個人の寄与を隠蔽 | テンプレート内での統計的ノイズ付加 |
Snowflake Marketplaceでは、サードパーティベンダーがClean Roomソリューションを Native Appとして提供しています。LiveRamp、Habu(2024年にSnowflakeが買収)、InfoSumなどが 専用のClean Roomアプリを公開しており、Snowflakeアカウントにインストールするだけで Clean Room機能を利用開始できます。
Step 1: Provider側
├─ データの準備(ハッシュ化、匿名化)
├─ 分析テンプレートの定義(Secure UDF / Stored Procedure)
├─ プライバシー制御の設定(最小粒度、Row Access Policy)
└─ Clean Roomのデプロイ(Share作成 or Native App公開)
Step 2: Consumer側
├─ Shareの受信 or Native Appのインストール
├─ 自社データの準備(結合キーのハッシュ化)
└─ テンプレートの実行と結果の取得
Step 3: 運用
├─ テンプレートの実行ログ監視
├─ 結果のプライバシー検証
└─ テンプレートの更新・追加Data Collaboration
問題 1
広告媒体社(Provider)が保有するインプレッションデータと広告主(Consumer)が保有する購買データを突合し、キャンペーン別のコンバージョン率を算出したい。ただし、双方ともに相手の生データ(個人レベルのレコード)にはアクセスできないようにする必要がある。最も適切なアプローチはどれか。
正解: B
「双方ともに相手の生データにアクセスできない」という要件を満たすのはClean Roomsです。Provider側が分析テンプレート(Secure UDF/Stored Procedure)を定義し、Consumer側はテンプレートを実行して集計結果のみを受け取ります。Aの Data Sharingでは Consumer側がSELECTで生データにアクセスできてしまいます。CのCSVエクスポートはセキュリティ上問題があり、Snowflakeのデータガバナンス機能を活用できません。DのExternal Tableでも生データへのアクセスが可能になってしまいます。
Clean RoomsとData Sharingの違いは何ですか?
Data Sharing(Secure Data Sharing)はProvider側のデータをConsumerがSELECTで自由にクエリできる仕組みです。Consumerは行レベル・列レベルでデータを参照できます。一方、Clean Roomsはデータそのものは公開せず、Provider側が定義した分析テンプレート(SQL)のみをConsumerが実行できる仕組みです。Consumer側は個々のレコードにはアクセスできず、集計結果のみが返されます。そのため、PIIや機密データを含む場合はClean Roomsが適しており、オープンなデータ共有にはData Sharingが適しています。
Clean Roomsは技術的にはどのSnowflake機能で実装されていますか?
Snowflake Clean Roomsは内部的にSecure Data Sharing、Secure UDF/Stored Procedure、Row Access Policy、JavaScript UDF、Reader Accounts(場合によって)などの機能を組み合わせて実装されています。Providerは分析テンプレートとしてSecure UDFやStored Procedureを定義し、それをData Sharing経由でConsumerに公開します。Consumer側はテンプレートに引数(自社データの結合キー等)を渡して実行しますが、裏側のデータには直接アクセスできません。
Clean Roomsを利用するためのEdition要件はありますか?
Snowflake Clean Roomsの機能自体はBusiness Critical Edition以上で利用可能です。Snowflake Native App Frameworkを使用してClean Roomアプリケーションを構築・配布する場合もBusiness Critical以上が推奨されます。Marketplace経由でサードパーティが提供するClean Roomソリューション(LiveRamp、InfoSum等)を利用する場合は、Enterprise Edition以上で利用できるケースもあります。なお、Snowsight UIからのClean Room管理機能はPrivate Previewまたは限定的に提供されている場合があるため、最新の公式ドキュメントで確認してください。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Snowflake資格一覧|全11試験(SnowPro)の難易度・費用
Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...
Snowflake試験の難易度ランキング|全11資格を徹底比較
Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...
Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ
Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...
SnowPro Core試験完全解説|出題範囲・問題例・合格戦略
SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...
SnowPro Platform Associate完全解説|入門試験の攻略
SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...