データの登録¶
このトピックでは、 Snowflake Data Clean Room にリンクできるようにデータを登録する方法について説明します。
サポートされているオブジェクト¶
以下のオブジェクトタイプでclean roomへのリンクが可能です:
テーブル
動的テーブル
ビュー
マテリアライズドビュー
セキュアビュー。さらに、セキュアビューの所有者は SAMOOHA_APP_ROLE ロールでなければなりません。
注釈
†外部テーブルとIceberg テーブルを、clean roomで使用する前に 有効にする必要があります 。
データオブジェクトの登録¶
ユーザーがデータを Snowflake Data Clean Room にリンクする前に、まずデータが 登録されている 必要があります。データを登録すると、オブジェクトに対する USAGE と SELECT の権限が SAMOOHA_APP_ROLE に付与されます。これは、clean room環境からデータにアクセスするために使用されます。データベースやスキーマを登録すると、そのすべての子オブジェクトも登録されます。オブジェクトにリンクするには、そのオブジェクトに対する MANAGE GRANTS 権限が必要です。
データベース、スキーマ、オブジェクトの登録には、 clean room UI または clean room API を使用します。clean room UI を使う方が簡単ですが、 ACCOUNTADMIN ロールが必要になります。開発者 APIs を使用すると、 OWNERSHIP 権限を持つオブジェクトを、 ACCOUNTADMIN ロールなしで登録できます。
重要
データベースやスキーマを登録しても、その 登録後 に追加されたオブジェクトは登録されません。新しいオブジェクトを個別に登録するか、clean room UI を使用して Admin > Snowflake Admin > Database Registration に移動し、 Resync を選択する必要があります。
自分のアカウントで登録したデータ以外はリンクできません。つまり、プロバイダーはコンシューマーが登録したデータをリンクできず、コンシューマーはプロバイダーが登録したデータをリンクできません。データがclean roomにリンクされると、リンク先の設定(結合ポリシーや列ポリシーなど)に従い、clean roomにアクセスできる人なら誰でもアクセスできます。
clean room UIを使用してデータベース、スキーマ、またはオブジェクトを登録するには、以下の手順に従います:
clean room UI にアカウント管理者としてサインインし、次のいずれかの手順を実行します:
管理アカウントを使用している場合は、 Admin > My Account を選択します。
Snowflakeアカウントを使用している場合は、 Admin > Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにサインインします。
Admin > Snowflake Admin を選択します。
Log in to Snowflake を選択し、 ACCOUNTADMIN ロールを持つユーザーとして認証します。
アカウントで外部テーブルまたはIcebergテーブルを有効にするには、 External & Iceberg Tables トグルを有効にします。
Access management for Snowflake objects セクションで、 Edit を選択し、データベース、スキーマ、またはオブジェクトを選択して、このアカウントのユーザーがデータをリンクすることを可能にします。
Save を選択します。
clean room API を使用し、データベース、スキーマ、オブジェクトをプログラムにより登録します。オブジェクトを登録するには、そのオブジェクトに対する MANAGE GRANTS 権限が必要であることに注意してください。
外部テーブルIcebergテーブルは、 、他のオブジェクトタイプとは異なる方法で登録されます。
オブジェクトの登録や登録解除に、以下のプロシージャを使用できます:
オブジェクト型 |
登録 |
登録解除 |
---|---|---|
データベース |
|
|
スキーマ |
|
|
管理アクセススキーマ |
|
|
その他のサポートされているオブジェクトタイプ |
|
|
例:
USE ROLE <ROLE-WITH-MANAGE-GRANTS-PRIVILEGE>
CALL samooha_by_snowflake_local_db.library.register_schema(['MY_DB.MY_SCHEMA']);
データオブジェクトの登録解除¶
テーブルを一度clean roomにリンクすると、削除できなくなります。ただし、アカウントでオブジェクトの登録を解除することで、そのアカウント内のclean roomからのアクセス許可を削除できます。
clean roomやアカウントからデータを削除したい場合、基になるオブジェクトを削除することは、clean roomのエラーの原因となるので 避けてください。以下のいずれかの方法で、オブジェクトの登録を解除してください。
アカウントからオブジェクトの登録を解除するときは、このデータを使用して作成したclean roomも更新する必要があります。
削除されたデータに依存するコラボレーターからのクエリは、次回実行されたときに失敗します。
アカウントに登録されているオブジェクトの登録を解除します:
clean room UI にアカウント管理者としてサインインし、次のいずれかの手順を実行します:
管理アカウントを使用している場合は、 Admin > My Account を選択します。
Snowflakeアカウントを使用している場合は、 Admin > Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにサインインします。
Admin > Snowflake Admin を選択します。
Log in to Snowflake を選択し、 ACCOUNTADMIN ロールを持つユーザーとして認証します。
アカウントで外部テーブルまたはIcebergテーブルを有効にするには、 External & Iceberg Tables トグルを有効にします。
Access management for Snowflake objects セクションで、 Edit を選択し、データベース、スキーマ、またはオブジェクトの選択を解除して、このアカウントのユーザーがそのデータを利用できないようにします。
Save を選択します。
このデータを基に作成されたclean roomを更新してください。
API で、適切なプロシージャを呼び出して、アカウントからオブジェクトの登録を解除します:
library.unregister_db
library.unregister_schema
library.unregister_managed_access_schema
library.unregister_objects
外部テーブルと Apache Iceberg™ テーブルの有効化¶
外部テーブルとIcebergテーブルをclean roomにリンクするには、まず外部テーブルとIceberg テーブルを使用できるようにアカウントを構成する必要があります。外部テーブルとIcebergテーブルを有効にすると、他のテーブルと同じように登録、リンク、使用できます。
外部テーブルとアイスバーグテーブルを有効にするプロセスは、clean room UI とclean room API のどちらを使用してclean roomを管理しているかによって異なります。
外部テーブルとIcebergの要件¶
プロバイダーアカウントと、コンシューマーアカウントの両方から、外部テーブルとIcebergテーブルを有効にし、外部テーブルまたはIcebergテーブルにリンクするclean roomの使用を完全に許可する必要があります。
clean roomを管理アカウントと共有する場合、プロバイダーは常に外部テーブルとアイスバーグIcebergテーブルを有効にする必要があります。 これは、管理アカウントが常に外部テーブルを使用するためです。
プロバイダーとコンシューマーが異なるリージョンにいる場合、 コンシューマーだけが外部テーブルまたはIcebergテーブルをclean roomにリンクできます。
clean room UI は、外部テーブルとIcebergテーブルをアカウントレベルで制御します。
警告
コンシューマーアカウントがこの機能を有効にしていなければ、コンシューマーは外部テーブルまたはIcebergテーブルにリンクしているclean roomからブロックされるか、またはいずれかのタイプのテーブルにリンクしている、参加済みのclean roomを編集できなくなります(実行はできます)。
DCR 管理者は、プロバイダーアカウントとコンシューマーアカウントの両方で、以下の手順を踏む必要があります:
clean room UI にアカウント管理者としてサインインし、次のいずれかの手順を実行します:
管理アカウントを使用している場合は、 Admin > My Account を選択します。
Snowflakeアカウントを使用している場合は、 Admin > Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにサインインします。
External & Iceberg Tables トグルを有効にします。これにより、 UIで作成されたclean roomと、 APIで作成されたclean roomの両方で、この機能が有効になります。
外部テーブルとIcebergテーブルを、管理者の Access management for Snowflake objects パネルから選択できるようになり、他のオブジェクトと同じように、clean roomでの使用が可能になります。
コードでは、外部テーブルとIcebergテーブルを、アカウントレベルで有効にすると 同時に 、外部テーブルまたはIcebergテーブルにリンクする各clean room でも 有効にする必要があります。clean room UI で外部テーブルとIcebergテーブルを有効にしている場合は、コードで有効にする必要はありません(ここにリストされている手順を実行する必要はありません)。
警告
一方のアカウントだけがこの機能を有効にし、外部テーブルまたはIcebergテーブルにリンクしている場合、もう一方のアカウントから既存のテンプレートを実行することはできますが、外部テーブルとIcebergテーブルが、そのアカウントとclean roomの両方で許可されるまで、clean roomを変更することはできません。
新しいclean roomで外部テーブルまたはIcebergテーブルを有効にし、使用するには以下の手順に従います:
まず、 ACCOUNTADMIN ロールを持つユーザーが、プロバイダーアカウントとコンシューマーアカウントの両方で、外部テーブルとIcebergテーブルをclean room環境全体で有効にします:
USE ROLE ACCOUNTADMIN; CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
注釈
この方法では、clean room UI で作成された既存のclean roomが影響を受けることはありません。clean room UI を使用して作成された既存のclean roomを更新するには、次のステップで示すように、コードで個別に有効にするか、clean room UI を使用して有効化することで、既存のすべてのclean roomを有効にする必要があります。
プロバイダー が、clean roomの外部テーブルとIcebergテーブルを有効にします。これにより、セキュリティスキャンがトリガーされ、成功すれば新しいclean roomバージョンが生成されるため、デフォルトのリリースディレクティブを更新することが必要になります。
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom( $cleanroom_name); -- Call until scan is complete. call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name); -- When scan is successful, update with patch version mentioned in return value from enable_external_tables_for_cleanroom. call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '<PATCH_VERSION>');
コンシューマー も、同じclean room内で外部テーブルとIcebergテーブルの使用を可能にする必要があります:
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( $cleanroom_name);
clean roomで外部テーブルとIcebergテーブルが有効になると、コラボレーターはこれらのテーブルを他のテーブルと同じように登録およびリンクすることができます。