データの登録

このトピックでは、 Snowflake Data Clean Room にリンクできるようにデータを登録する方法について説明します。

サポートされているオブジェクト

以下のオブジェクトタイプでclean roomへのリンクが可能です:

注釈

†外部テーブルとIceberg テーブルを、clean roomで使用する前に 有効にする必要があります

データオブジェクトの登録

ユーザーがデータを Snowflake Data Clean Room にリンクする前に、まずデータが 登録されている 必要があります。データを登録すると、オブジェクトに対する USAGE と SELECT の権限が SAMOOHA_APP_ROLE に付与されます。これは、clean room環境からデータにアクセスするために使用されます。データベースやスキーマを登録すると、そのすべての子オブジェクトも登録されます。オブジェクトにリンクするには、そのオブジェクトに対する MANAGE GRANTS 権限が必要です。

データベース、スキーマ、およびオブジェクトは、 Clean rooms UI または:ref:Clean rooms API <label-cleanrooms_register_api> を使用して登録できます。Clean rooms UIを使用する方が簡単ですが、ACCOUNTADMINロールが必要です。開発者APIsを使用すると、ACCOUNTADMINロールを使用せずに、OWNERSHIP権限を持つオブジェクトを登録することができます。

重要

データベースやスキーマを登録しても、登録後に追加されたオブジェクトは登録されません。新しいオブジェクトを個別に登録するか、Clean rooms UIを使用して Admin > Snowflake Admin > Database Registration に移動し、 Resync を選択する必要があります。

自分のアカウントで登録したデータ以外はリンクできません。つまり、プロバイダーはコンシューマーが登録したデータをリンクできず、コンシューマーはプロバイダーが登録したデータをリンクできません。データがclean roomにリンクされると、リンク先の設定(結合ポリシーや列ポリシーなど)に従い、clean roomにアクセスできる人なら誰でもアクセスできます。

Clean rooms UIを使用してデータベース、スキーマ、またはオブジェクトを登録するには、以下の手順に従います。

  1. アカウント管理者としてClean rooms UI にサインインし、次のいずれかの手順を実行します。

    • 管理アカウントを使用している場合は、 Admin > My Account を選択します。

    • Snowflakeアカウントを使用している場合は、 Admin > Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにサインインします。

  2. Admin > Snowflake Admin を選択します。

  3. Log in to Snowflake を選択し、 ACCOUNTADMIN ロールを持つユーザーとして認証します。

  4. アカウントで外部テーブルまたはIcebergテーブルを有効にするには、 External & Iceberg Tables トグルを有効にします。

  5. Access management for Snowflake objects セクションで、 Edit を選択し、データベース、スキーマ、またはオブジェクトを選択して、このアカウントのユーザーがデータをリンクすることを可能にします。

  6. Save を選択します。

Snowflakeポリシーが適用されたテーブルまたはビューの登録

Snowflakeポリシーが適用されたデータをリンクしたい場合、Snowflakeポリシーがソースデータとは異なるデータベースに格納されている場合は、クリーンルームにポリシーデータベースの参照使用を許可する必要があります。これは、1アカウントにつき1回、または1クリーンルームにつき1回行うことができます。

アカウントごとに1回、参照使用を許可する

データベースへの参照使用をアカウントごとに一度だけ許可し、クリーンルームごとに自動的に許可するには、次のSQLコマンドを実行して、SAMOOHA_APP_ROLEに参照使用を許可します。データベースのプレースホルダーをデータベース名に置き換えてください。

GRANT REFERENCE_USAGE ON DATABASE <database_name>
  TO ROLE SAMOOHA_APP_ROLE
  WITH GRANT OPTION;
Copy

クリーンルームごとに1回の参照利用を認める

もし、アカウント内の全てのクリーンルームにではなく、クリーンルーム毎にデータベースへの参照使用を許可したい場合は、以下のSQLコマンドを実行してください。データベース名と クリーンルームID のプレースホルダーを適切な値に置き換えます。

