Snowflake Data Clean Roomsの概要¶
このトピックでは、コラボレーションを構成するコンポーネントの全体的なガイドを提供し、Snowflake Data Clean Roomコラボレーションを作成または使用する際の基本的な手順の概要を説明します。
要件¶
Snowflake Data Clean Roomsの最新バージョンに更新済み である必要があります。
コラボレーションを表示または管理するためには、Data Clean Rooms Collaboration API へのアクセスが必要です。詳細については、 コラボレーション、リソース、データへのアクセスの管理 をご参照ください。
データプロバイダーはSnowflake Enterprise Editionを使用する必要があります。所有者と分析実行者はStandard Editionを使用できます。
Snowflake Standard Editionを使用する場合、ポリシーが適用されたデータクリーンルームを介してデータを共有することはできません。ただし、他のコラボレーターからのデータ提供にアクセスすることはできます。または、ポリシーを使用せずに、またはデータを共有しないで 独自のデータを使用 できます。
別のSnowflakeアカウントに対して 結果をアクティブ化する には、Snowflake Enterprise Editionを使用する必要があります。
トライアルアカウントは Snowflake Data Clean Rooms をサポートしていません。
コラボレーションにおけるロールとリソース¶
コラボレーションの使用方法を理解するには、まずコラボレーションロールとコラボレーションリソースについて理解する必要があります。
コラボレーションのロール¶
コラボレーションでは、以下のロールを使用できます。これらのロールは、コラボレーターの大まかな機能を定義します。
所有者: 所有者は、コラボレーションを定義、作成、所有し、招待されるコラボレーターとコラボレーションのロールを定義します。所有者は、自動的に分析実行者やデータプロバイダーになることはなく、昇格された実行権限も持ちません。所有者の主な役割は、クリーンルームを作成し、コラボレーションロールを割り当て、誰が誰とデータを共有できるかを決定し、クリーンルームを解体することです。1つのコラボレーションにつき所有者は1人までです。
データプロバイダー: テーブルやビューなどのデータ提供をコラボレーションに提供し、それらを使用できる分析実行者を指定します。つまり、コラボレーションの仕様で指定されているように、アカウントAはアカウントBとCに対するデータプロバイダーです。
分析実行者: コラボレーションの仕様で指定されているように、許可されたデータ提供で許可されたテンプレートを実行します。
これらのロールは、コラボレーションの作成に使用されるコラボレーション仕様で指定されます。
コラボレーターには複数のコラボレーションロールを割り当てることができ、(所有者ロールを除いて)コラボレーションロールを複数のコラボレーターに割り当てることができます。
詳細
コラボレーションリソース¶
コラボレーションには、データ提供、テンプレート、コードバンドルなどのリソースが含まれます。すべてのリソースおよびコラボレーション自体は、 YAML 仕様で定義されます。
コラボレーションは以下のタイプのリソースをサポートします。
テンプレート: 分析実行者がコラボレーションで実行できる JinjaSQL クエリ。テンプレートの種類に応じて、結果は直接配信されるか、指定されたコラボレーターのSnowflakeアカウントに*アクティブ化*(保存)されます。分析実行者は、実行時にテンプレートに値を渡すことで、列名、 WHERE 句、その他のクエリ要素に使用されたテンプレート変数を置き換えることができます。
データ提供: 特定の分析実行者を持つデータプロバイダーによって共有される1つ以上のテーブルのパッケージ。データ提供は、スナップショットではなくソースデータのライブビューであり、その仕様は公開される列とどのポリシーが適用されるかを制御します。
コードバンドル: テンプレートから呼び出すことができるカスタムPython関数またはプロシージャのセット。コードバンドルを使用すると、機械学習モデルやカスタム変換などのユーザー定義ロジックでテンプレートの機能を拡張できます。
クリーンルームの仕様例¶
以下は、2人の参加者( alice (アカウント corp1.acct123 のエイリアス)および bob (アカウント corp2.acctxyz のエイリアス))が関与する基本的なクリーンルームの YAML 仕様です。仕様では、各ユーザーにロールが割り当てられ、2つのデータ提供がコラボレーションにリンクされます。
このシンプルなコラボレーションには、以下のリソースとコラボレーションロールが含まれます。
aliceはコラボレーションの所有者、分析実行者、自身およびbobのデータプロバイダーです。bobは分析実行者で、自分では なくaliceのデータプロバイダーです。aliceはtemplate1を実行でき、bobはtemplate2を実行できます。
このコラボレーションに関するその他の注意点:
コラボレーションがこの仕様から作成された後は、新しいコラボレーターを追加することはできません。
aliceおよびbobの両方は新しいテンプレートを追加し、他のコラボレーターと共有することができます。ロールは変更できないため、
bobは、後から自分自身のデータプロバイダーになることはできません。データプロバイダーは、コラボレーションが作成された後でも、データ提供リストにデータ提供を追加したり、削除したりできます。
基本的なクリーンルームコラボレーションワークフロー¶
以下は、簡単なクリーンルームコラボレーションシナリオです。
コラボレーションの所有者は、オプションで、コラボレーションの初期構成に表示したいテンプレートやデータ提供を登録します。
所有者は、オプションで、意図したコラボレーターに対して、コラボレーションの初期構成に表示したいテンプレートやデータ提供を登録するよう依頼します。その後、コラボレーターは、登録したアイテムのリソース IDs を通知します。
次に、所有者がコラボレーションを作成します。コラボレーション仕様は、コラボレーター、そのロール、およびコラボレーションの初期状態で利用可能なリソースを定義します。
この時点で、コラボレーターのセットとコラボレーションロールが固定されます。
コラボレーションに他のクラウドホスティングリージョンのコラボレーターが含まれている場合、そのユーザーがコラボレーションを確認して参加するには アカウントでクロスクラウド自動フルフィルメントを有効にする 必要があります。
コラボレーションが作成されると、コラボレーション仕様のすべてのコラボレーターに表示され、参加可能になります。
コラボレーターは、コラボレーションを確認して参加します。
コラボレーターは、ロールに応じて、オプションで リソースをコラボレーションにリンク します。データプロバイダーは、データ提供を分析実行者にリンクすることができます。どのロールでもテンプレートの追加をリクエストし、他のコラボレーターと共有することができます。
分析実行者は、コラボレーションで共有されたデータ提供を使用して、コラボレーションで共有されたテンプレートを実行できます。分析のコストは分析実行者が負担します。テンプレートはクエリ結果を応答で返すか、呼び出し元または別のコラボレーターに対してアクティブ化 します。
詳細
データクリーンルームドキュメントの Use cases セクションで追加の例をご参照ください。
コラボレーションの作成¶
適切な権限を持つSnowflakeデータクリーンルームユーザーは、クリーンルームを作成できます。クリーンルームは、 YAML 仕様を使用して定義されます。これは、コラボレーションにおけるすべてのコラボレーターとその相対的なロール、およびコラボレーションの初期構成に存在するリソースを決定するものです。(リソースの所有者は、リソースを使用する前に参加する必要があります。)リソースはコラボレーションの作成後に追加または削除できますが、コラボレーターのリストとその相対的なロールはコラボレーションの作成後に固定されます。
コラボレーションはバージョン管理されません。リソースの追加や削除によってコラボレーションは変更されることもありますが、それらの変更は追跡されません。
コラボレーションへのリソースの追加¶
コラボレーションは、テンプレート、データ提供、コードバンドルなどのリソースにアクセスできます。コラボレーションでリソースを使用するには、まずコラボレーションクリーンルーム環境に*登録*し、特定のコラボレーションに*リンク*する必要があります。
登録 はアカウントレベルのアクションです。リソースをパッケージ化してクリーンルーム環境にコピーし、そのリソースを参照するために使用される ID を返します。リソースは、アカウントのデフォルトレジストリ、またはアカウントのユーザーが作成したカスタムレジストリのいずれかのレジストリに登録されます。デフォルトのレジストリは、 READ REGISTRY 権限を持つアカウントのコラボレーターであれば誰でも利用できます。カスタムレジストリは、レジストリ作成者によってアクセス制御できます。
リンク は、特定のコラボレーションに登録されたリソースを共有します。具体的には、特定のコラボレーションの特定のコラボレーターセットと登録されたリソースを共有します。リソースをコラボレーションの作成に使用したコラボレーション仕様に追加することで、リソースをリンクできます。もしくは、適切なコラボレーション API プロシージャを呼び出してコラボレーションにリソースをリンクできます。
リソースは、コラボレーションの作成前または作成後にコラボレーションに追加できます。
コラボレーションとは異なり、リソースはバージョン管理されています。リソースの新しいバージョンが古いバージョンを上書きすることはありません。リソースを新しいバージョンに置き換えたい場合は、コラボレーションを更新して、古いバージョン(選択した場合)を削除し、新しいバージョンを追加する必要があります。
リソースを登録するアカウントはコラボレーターである必要があり、登録したリソースがコラボレーションで利用可能になる前にコラボレーションに参加する必要があります。
コラボレーションへの参加¶
コラボレーションは、コラボレーション仕様にリストされているすべてのコラボレーターに表示されます。作成者を含むすべてのコラボレーターは、コラボレーションに参加する必要があります。所有者を除くすべてのコラボレーターは、参加する前にコラボレーションを確認する必要があります。コラボレーションを確認すると、招待された関係者にコラボレーション仕様が公開されます。コラボレーションを確認した後、招待者はコラボレーションに参加できます。コラボレーションに提供したリソースが使用可能になる前に、コラボレーションに参加する必要があります。
コラボレーションで GET_STATUS を呼び出すことで、参加ステータス(招待済み、参加中、参加済み)を見ることができます。リソースのリンク、コラボレーションへの参加、結果のアクティブ化などのほとんどのコラボレーション変換アクションは、非同期的であるか、他のコラボレーターへの伝播に時間がかかる可能性があるため、適切なプロシージャを呼び出して変更の状態を確認する必要があります。
分析の実行¶
コラボレーションで分析実行者としてリストされたコラボレーターは、コラボレーションで利用可能なデータ提供に対してクエリを実行することができます。
コラボレーションは、以下のタイプの分析をサポートします。
テンプレート化された分析クエリ:分析実行者は、コラボレーションで割り当てられたテンプレートを実行し、結果を同期的に確認することができます。
アクティベーション分析:データ提供、コラボレーション、テンプレートで許可されている場合、分析実行者は指定されたコラボレーターのSnowflakeアカウントに結果を*アクティブ化*(保存)することができます。
自由形式 SQL 分析:コラボレーションとデータ提供で許可されていれば、分析実行者は SQL クエリをデータ提供のデータに対して直接実行できます。自由形式の SQL クエリ をご参照ください。
コラボレーションの終了または削除¶
あなたはいつでもコラボレーションを終了できますが、コラボレーションの所有者はコラボレーションを終了できず、代わりに全員のコラボレーションを削除します。
非所有者がコラボレーションを終了するには、LEAVE を呼び出します。提供したすべてのデータ提供がコラボレーションから削除されます。コラボレーションをいったん終了すると、再び参加できません。
コラボレーションの所有者はコラボレーションを終了できません。所有権を譲渡することはできません。コラボレーションの所有者は、TEARDOWN を呼び出して、すべてのコラボレーターのコラボレーションをドロップできます。
コラボレーションの終了や削除は非同期です。GET_STATUS を呼び出してステータスをモニターし、GET_STATUS でステータスが LOCAL_DROP_PENDING として表示される場合は、LEAVE または TEARDOWN を再び呼び出す必要があります。
コラボレーションを削除しても、コラボレーションにリンクされているリソースの登録ステータスには影響しません。これらのリソースは、引き続き使用したり、新しいコラボレーションにリンクしたりできます。