データ提供

データ提供 とは、コラボレーションの特定の分析実行者と共有される1つ以上のビューのセットであり、 データセット と呼ばれます。コラボレーション仕様 で自分がデータプロバイダーとして定義されている分析実行者とデータを共有することができます。

データ提供は、ソースデータのライブビューであり、データ提供が登録されたときのデータのスナップショットではありません。ソースデータに適用されるすべてのSnowflakeポリシーは、データ提供で有効です。

データ提供を登録すると、データ提供仕様 にリストされた各データソースのビューが作成されます。ビューには、データ提供仕様にリストされた列 のみ が含まれます。特定の列は、カテゴリに応じて、このステージで 名前が変更される可能性があります

さらに、データ提供をコラボレーションにリンクすると、Snowflakeは コラボレーション仕様 に従って、登録されたビューのコピーを作成し、ビューへのアクセスを特定の分析実行者に制限します。

重要

基になるテーブルを移動、名前変更、またはアクセス許可を変更すると、データ提供は以前に登録されたリンクで使用できなくなります。

Snowflake Standard Editionを使用する場合、ポリシーが適用されたデータクリーンルームを介してデータを共有することはできません。したがって、自分のアカウントのユーザーであっても、他の関係者とデータを共有したり、データ提供で指定されたデータクリーンルームポリシーを活用したりすることはできません。ただし、他のコラボレーターからのデータ提供にアクセスすることはできます。または、ポリシーを使用せずに 独自のデータをローカルデータ提供として使用 できます。

データ提供の要件:

  • 共有するデータに対する、 GRANT OPTION を有する REFERENCE_USAGE 権限が付与されている必要があります。そうでないと、登録して、コラボレーションに参加しようとしたとき、またはデータをリンクするときに、 「参照使用許可がありません」 というエラーが表示されます。

    GRANT REFERENCE_USAGE ON DATABASE my_database TO ROLE my_role WITH GRANT OPTION;
    
  • コラボレーションの データプロバイダーコラボレーションロール が必要です。

  • 現在、コラボレーションを作成または結合したアカウントロールのみがデータをコラボレーションにリンクしたり、リンク解除したりできます。

続けて読んで、データ提供を登録し、コラボレーションにリンクする方法をご参照ください。

データ提供の登録

  1. データの データ提供仕様 を作成します。データ提供について以下の詳細を指定します。

    • データ提供内の各データセットのソースオブジェクト。

    • 各データセットに含まれる列。

    • 各列の型(結合またはその他)。これは クリーンルームのポリシー の入力に使用されます。場合によっては、個別の列の形式も指定します。

    • データ提供の列に適用する任意のSnowflake データ保護ポリシー

    • ユーザーがデータにアクセスする方法: テンプレートのみ、または 自由形式 SQL クエリ

  2. REGISTER_DATA_OFFERING を呼び出してデータ提供を登録します。データ提供 ID が返されます。

    このステップにより、レジストリへの読み取りアクセス権を持つアカウント内の任意のロールによって、データ提供をコラボレーションにリンク できるように なります。同じデータ提供 ID を使用してデータ提供を複数のコラボレーションで共有できます。

ソース列の名前変更

データ提供の列名は、分析実行者に公開する前に名前を変更できます。名前の変更は、この表に示されているように、 データ提供仕様 の列を定義する category および column_type 値によって異なります。

category

新しい列名

join_standard

column_type

timestamp

timestamp

join_custompassthrough 、または event_type

元の列名が使用されます。

たとえば、ソーステーブルの列の名前が user_email_address の場合、この列が分析実行者にどのように公開されるかは、データ提供仕様でどのように定義されているかによって異なります。

データ提供の仕様

列の参照方法

...
schema_and_template_policies:
  user_email_address:
    category: join_standard
    column_type: hashed_email_sha256

column_typejoin_standard 列に使用されます。

SELECT HASHED_EMAIL_SHA256
FROM source_table[0];

データ提供へのデータ保護ポリシーの適用

クリーンルームで共有されるデータは、いくつかの方法で保護されます。

  • クリーンルーム環境に登録されたデータは、データ提供仕様にリストされていない列を省略するセキュアビューとして作成されます。

  • セキュアビューは、コラボレーション仕様で指定された特定のユーザーおよびテンプレートとのみ共有されます。

  • データにSnowflakeポリシーを追加して、データの使用方法をさらに管理できます。

  • データクリーンルームのテンプレートポリシー も、データ提供列の分類に基づいて適用されます。

結合 または 集約 ポリシーなどのSnowflakeデータ保護ポリシーを共有データに適用するには、2つの方法があります。

ソースデータにSnowflakeポリシーを適用する

