データの登録

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

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

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

注釈

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

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

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

You can register databases, schemas, and objects using the Clean rooms UI or the Clean rooms API. Using the Clean rooms UI is simpler, but requires that you have the ACCOUNTADMIN role. Using the developer APIs, you can register any object on which you have OWNERSHIP privilege without using the ACCOUNTADMIN role.

重要

Registering a database or schema does not register objects added after the registration. You must either register the new object individually or use the Clean rooms UI to navigate to Admin > Snowflake Admin > Database Registration and select Resync.

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

Follow the steps below to register a database, schema, or object using the Clean rooms UI:

  1. Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:

    • 管理アカウントを使用している場合は、 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. Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:

    • 管理アカウントを使用している場合は、 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テーブルを有効にすると、他のテーブルと同じように登録、リンク、使用できます。

The process for enabling external and Iceberg tables varies, depending on whether you are managing the clean room using the Clean rooms UI or the Clean rooms API.

外部テーブルとIcebergの要件

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

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

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

The Clean rooms UI controls external and Iceberg tables at the account level.

警告

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

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

  1. Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:

    • 管理アカウントを使用している場合は、 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での使用が可能になります。