Snowflake Data Clean Rooms の概要¶
このページでは、Snowflake Data Clean Roomsの概要について説明します。アカウントにclean roomをインストールしたいSnowflake管理者の方は、 Snowflake Data Clean Rooms 環境のインストール をお読みください。
アカウントへのclean roomのインストール¶
Snowflake Data Clean Room環境は、Snowflakeアカウントの ACCOUNTADMIN 権限を持つユーザーによって、Snowflakeアカウント全体に対して1回インストールされます (ユーザーまたはclean roomごとに1回インストールされるわけではありません)。
clean roomへの招待メールを受け取ったときには、 自分のSnowflakeアカウントにclean roomがすでにインストールされています。clean roomの使用方法について、このページでここから説明しますが、何もインストールする必要はなく、clean roomに入るだけで使用できます。
アカウント管理者の方で、Snowflakeアカウントにclean room環境がインストールされていない場合は、 Snowflakeアカウントにclean room環境をインストールする方法 をご覧ください。
アカウント管理者でない方は、 アカウント管理者に Snowflake Data Clean Rooms がインストールされているかどうかを確認してください。インストールされていない場合は、インストールとアクセス許可の付与を依頼してください。その場合は、clean roomにアクセスするための権限を要求してください。
開発者の方で、 API アクセスが必要な場合は、 clean room管理者に API へのアクセスを許可するよう 依頼してください。
Snowflake Data Clean Rooms の概要¶
データclean roomは構成可能であり、隔離されたSnowflake環境です。コラボレーターはここにデータをインポートし、そのデータに対して実行可能なクエリを指定したり、差分プライバシーの設定、結合や投影の可能行の指定などのデータ保護設定を行ったりできます。clean roomにアクセスするには招待が必要です。
Clean roomは収益化の機能をサポートしていません。プロバイダーのコストは、clean roomの有効化に必要なさまざまなバックグラウンドプロセスに対して請求され、クエリを実行するアカウントのコストは、データとコンピューティングの使用に対する標準的なSnowflakeコストに対して請求されます。コストについて詳しくは、 コストを理解する をご覧ください。
clean roomへのアクセスには、clean roomプロバイダーの招待が必要です。clean roomを多くのユーザーに公開したい場合は、コラボレーターになりたいユーザーからSnowflakeアカウント (Snowflakeユーザーではない場合はメールアドレス) を送ってもらうよう手配し、そのユーザーを招待する必要があります。
以降ではSnowflake Data Clean Roomsについて概要を説明します:
clean room環境のインストール¶
Snowflake Data Clean Rooms 環境 は、Snowflakeアカウントの ACCOUNTADMIN 権限を持つユーザーによって、(ユーザーごと、またはclean roomごとではなく) Snowflake アカウント全体で 一度 インストールされます。
管理者は環境を構成する際に、clean roomの作成やクエリの実行を許可するユーザー、 API へのアクセスを許可するユーザー、clean roomへのコラボレーターの招待が許可されるアカウント、clean room作成者がclean roomにインポートできるデータ、このアカウントで作成されたclean roomからクエリ結果をエクスポートするために使用できるサードパーティサービス (もしあれば) を指定します。
お客様のアカウントにclean room環境がすでにインストールされている場合は、clean room管理者に問い合わせてアクセスを依頼してください。アカウントにclean room環境がインストールされていない場合は、 環境のインストール方法 をご覧ください。
環境のインストールと構成を行った後、clean room UI、 API、 またはその両方を使用する権限が、管理者によって他のSnowflakeユーザーに付与されます。
詳細
Clean Room環境のインストールと構成方法 についてご覧ください。
デフォルトでは、clean roomを共有できるのは、同じウェブホスティングリージョンのアカウントのみです。管理者は 他のリージョンのアカウントとの共有を有効にすることができます。
clean room管理者が行うその他のタスク をご参照ください。
clean roomの作成¶
Snowflakeアカウント管理者は、Snowflakeアカウントのユーザーにclean roomの作成権限を付与します。clean roomを作る人は、そのclean roomの プロバイダー と呼ばれます。プロバイダーは、他のSnowflakeアカウントのユーザー (またはSnowflake以外のユーザー) とclean roomを構成し、共有することができます。clean roomを共有する人は、そのclean roomの コンシューマー と呼ばれます。
注釈
プロバイダーとコンシューマーのロールは、個々のユーザーレベルではなく、Snowflakeアカウントレベルで適用されます。つまり、Snowflakeアカウント ABC でclean roomを作成した場合、 ABC clean room環境にアクセスできるすべての ABC ユーザーが、clean roomを管理できます。同様に、Snowflakeアカウント EFG をコンシューマーに招待した場合、clean roomにアクセスできるすべての EFG ユーザーが、そのclean roomのコンシューマーとなります。
clean roomを作成した後、プロバイダーは (リンク) テーブルやビューをclean roomにインポートし、そのデータに対して実行可能なクエリ、そのデータ内で結合したり結果を表示したりできる列、結果に対して実行可能な処理を指定します。(後ほど、標準的なclean roomのバリエーションの作成について説明します)。
その後、プロバイダーはclean roomに参加するコンシューマーを招待し、自分のテーブルとビューをインポートして、プロバイダーが指定したクエリのいずれかを実行します。コンシューマーがclean roomに招待されるには、clean room管理者が事前に承認する必要があります。
詳細
Clean roomは、コーディングまたはclean room UI を使用して作成できます。 ウェブを使用する か、それとも コーディング かによって、clean roomの作成権限は異なります。
テーブルは、Snowflake アカウントからインポートされることも、 Snowflake以外のIcebergテーブル から AWS、 Azure、 Google でインポートされることもあります。
データをclean roomにインポートする前に、ソースデータの管理権限を持つユーザーが 登録 する必要があります。
Snowflakeと Snowflake以外のユーザー をclean roomへの参加に招待することができます。
clean roomにおけるプロバイダーロール について詳しくご参照ください.
clean roomへの参加¶
clean roomを作成および構成した後、プロバイダーは他のアカウントのユーザーに、clean roomへの招待を送信します。招待されたユーザーは、 コンシューマー または コラボレーター と呼ばれます。clean room UI を通して招待されたコンシューマーは、clean roomへの招待メールを受け取ります。Snowflakeユーザーがclean roomに招待されるには、clean room環境がインストールされている必要がありますが、 Snowflake以外のユーザー をclean roomに招待することもできます。clean roomの作成者がユーザーを招待するには、そのSnowflakeアカウントがclean room管理者によって許可リストに登録されている必要があります。
(clean room UI では、コンシューマーがclean roomの招待を受け入れることを、「参加する」とも「インストールする」とも言います。これは、clean roomが文字どおりコンシューマーのclean room環境にインストールされる必要があるからです)。
clean roomに参加した後、コンシューマーはclean roomのテンプレートに必要なデータをインポート (リンク) し、どの列に結合や投影を許可するかなど、データへのアクセス方法を指定し、テンプレート固有のフィルターやその他のパラメーターを入力して、テンプレートを実行します。コンシューマーは、必要に応じてテンプレートの繰り返し実行を指定できます。結果はブラウザで表示したり、ダウンロードしたりできます。プロバイダーがアクティベーションを有効にし、コンシューマーが承認した場合、コンシューマーは承認された場所 (自身のSnowflakeアカウント、またはプロバイダーが指定したサードパーティのアクティベーションコネクタ) に結果をエクスポートできます。
clean roomにインポートされたデータは、プロバイダーやコンシューマーのいずれの側からも、直接クエリしたり表示したりできませんが、clean room内のテンプレートからアクセスすることだけはできます。テンプレートとは、プロバイダーやコンシューマーがclean room内にインストールする SQL クエリのことです。clean room内で使用するには相手方の許可が必要です。
また、それぞれの側でアクセスルールを設定し、どの列の結合、投影、またはエクスポートを許可するか、どのテンプレートの実行をclean roomで許可するかなどを各自のデータに設定します。それぞれの側からいつでもclean roomのデータを削除できます。
デフォルトでは、clean roomでテンプレートを実行できるのはコンシューマーだけですが、プロバイダーは指定したテンプレートをclean roomで実行するようコンシューマーに依頼できます。
詳細
Clean roomは 差分プライバシー をサポートしています。差分プライバシーは、プロバイダーまたはコンシューマーのいずれかが有効にし、構成します。
Snowflake Data Clean Rooms のコンシューマーロール の詳細をご参照ください。
クエリの実行¶
すべてのclean roomには、1つ以上の テンプレート が設置されています。テンプレートは SQL クエリであり、テンプレートを実行するユーザーが入力するランタイムパラメーターを含めることができます。これらのパラメーターで、ユーザーは、クエリで使用するclean roomのテーブル、クエリで使用する列、 WHERE 句フィルターなどを指定します。clean roomで任意の SQL クエリを実行することはできず、 SQL クエリに評価されるテンプレートを作成し、そのテンプレートを実行する許可を相手側に求める必要があります。
Snowflakeには、ウェブアプリで使用する標準テンプレートがセットで用意されています。これらのテンプレートにより、オーディエンスの重複、オーディエンスのlookalike、在庫予測、および任意の SQL クエリなどの一般的なユースケースが可能になります。開発者は、clean roomで使用するカスタムテンプレートも作成できます。
テンプレートはclean room UI またはコードで実行できます。テンプレートの結果は表示またはダウンロードすることや、あるいは アクティベーション がそのclean roomで許可されていれば、プロバイダー、コンシューマー、および承認されたサードパーティと共有することもできます。
詳細
デフォルトでは、clean roomでテンプレートを実行できるのはコンシューマーだけです。ただし、プロバイダーはclean roomでの テンプレートの実行権限をコンシューマーに依頼 できます。
テンプレートとclean roomの構成には、クエリ結果に対して許可される操作を定義します。クエリ結果がclean room外にエクスポートされることを、 アクティベーション と呼びます。結果は、プロバイダーまたはコンシューマーのSnowflakeアカウント、または Snowflakeが承認したサードパーティ にアクティベートできます。
Clean roomのバリエーション¶
最も一般的なclean roomでは、上記で説明したように、プロバイダーがデータをインポートし、そのデータに対して実行できる1つ以上の特定のクエリと、その結果の共有方法を指定する場所です。また、コンシューマーが自分のデータをインポートし、結合されたデータに対して許可されたクエリを実行することもできます。ただし、プロバイダーは標準的なclean roomにさまざまなバリエーションを加えることができます:
プロバイダーからコンシューマーデータに対して独自のクエリを実行できます。デフォルトでは、clean roomでクエリを実行できるのはコンシューマーだけです。clean roomが有効な場合、プロバイダーはコンシューマーに対して、clean room内で指定したクエリを実行する許可をリクエストできます。
クエリ結果を、クエリを実行してるユーザーのSnowflakeアカウント、またはSnowflakeが承認したサードパーティアカウント (Meta Ads ManagerやThe Trade Deskなど) にエクスポート (アクティベート) できます。clean room外にデータをエクスポートするには、クエリするデータを共有しているすべての関係者の承認が必ず必要です。
いずれかの側が カスタムなPythonコードを追加し、 それを実行中のクエリから呼び出すことができます。このコードは通常、クエリの実行中に何らかの方法でデータのフィルターや操作を行います。ファイルの保存、データのエクスポート、その他の操作の実行など、外部の操作を行うことはできません。
クエリから 他のclean roomのデータにアクセス できますが、アクセスされるすべてのclean roomのプロバイダーの承認が必要です。
プロバイダーとコンシューマーについて¶
Clean roomのコラボレーターは、特定のclean roomの プロバイダー または コンシューマー のどちらかに分類されます。プロバイダーはclean roomを作成するアカウントで、コンシューマーはclean roomを共有されるアカウントです。clean roomを作成したのと同じアカウント内のユーザーを、そのclean roomのコンシューマーとして招待することはできません。同じSnowflakeアカウント内のすべてのユーザーに、そのアカウント内の同じclean roomのロール (プロバイダーまたはコンシューマー) が割り当てられます。
プロバイダーであるかコンシューマーであるかは、Snowflakeのロールやその他の権限ではなく、常にclean roomを作成したのか、共有されたかによって決定します。
プロバイダーとコンシューマーのロールについて、以降で詳しく説明します。
Tip
コラボレーター という用語が、コンシューマーまたは特定のclean roomにアクセスできるユーザーという意味で使われることもあります。
プロバイダー¶
プロバイダー は、clean roomを作成したアカウントです。そのアカウントからclean roomにアクセスするユーザーは、そのclean roomのプロバイダーとみなされます。
プロバイダーは以下のclean roomアクションを行います:
clean roomを作成、共有、削除する
コンシューマーとしてclean roomの使用を許可する人を指定する (コンシューマーの招待)
clean roomにデータをインポートする
clean roomで実行可能なテンプレートを定義する
コンシューマーによるclean roomでのカスタムテンプレート実行を許可するかどうかの指定
clean roomを共有するコンシューマーの招待
clean roomで使用するテンプレートの指定、およびclean roomへのカスタムテンプレートの作成
コンシューマーデータへのクエリ実行 (コンシューマーが同意した場合)
連鎖テンプレートの許可
Pythonスクリプトをclean roomに読み込み、テンプレートで使用する
このclean roomのプロバイダーデータが、コンシューマークエリで指定された他のclean roomのデータでクエリされることを許可する
clean roomまたはコンシューマーの差分プライバシーを有効化または無効化する
clean roomのバージョンを管理する
自分のデータに列および結合ポリシーを設定する
コンシューマー¶
コンシューマー は、プロバイダーからのclean roomへの参加 (インストール) の招待を受けて拡張されたアカウントです。
コンシューマーは以下のclean roomアクションを (clean room構成に従って) 実行します:
アカウントのclean roomに参加 (インストール) する
データをclean roomにインポートする
clean roomがサポートするクエリを実行する
clean roomで許可された場合にクエリ結果をエクスポートする
clean roomで自分のテンプレートを使用する権限をリクエストする
プロバイダーによるclean roomでのテンプレート実行を許可するかどうかを指定する (デフォルトでは、コンシューマーだけがテンプレートを実行できます)
clean roomのプロバイダーからコンシューマーのデータに対するクエリ実行を許可する
複数のclean roomから、自分とプロバイダーのデータを参照するクエリを実行する (すべてのclean roomのプロバイダーが同意した場合)
clean roomにPythonスクリプトを読み込む (プロバイダーから権限を得た場合)
自分のデータに列および結合ポリシーを設定する
プロバイダーが実行するクエリの差分プライバシーを設定する
Snowflakeデータclean roomへのアクセス方法¶
Snowflake Data Clean Roomには、clean roomの作成し管理するために、ノーコードのブラウザベースアプリケーション (clean room UI)、および API が用意されています。現状で、clean room UI と API の機能は、まったく同じではありません。以下にその違いを示します:
UIのみの機能 |
APIのみの機能 |
---|---|
|
|
ウェブアプリでclean roomを作成し、 API で使用または管理することも (その逆も) できます。
Clean room UI¶
Snowflake Data Clean Roomは、ブラウザで管理および実行できます。clean room UI を使用し、プロバイダーまたはコンシューマーとしてclean roomを作成、管理、使用したり、管理アカウント、サードパーティコネクタ、 UI ユーザー向け機能など、さまざまなアカウントレベルの機能を構成したりできます。
権限とアクセス: clean room UI を使用するには、clean room管理者からアクセスを許可 される必要があります。
clean room UI にログインするたmに、メールアドレス、名前、パスワードが必要です。メールアドレスはSnowflakeアカウントのメールアドレスと同じである必要はなく、clean room管理者が指定します。ユーザー名とパスワードは自分で決めます。
Snowflakeのウェブアプリケーションである Snowsight からclean room UI へのアクセスは、別の URL で行われます。その URL はアカウントごとに異なります。
clean room UI を使ってみたい方は、 clean room UI チュートリアル をお試しいただくか、 clean room UI の詳細をご覧ください。
API¶
Snowflakeには、clean roomを作成または実行するためのストアドプロシージャが多数用意されています。これらのプロシージャは、Snowsightノートブックやワークシート、またはSnowflakeアカウントでストアドプロシージャを実行できるその他のコマンドラインインターフェイスから呼び出すことができます。
これらのプロシージャにより、プロバイダーまたはコンシューマーとしてclean roomを作成、管理、使用するために必要な操作のほとんどを実行できます。API では管理者の操作は行えません。clean roomを管理するには、ウェブアプリを使用する必要があります。API のリファレンスドキュメントをお読みください。
権限とアクセス: API を使用するには、Snowflake アカウントのclean room管理者から samooha_app_roleを使用するためのアクセス許可 を付与される必要があります。
clean room API の説明をご覧になるか、 または API チュートリアル をお試しください。
Snowflakeアカウントにclean room環境がインストールされていない場合¶
以降では、clean room UI または API がアカウントにインストールされているかどうかを確認する方法を説明します:
Snowsightで、 Data Products » Apps » Installed Apps を開き、Snowflake Data Clean Roomsがインストールされているかどうかを確認します。
SHOW ROLES LIKE 'SAMOOHA_APP_ROLE';
を実行して、 API がアカウントにインストールされているかどうかを確認します。SELECT IS_ROLE_IN_SESSION('SAMOOHA_APP_ROLE');
を実行して、 API にアクセスできるかどうかを確認します。SHOW GRANTS ON ROLE SAMOOHA_APP_ROLE;
を実行して、どのロールが SAMOOHA_APP_ROLE を付与できるかを確認します。