ソースデータに適用されたSnowflakeポリシーは、コラボレーションのデータ提供ビューにも適用されます。

ソースデータにSnowflakeポリシーを適用する場合は、それらをコラボレーターに知らせて、結合できない列で結合するクエリや集約要件を満たしていないクエリを知らずに実行しないようにしてください。データ提供の description フィールドにはどのSnowflakeポリシーでも記載できます。

重要

Snowflakeデータポリシーが設定されているデータ提供を登録する場合は、それらのポリシーの対象とならないロールを使用するか、データが登録されるまでポリシーを一時停止する必要があります。

これは Snowflake Data Clean Rooms が登録プロセスの一環として、ソーステーブルに対して検証クエリを実行するためです。テストクエリが意味のある結果を返さない場合は、登録が失敗します。Snowflakeデータポリシーによっては、テストが失敗することがあります。たとえば、テーブルに集約ポリシーがあり、検証クエリが集約ポリシーの最小グループサイズ要件を満たすのに十分な行を返さない場合があります。

データ提供にSnowflakeポリシーを適用する( 自由形式のクエリの使用時のみ

Snowflakeポリシーをソースデータに適用せずに、 自由形式のクエリ を介してアクセスするときに共有データに適用できます。これらのポリシーは、ソーステーブルに直接適用されるSnowflakeポリシーに加えて適用されます。

自由形式の SQL ポリシーをデータに追加するには:

  1. Collaboration Data Clean Roomsでサポートされるポリシータイプ を作成します。

  2. 次の情報をデータ提供の仕様に追加します。

    • 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 を呼び出したときに、データに適用されたポリシータイプが表示されます。

ポリシーは、複数のテーブルの複数の列で再利用できます。

例:

CREATE OR REPLACE AGGREGATION POLICY my_db.public.my_agg_policy AS ()
  RETURNS AGGREGATION_CONSTRAINT ->
    AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);

Snowflake Data Clean Roomテンプレートポリシー

Snowflake Data Clean Roomは、Snowflakeポリシーシステムに加えて、独自のポリシーシステムもサポートしています。コラボレーション内の各データプロバイダーは、データ提供に以下のポリシーを設定できます。

  • 結合ポリシー。結合 できる 列を指定します。

  • 列ポリシー。どの列を投影 できる かを指定します。

  • アクティベーションポリシー。どの列をアクティブ化 できる かを指定します。

データプロバイダーは、データ提供仕様でこれらのポリシーを設定できます。

  • 列の categoryjoin_standard または join_custom である場合、列はクリーンルームの結合ポリシーに追加されます。

  • 列の category が他の値に設定されている場合、列はクリーンルームの列ポリシーに追加されます。

  • 列の activation_allowed 値が TRUE に設定されている場合、クリーンルームのアクティベーションポリシーにも追加されます。

テンプレートに適切な ポリシーチェックフィルター がある場合、ポリシーが適用されます。これらのフィルターは join_policycolumn_policyactivation_policyjoin_and_column_policy です。テンプレートの実行時に、これらのフィルターは、参照される列がデータ提供仕様の対応するポリシーセットで許可されていることを検証します。指定されたポリシーに該当しない列にフィルターが適用されると、テンプレートは失敗します。

たとえば、 col1col2 もデータプロバイダーの結合ポリシー( category: join_standard または category: join_custom )の一部である必要があります。そうでなければ、以下のテンプレートスニペットはエラーをスローします。

SELECT *
FROM T1
JOIN T2
ON {{ t1_col | sqlsafe | join_policy }} = {{ t2_col | sqlsafe | join_policy }}

パスの命名によるデータ提供の整理

パスの命名を使用して、データ提供を概念的にグループ化できます。各データ提供は1つ以上のテーブルまたはビューを表すため、これは特に効果的です。個々のテーブルには、collaborator alias.data offering ID.dataset alias 構文を使用してアクセスします。ここで、データ提供 ID はユーザーが提供した名前とバージョン値の組み合わせであり、エイリアスは提供内の単一のテーブルです。

データ提供を登録するときは、名前、バージョン、エイリアスをスコープシステムとして検討してください。これにより、提供とエイリアスによってデータを整理できます。たとえば、販売データのデータ提供を次のように登録できます。ここで、各テーブルは US の州に固有です。

api_version: 2.0.0
spec_type: data_offering
version: v0
name: examplecorp_sales_by_state
datasets:
 - alias: AL
   data_object_fqn: mydb.mysch.al_data
 - alias: NY
   data_object_fqn: mydb.mysch.ny_data
 - alias: CA
   data_object_fqn: mydb.mysch.ca_data

分析実行者はこれらのテーブルを user_alias.offering_id.ALuser_alias.offering_id.NY および user_alias.offering_id.CA として参照します。