GRANT REFERENCE_USAGE ON DATABASE <database_name>
  TO SHARE IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<clean_room_ID>;
Copy

データオブジェクトの登録解除

テーブルを一度clean roomにリンクすると、削除できなくなります。ただし、アカウントでオブジェクトの登録を解除することで、そのアカウント内のclean roomからのアクセス許可を削除できます。

clean roomやアカウントからデータを削除したい場合、基になるオブジェクトを削除することは、clean roomのエラーの原因となるので 避けてください。以下のいずれかの方法で、オブジェクトの登録を解除してください。

アカウントからオブジェクトの登録を解除するときは、このデータを使用して作成したclean roomも更新する必要があります。

削除されたデータに依存するコラボレーターからのクエリは、次回実行されたときに失敗します。

アカウントに登録されているオブジェクトの登録を解除します:

  1. アカウント管理者としてClean rooms UI にサインインし、次のいずれかの手順を実行します。

    • 管理アカウントを使用している場合は、 Admin > My Account を選択します。

    • Snowflakeアカウントを使用している場合は、 Admin > Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにサインインします。

  2. Admin > Snowflake Admin を選択します。

  3. Log in to Snowflake を選択し、 ACCOUNTADMIN ロールを持つユーザーとして認証します。

  4. アカウントで外部テーブルまたはIcebergテーブルを有効にするには、 External & Iceberg Tables トグルを有効にします。

  5. Access management for Snowflake objects セクションで、 Edit を選択し、データベース、スキーマ、またはオブジェクトの選択を解除して、このアカウントのユーザーがそのデータを利用できないようにします。

  6. Save を選択します。

  7. このデータを基に作成されたclean roomを更新してください。

外部テーブルと Apache Iceberg™ テーブルの有効化

外部テーブルとIcebergテーブルをclean roomにリンクするには、まず外部テーブルとIceberg テーブルを使用できるようにアカウントを構成する必要があります。外部テーブルとIcebergテーブルを有効にすると、他のテーブルと同じように登録、リンク、使用できます。

外部テーブルとアイスバーグ テーブルを有効にするプロセスは、Clean rooms UIとClean rooms APIのどちらを使用してクリーンルームを管理しているかによって異なります。

外部テーブルとIcebergの要件

  • プロバイダーアカウントと、コンシューマーアカウントの両方から、外部テーブルとIcebergテーブルを有効にし、外部テーブルまたはIcebergテーブルにリンクするclean roomの使用を完全に許可する必要があります。

  • clean roomを管理アカウントと共有する場合、プロバイダーは常に外部テーブルとアイスバーグIcebergテーブルを有効にする必要があります。 これは、管理アカウントが常に外部テーブルを使用するためです。

  • プロバイダーとコンシューマーが異なるリージョンにいる場合、 コンシューマーだけが外部テーブルまたはIcebergテーブルをclean roomにリンクできます。

Clean rooms UIは、アカウントレベルで外部テーブルとアイスバーグテーブルをコントロールします。

警告

コンシューマーアカウントがこの機能を有効にしていなければ、コンシューマーは外部テーブルまたはIcebergテーブルにリンクしているclean roomからブロックされるか、またはいずれかのタイプのテーブルにリンクしている、参加済みのclean roomを編集できなくなります(実行はできます)。

DCR 管理者は、プロバイダーアカウントとコンシューマーアカウントの両方で、以下の手順を踏む必要があります:

  1. アカウント管理者としてClean rooms UI にサインインし、次のいずれかの手順を実行します。

    • 管理アカウントを使用している場合は、 Admin > My Account を選択します。

    • Snowflakeアカウントを使用している場合は、 Admin > Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにサインインします。

  2. External & Iceberg Tables トグルを有効にします。これにより、 UIで作成されたclean roomと、 APIで作成されたclean roomの両方で、この機能が有効になります。

  3. 外部テーブルとIcebergテーブルを、管理者の Access management for Snowflake objects パネルから選択できるようになり、他のオブジェクトと同じように、clean roomでの使用が可能になります。