データ提供¶
データ提供 とは、コラボレーションの特定の分析実行者と共有される1つ以上のビューのセットであり、 データセット と呼ばれます。コラボレーション仕様 で自分がデータプロバイダーとして定義されている分析実行者とデータを共有することができます。
データ提供は、ソースデータのライブビューであり、データ提供が登録されたときのデータのスナップショットではありません。ソースデータに適用されるすべてのSnowflakeポリシーは、データ提供で有効です。
データ提供を登録すると、データ提供仕様 にリストされた各データソースのビューが作成されます。ビューには、データ提供仕様にリストされた列 のみ が含まれます。特定の列は、カテゴリに応じて、このステージで 名前が変更される可能性があります 。
さらに、データ提供をコラボレーションにリンクすると、Snowflakeは コラボレーション仕様 に従って、登録されたビューのコピーを作成し、ビューへのアクセスを特定の分析実行者に制限します。
重要
基になるテーブルを移動、名前変更、またはアクセス許可を変更すると、データ提供は以前に登録されたリンクで使用できなくなります。
Snowflake Standard Editionを使用する場合、ポリシーが適用されたデータクリーンルームを介してデータを共有することはできません。したがって、自分のアカウントのユーザーであっても、他の関係者とデータを共有したり、データ提供で指定されたデータクリーンルームポリシーを活用したりすることはできません。ただし、他のコラボレーターからのデータ提供にアクセスすることはできます。または、ポリシーを使用せずに 独自のデータをローカルデータ提供として使用 できます。
データ提供の要件:
共有するデータに対する、 GRANT OPTION を有する REFERENCE_USAGE 権限が付与されている必要があります。そうでないと、登録して、コラボレーションに参加しようとしたとき、またはデータをリンクするときに、 「参照使用許可がありません」 というエラーが表示されます。
コラボレーションの データプロバイダーコラボレーションロール が必要です。
現在、コラボレーションを作成または結合したアカウントロールのみがデータをコラボレーションにリンクしたり、リンク解除したりできます。
続けて読んで、データ提供を登録し、コラボレーションにリンクする方法をご参照ください。
データ提供の登録¶
データの データ提供仕様 を作成します。データ提供について以下の詳細を指定します。
データ提供内の各データセットのソースオブジェクト。
各データセットに含まれる列。
各列の型(結合またはその他)。これは クリーンルームのポリシー の入力に使用されます。場合によっては、個別の列の形式も指定します。
データ提供の列に適用する任意のSnowflake データ保護ポリシー 。
ユーザーがデータにアクセスする方法: テンプレートのみ、または 自由形式 SQL クエリ 。
REGISTER_DATA_OFFERING を呼び出してデータ提供を登録します。データ提供 ID が返されます。
このステップにより、レジストリへの読み取りアクセス権を持つアカウント内の任意のロールによって、データ提供をコラボレーションにリンク できるように なります。同じデータ提供 ID を使用してデータ提供を複数のコラボレーションで共有できます。
データ提供をリンクする¶
リンクのプロセスは、コラボレーションが作成されているかどうかに応じて異なります。
コラボレーションがまだ作成されていない場合 、データプロバイダーは、データ提供 ID を コラボレーション仕様 に含まれるコラボレーション所有者に提供できます。コラボレーション仕様にデータ提供が含まれている場合、データ提供 ID はコラボレーションに参加する前に、データプロバイダーが確認するためにコラボレーション仕様に表示されます。
コラボレーションがすでに作成済みである場合、データプロバイダーはコラボレーションに参加し、データ提供 ID、コラボレーション名、およびデータ共有者を指定して LINK_DATA_OFFERING を呼び出します。データ提供がリンクされた後、データ提供が使用可能になるまでに少し時間がかかる場合があります。リンクデータ提供リクエストが正常に完了したことを確認する場合は、 VIEW_UPDATE_REQUESTS を呼び出します。リンクが成功すると、データ提供が表示され、 VIEW_DATA_OFFERINGS を呼び出すと使用できるようになります。
データをリンクするときに、データにアクセスできる分析実行者を指定します。
データプロバイダーは、 UNLINK_DATA_OFFERING を呼び出すことで、コラボレーションまたは特定のコラボレーターからデータ提供を削除できます。
アカウントで登録済みデータ提供を表示するには、 VIEW_REGISTERED_DATA_OFFERINGS を呼び出します。
Tip
データ提供は、データ提供を登録したユーザーがコラボレーションに参加するまで、コラボレーションでは表示されません。
分析の実行方法を学ぶには、 分析の実行 をご参照ください。
ソース列の名前変更¶
データ提供の列名は、分析実行者に公開する前に名前を変更できます。名前の変更は、この表に示されているように、 データ提供仕様 の列を定義する category および column_type 値によって異なります。
列 |
新しい列名 |
|---|---|
|
|
|
|
|
元の列名が使用されます。 |
たとえば、ソーステーブルの列の名前が user_email_address の場合、この列が分析実行者にどのように公開されるかは、データ提供仕様でどのように定義されているかによって異なります。
データ提供の仕様 |
列の参照方法 |
|---|---|
|
データ提供へのデータ保護ポリシーの適用¶
クリーンルームで共有されるデータは、いくつかの方法で保護されます。
クリーンルーム環境に登録されたデータは、データ提供仕様にリストされていない列を省略するセキュアビューとして作成されます。
セキュアビューは、コラボレーション仕様で指定された特定のユーザーおよびテンプレートとのみ共有されます。
データにSnowflakeポリシーを追加して、データの使用方法をさらに管理できます。
データクリーンルームのテンプレートポリシー も、データ提供列の分類に基づいて適用されます。
結合 または 集約 ポリシーなどのSnowflakeデータ保護ポリシーを共有データに適用するには、2つの方法があります。
ソースデータにポリシーを適用します。 ソースデータに適用されたポリシーが、コラボレーションで公開されるデータセットに適用されます。ポリシーをコラボレーターに伝えます。
自由形式のクエリで使用するときに、データ提供にポリシーを適用します。 データ提供で自由形式のクエリを許可すると、データ提供仕様でそれらのクエリに適用するポリシーを指定できます。これらのポリシーは、ソーステーブルに設定されている既存のSnowflakeポリシーよりも優先されて適用されます。
ソースデータにSnowflakeポリシーを適用する¶
ソースデータに適用されたSnowflakeポリシーは、コラボレーションのデータ提供ビューにも適用されます。
ソースデータにSnowflakeポリシーを適用する場合は、それらをコラボレーターに知らせて、結合できない列で結合するクエリや集約要件を満たしていないクエリを知らずに実行しないようにしてください。データ提供の description フィールドにはどのSnowflakeポリシーでも記載できます。
重要
Snowflakeデータポリシーが設定されているデータ提供を登録する場合は、それらのポリシーの対象とならないロールを使用するか、データが登録されるまでポリシーを一時停止する必要があります。
これは Snowflake Data Clean Rooms が登録プロセスの一環として、ソーステーブルに対して検証クエリを実行するためです。テストクエリが意味のある結果を返さない場合は、登録が失敗します。Snowflakeデータポリシーによっては、テストが失敗することがあります。たとえば、テーブルに集約ポリシーがあり、検証クエリが集約ポリシーの最小グループサイズ要件を満たすのに十分な行を返さない場合があります。
データ提供にSnowflakeポリシーを適用する( 自由形式のクエリの使用時のみ )¶
Snowflakeポリシーをソースデータに適用せずに、 自由形式のクエリ を介してアクセスするときに共有データに適用できます。これらのポリシーは、ソーステーブルに直接適用されるSnowflakeポリシーに加えて適用されます。
自由形式の SQL ポリシーをデータに追加するには:
次の情報をデータ提供の仕様に追加します。
allowed_analyses: template_and_freeform_sqlを設定します。freeform_sql_policiesセクションをデータセットエントリに追加します。freeform_sql_policiesの下に適切なポリシータイプセクションを追加して、作成したSnowflakeポリシーと、それらを適用するコラボレーション列をリストします。以下は、サポートされているポリシー型です。aggregation_policy:オプションのエンティティキーを含む単一の集約ポリシー。projection_policies:それぞれが列バインドを持つ投影ポリシーの配列。join_policy:オプションの列バインドを持つ単一の結合ポリシー。masking_policies:それぞれが列バインドを持つマスキングポリシーの配列。row_access_policy:オプションの列バインドを持つ単一の行アクセスポリシー。
データ提供を登録するロールには、ポリシーに対する USAGE 権限が必要です。
コラボレーターが COLLABORATION.VIEW_DATA_OFFERINGS を呼び出したときに、データに適用されたポリシータイプが表示されます。
ポリシーは、複数のテーブルの複数の列で再利用できます。
例:
Snowflake Data Clean Roomテンプレートポリシー¶
Snowflake Data Clean Roomは、Snowflakeポリシーシステムに加えて、独自のポリシーシステムもサポートしています。コラボレーション内の各データプロバイダーは、データ提供に以下のポリシーを設定できます。
結合ポリシー。結合 できる 列を指定します。
列ポリシー。どの列を投影 できる かを指定します。
アクティベーションポリシー。どの列をアクティブ化 できる かを指定します。
データプロバイダーは、データ提供仕様でこれらのポリシーを設定できます。
列の
categoryがjoin_standardまたはjoin_customである場合、列はクリーンルームの結合ポリシーに追加されます。列の
categoryが他の値に設定されている場合、列はクリーンルームの列ポリシーに追加されます。列の
activation_allowed値が TRUE に設定されている場合、クリーンルームのアクティベーションポリシーにも追加されます。
テンプレートに適切な ポリシーチェックフィルター がある場合、ポリシーが適用されます。これらのフィルターは join_policy 、 column_policy 、 activation_policy 、 join_and_column_policy です。テンプレートの実行時に、これらのフィルターは、参照される列がデータ提供仕様の対応するポリシーセットで許可されていることを検証します。指定されたポリシーに該当しない列にフィルターが適用されると、テンプレートは失敗します。
たとえば、 col1 も col2 もデータプロバイダーの結合ポリシー( category: join_standard または category: join_custom )の一部である必要があります。そうでなければ、以下のテンプレートスニペットはエラーをスローします。
パスの命名によるデータ提供の整理¶
パスの命名を使用して、データ提供を概念的にグループ化できます。各データ提供は1つ以上のテーブルまたはビューを表すため、これは特に効果的です。個々のテーブルには、collaborator alias.data offering ID.dataset alias 構文を使用してアクセスします。ここで、データ提供 ID はユーザーが提供した名前とバージョン値の組み合わせであり、エイリアスは提供内の単一のテーブルです。
データ提供を登録するときは、名前、バージョン、エイリアスをスコープシステムとして検討してください。これにより、提供とエイリアスによってデータを整理できます。たとえば、販売データのデータ提供を次のように登録できます。ここで、各テーブルは US の州に固有です。
分析実行者はこれらのテーブルを user_alias.offering_id.AL 、 user_alias.offering_id.NY および user_alias.offering_id.CA として参照します。