基本的なマルチパーティコラボレーション¶
概要¶
このトピックでは、基本的なマルチパーティコラボレーションを作成するためのステップについて説明します。テンプレートとデータ提供の登録方法、コラボレーションの初期バージョンにデータを追加する方法、コラボレーションの作成後にコラボレーターがリソースを追加する方法を示します。また、コラボレーションでテンプレートとデータリソースを使用してクエリを実行する方法も示します。
基本的なクリーンルームコラボレーションワークフロー¶
基本的なマルチパーティクリーンルームコラボレーションシナリオを示します。
コラボレーションの 所有者 は、コラボレーションの初期構成に表示したいテンプレートやデータ提供を登録します。
所有者は、オプションで、意図したコラボレーターに対して、コラボレーションの初期構成に表示したいテンプレートやデータ提供を登録するよう依頼します。コラボレーターは、登録されたアイテムのリソース IDs を所有者に提供します。
次に、所有者が コラボレーションを作成します。コラボレーションは、コラボレーター、そのロール、およびコラボレーションの初期バージョンに存在すべきすべてのリソースをリストしたコラボレーション YAML 仕様によって定義されます。
コラボレーションが作成されると、コラボレーターのセットとコラボレーションロールが固定されます。
コラボレーションロールが許可していれば、コラボレーション作成後にコラボレーターが追加のリソースを追加することができます。
コラボレーションが他のクラウドホスティングリージョンのユーザーとデータを共有する場合、共有者は アカウントでクロスクラウドの自動フルフィルメントを有効にする 必要があります。
コラボレーターは、コラボレーションを確認して参加します。
コラボレーターは、コラボレーションロールに応じて、オプションでテンプレートやデータ提供などの コラボレーションに追加リソースをリンクする ことができます。追加のリソースは、いつでもコラボレーションに追加できます。
分析実行者は、コラボレーションで利用可能なデータを使用して 割り当てられたテンプレートを実行 することができます。分析のコストは分析実行者が負担します。テンプレートはクエリ結果を応答で返すか、 呼び出し元または別のコラボレーターに対してアクティブ化 します。
次のセクションでは、これらの各手順の詳細について説明します。
コラボレーションの作成¶
コラボレーションを作成するには、 コラボレーション仕様 を設計して、すべてのコラボレーターと それらのロール を定義します。
コラボレーションが作成されるとすぐにリソースを利用できるようにする場合は、コラボレーションの所有者がコラボレーションを作成する前に それらを登録してリンクし、コラボレーション仕様にリソース IDs を含めます。
コラボレーターからのリソースの使用を予定している場合、所有者はそれらのユーザーにリソースを登録し、コラボレーション仕様に含めるリソース IDs を所有者に伝えるよう依頼することもできます。所有者は、リソースが現在はリンクされていないが、将来リンク可能であることをコラボレーション仕様で示します。
次に、所有者は INITIALIZE を呼び出してコラボレーションの作成を開始します。デフォルトでは、INITIALIZEは所有者もコラボレーションに自動的に参加させます。これは非同期プロセスであるため、所有者はステータスが JOINED になるまで GET_STATUS を呼び出す必要があります。
次のスニペットは、コラボレーションの作成と結合を示しています。
スクリプトに関する注意:
コラボレーションは、エイリアス
aliceおよびbobを持つ2人のコラボレーターで構成されます。エイリアスを使用する場所であればどこでも完全なデータ共有 ID を使用できますが、その場合はユーザーにとって非常に使いにくくなります。aliceは、所有者です。aliceおよびbobはどちらも分析実行者です。aliceおよびbobは、互いにデータプロバイダーです。データプロバイダーの場合は、
data_offeringsフィールドを含める必要があります。このフィールドは入力するか空にすることができます。これは、データ提供が現在はありませんが、後で追加できることを示します。aliceはbobまたは自身にデータを提供していません。ただし、後で提供できます(行14、22)bobは既にデータ提供を登録しており、初期コラボレーション(行16)で自身に提供しています。bobはaliceにデータを提供していません。ただし、後で提供できます(行24)aliceとbobのどちらにもまだ利用可能なテンプレートはありませんが、後で割り当てることができます(行18、25)``templates`` フィールドは、分析実行者にはオプションです。初期化の際にこのフィールドを省略しても、コラボレーターは後でこの分析実行者にテンプレートを割り当てることができます。
コラボレーションへのリソースのリンク¶
コラボレーターは、コラボレーションロールに応じて、リソースをコラボレーションにリンクしたり、リンクしたリソースを削除したりすることができます。リソースをコラボレーションにリンクするには、2つのステップがあります。
リソースの所有者は追加するリソースの リソース定義仕様 を作成し、それを使用してリソースをアカウントに登録します。リソースはアカウントの デフォルトレジストリ に登録するか、または、カスタムレジストリを使用できます。
コラボレーターは、リソースをコラボレーションにリンクします。リソースをコラボレーションにリンクさせるには、コラボレーションの作成時に、コラボレーションの作成に使用される YAML 定義にリソース ID をハードコーディングするか、コラボレーションが作成され参加した後で、リソースをコラボレーションにリンクさせる適切なプロシージャを呼び出すかのいずれかの方法があります。
リソースがリンクされると、指定されたコラボレーターが使用できるようになります。テンプレートなど、一部のリソースタイプは、どのコラボレーターでもリンクできます。データ提供などのその他のリソースは、データプロバイダーのロールを持つユーザーのみがリンクできます。ただし、提供したリソースがコラボレーションで利用可能になる前に、コラボレーションに参加する必要があることに注意してください。
他のクラウドホスティングリージョンのユーザーとデータを共有する場合、共有者は アカウントでクロスクラウドの自動フルフィルメントを有効にする 必要があります。
リソースはコラボレーション仕様で指定されたコラボレーターのみが利用できます。
注釈
リソースのリンクや削除など、既存のコラボレーションの更新は非同期であり、完了までに時間がかかります。VIEW_UPDATE_REQUESTS を呼び出して更新のステータスを確認します。完全に利用可能になる前にリソースを使用すると、一貫性のない動作が発生する可能性があります。
リソースはバージョン管理をサポートしています。ただし、新しいバージョンを持つ新しいリソースを作成しても、以前のバージョンはコラボレーションから削除されません。リソースには、ユーザーが提供する名前とバージョン(およびデータ提供の場合はエイリアス)を組み合わせることにより、一意の名前が付けられます。
コラボレーションでのリソースの使用についての詳細は、 リソース をご参照ください。
コラボレーションをレビューして参加する¶
リソースを共有し、コラボレーションで分析を実行するには、コラボレーションに参加する必要があります。
作成者 は、
auto_join_warehouseが提供されている場合、 INITIALIZE を呼び出すと自動的に参加します。auto_join_warehouseが提供されていない場合、作成者は INITIALIZE が完了した後に JOIN を呼び出します。非作成者 は REVIEW と JOIN を呼び出します。
REVIEW はコラボレーションとそのリソースの概要を返します。REVIEW は1回のみ呼び出すことができます。
JOIN はコラボレーションクリーンルームをアカウントにインストールし、コラボレーションに参加します。
INITIALIZE および JOIN はどちらも、完了するまでに数分かかる非同期プロシージャです。各ステップがいつ完了するかを確認するには、 GET_STATUS を呼び出す必要があります。
重要
アカウントのクラウドホスティングリージョンがコラボレーション所有者と異なる場合、 REVIEW は、追加の非同期セットアップステップをトリガーします。設定が完了したことを示す成功の応答が返されるまで、REVIEW を繰り返し呼び出します。
参加は非同期プロセスです。GET_STATUS を呼び出して、ステータスが JOINED としてリストされたことを確認してください。
分析の実行¶
コラボレーションで分析実行者ロールを持つ場合、コラボレーションで共有されたデータソースに対して分析を実行することができます。
コラボレーションは、2種類のクエリをサポートしています。
テンプレート分析。 これらのクエリはコラボレーションにリンクされたテンプレート(テンプレート化された JinjaSQL ステートメント)を実行します。テンプレートは、結果をすぐに返す分析テンプレートと、指定した参加者のSnowflakeアカウントに結果を保存するアクティベーションテンプレートのいずれかです。
自由形式 SQL クエリ。 データプロバイダーによって許可されている場合は、コラボレーターの認証情報でサインインしたときに SQL を使用して指定されたデータ製品にアクセスできます。コラボレーションによって公開される完全修飾ビュー名にアクセスすることで、コラボレーション API プロシージャを呼び出すことなく、 SQL クエリを直接実行できます。
分析実行のコストは分析実行者が負担します。
テンプレートを実行できるか、結果をアクティブ化できるか、自由形式の SQL クエリを実行できるかは、コラボレーション仕様によって決まります。何ができるか、およびどのデータとテンプレートを使用可能かは、コラボレーション仕様に記載されています。
注釈
データソースの列は、テンプレートやユーザーに公開されると、新しい名前になる可能性があります。ソース列の名前がいつ、どのように変更されるかについて詳しくは、ソース列の名前変更 を参照してください。列の名前が変更された場合、テンプレートとユーザー指定の引数(結合列名など)では、元の名前ではなく変更後の名前を使用する必要があります。
これらすべての分析タイプについては、次のセクションで詳しく説明します。
テンプレートからの分析実行¶
テンプレートから分析を実行するには、実行できるテンプレートのリストを表示し、使用できるデータ提供のリストを表示して、 RUN を呼び出します。値は個別のパラメーターとして、または YAML 形式の分析仕様として指定します。
実行構成の source_tables フィールドに渡したテーブルは、テンプレートの source_table パラメーターに自動的に設定されます。テンプレートの my_table パラメーターは、独自のデータでSnowflake Standard Editionを使用している場合を除き、入力または使用されません。
注釈
リソースのインストールは非同期です。テンプレートがインストールされたばかりの場合、実行できるようになるまでに少し時間がかかることがあります。テンプレートにコードバンドルが含まれている場合は、テンプレートが利用可能になるまでに追加の時間がかかることがあります。コードバンドルが利用可能かどうかを判断する方法をご参照ください。
次の例では、ユーザーがアクセスできるデータ提供とテンプレートをリストし、 sales_join_template テンプレート(VIEW_TEMPLATES によってリストされると想定しています)を使用して分析を実行し、5つの名前付き引数をテンプレートに渡します。
データに対して自由形式の SQL クエリを有効にする¶
データプロバイダーは、分析実行者にデータ提供に対する任意の SQL クエリを実行する権限を付与できます。これは、分析実行者がデータ提供に対してテンプレートを呼び出すことなく、任意の SQL クエリを実行できることを意味します。
自由形式 SQL クエリについては、 自由形式の SQL クエリ をご参照ください。
Standard Editionの使用時に、自分のデータを使用して分析を実行する¶
Standard Editionを使用している場合は、標準の方法 で分析を実行できます。ただし、データをコラボレーションにリンクして、他のユーザーと共有することはできません。独自のデータセットをテンプレートに渡す唯一の方法は、ここで説明するテクニックを使うことです。
Snowflake Standard Editionでのコラボレーションで独自のデータを使用するには
REGISTER_DATA_OFFERING を呼び出してデータ提供を登録します。
LINK_LOCAL_DATA_OFFERING を呼び出し、データをコラボレーションにリンクして使えるようにします。他のコラボレーターは、ローカルでリンクされたデータを表示したりアクセスしたりすることはできません。
RUN を呼び出す際はデータ提供 ID を使用します。
パラメーター化されたバージョンの RUN を使用している場合は、データ提供 IDs を
local_template_view_namesパラメーターに渡します。YAML バージョンの RUN を使用している場合、リクエストの
local_view_mappings.my_tablesスタンザにデータ提供 IDs を提供しますパラメーター化されたバージョンの RUN を使用している場合は、データ提供 IDs を
local_template_view_namesパラメーターに渡します。Tip
local_template_view_namesおよびlocal_view_mappings.my_tablesはテンプレート内のmy_tableパラメーターを設定します。
次の例は、実行プロシージャの YAML 形式バージョンを使用してテンプレートを実行する方法を示しています。この例には、my_tables フィールドが含まれており、LINK_LOCAL_DATA_OFFERING を呼び出して入力します。
結果をアクティブ化¶
データプロバイダーとコラボレーション仕様が許可していれば、分析結果を自分のSnowflakeアカウント、または指定したコラボレーターのSnowflakeアカウントに保存することができます。テンプレートは、結果をアクティブ化するか、結果を即座に返すかのいずれかであり、両方ではありません。
アクティベーションの詳細については、 クエリ結果のアクティベーション をご参照ください。
コラボレーションの終了または削除¶
非所有者がコラボレーションを終了するには、LEAVE を呼び出します。提供したすべてのデータ提供がコラボレーションから削除されます。コラボレーションをいったん終了すると、再び参加できません。
コラボレーションの所有者はコラボレーションを終了できません。所有権を譲渡することはできません。コラボレーションの所有者は、TEARDOWN を呼び出して、すべてのコラボレーターのコラボレーションをドロップできます。
どちらのプロセスも非同期です。GET_STATUS を呼び出してステータスをモニターし、GET_STATUS でステータスが LOCAL_DROP_PENDING として表示される場合は、LEAVE または TEARDOWN を再び呼び出す必要があります。
例¶
次の SQL の例では、基本的なコラボレーションの作成と実行方法を示しています。
二者間のコラボレーションの例¶
次の例は、二者間のコラボレーションを示しています。1人目(「alice」という名前)は、コラボレーションの作成者であり、自分自身と「bob」へのデータプロバイダーであり、分析実行者です。「bob」は自分自身と「alice」へのデータプロバイダーであり、分析実行者でもあります。
次の例は、次のアクションを示しています。
コラボレーションの作成。
テンプレートとデータ提供の登録。
コラボレーション作成時のテンプレートとデータ提供の追加。
コラボレーションへの参加。
追加のリソースを既存のコラボレーションにリンクします。
分析の実行。
この例を実行するには、Snowflake Data Clean Rooms がインストールされた2つの別々のアカウントが必要です。
ファイルをダウンロードしてSnowflakeアカウントにアップロードするか、Snowsight を使用してサンプルコードを2つの別々のアカウントのワークシートにコピーして貼り付けることができます。
ソース SQL ファイルをダウンロードした後、 Snowflake Data Clean Rooms がインストールされた2つの別々のアカウントにアップロードします。
ダウンロード:
コラボレーション所有者「alice」ワークシート </samples/clean-rooms/demo-collaboration-hub-alice.sql>ダウンロード:
コラボレーションメンバー「bob」ワークシート </samples/clean-rooms/demo-collaboration-hub-bob.sql>
単独当事者コラボレーションの例¶
この例では、テスト用に1つのアカウントしかない場合に、コラボレーションを作成して使用する方法を示します。
この例では、データ提供とテンプレートでコラボレーションを作成し、コラボレーションの作成後に別のデータ提供とテンプレートを追加し、分析を実行しています。
ファイルをダウンロードしてSnowflakeアカウントにアップロードするか、 Snowsight を使用してサンプルコードをコピーしてワークシートに貼り付けることができます。
ソース SQL ファイルをダウンロードしてから、 Snowflake Data Clean Rooms がインストールされたSnowflakeアカウントにアップロードします。