Snowflakeデータクリーンルーム:プロバイダーAPIリファレンスガイド¶
概要¶
このリファレンスガイドでは、プロバイダーがクリーンルームを作成、構成、共有できるようにする[Clean Rooms API](./developer-introduction.md)のストアドプロシージャをリストします。
プロシージャは以下のスキーマ内に存在します。
samooha_by_snowflake_local_db.provider
- プロバイダー固有のプロシージャ。これらのプロシージャは、現在のアカウントによって作成されたクリーンルームに対してのみ呼び出すことができます。samooha_by_snowflake_local_db.consumer
- コンシューマー固有のプロシージャ。これらのプロシージャは、現在のアカウントがコンシューマーとして招待されたクリーンルームに対してのみ呼び出すことができます。samooha_by_snowflake_local_db.library
- クリーンルーム作成者(プロバイダー)またはクリーンルームコラボレーター(コンシューマー)のどちらかによって呼び出される一般的なプロシージャ。
これらのプロシージャは、ノートブック、ワークブック、[CLI](/developer-guide/snowflake-cli/index)など、Snowflakeプロシージャをサポートしているコマンドライン環境からアクセスできます。
要件¶
API には samooha_app_role
ロールと app_wh
ウェアハウスが必要です。ここで説明するプロシージャを使用する前に、以下のコマンドを実行してください。
USE ROLE samooha_app_role;
USE WAREHOUSE app_wh;
SAMOOHA_APP_ROLEロールを持ってない場合は、アカウント管理者にお問い合わせください。
クリーンルームの作成、構成、削除¶
provider.view_cleanrooms¶
説明: このプロバイダーアカウントによって作成されたすべての既存のクリーンルームをリストします。
引数: なし
戻り値: (テーブル) このプロバイダーアカウントが作成したクリーンルームのリスト。クリーンルームは、コンシューマーと共有したり、インストールしたり、使用したりする必要はありません。削除されたクリーンルームはデータベースから削除され、このリストには表示されません。
例:
call samooha_by_snowflake_local_db.provider.view_cleanrooms();
provider.describe_cleanroom¶
説明: テンプレート、結合ポリシー、列ポリシー、コンシューマーなど、クリーンルームに関する情報の概要を取得します。
引数:
cleanroom_name(文字列) - 情報を取得するクリーンルームの名前。
戻り値: (文字列) クリーンルームのメタデータの要約。
例:
call samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
provider.cleanroom_init¶
説明: アカウントに指定された名前のクリーンルームを作成します。このプロシージャの実行には1分以上かかることがあります。create_or_update_cleanroom_listing
を呼び出すまで、クリーンルームはウェブアプリや共同作業者には表示されません。
引数:
cleanroom_name(文字列) - クリーンルーム名、最大80文字。名前には[A‑Z,a‑z,0‑9, ,_]が含まれます。
distribution(文字列、オプショナル) - 以下の値のいずれか。
INTERNAL (デフォルト) - クリーンルームは同じ組織のユーザーだけに公開され、[デフォルトバージョンを変更する](#provider-set-default-release-directive)前にセキュリティスキャンをトリガーしません。
EXTERNAL - クリーンルームは実稼働準備が整っており、組織外との共有も可能です。クリーンルームは[デフォルトバージョンを変更する](#provider-set-default-release-directive)前にセキュリティスキャンをトリガーします。クリーンルーム作成後に配布を変更したい場合は、ここに示すように
パッケージの変更
を呼び出します。alter application package samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
戻り値: (文字列) 成功または失敗のメッセージ。
例:
-- Create an internal clean room
call samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
provider.set_default_release_directive¶
説明: 共同作業者がウェブアプリで新しいブラウザセッションを開始するとき、または API からクリーンルームにアクセスするときにロードされるクリーンルームのバージョンとパッチを指定します。これは、クリーンルームをコンシューマーと共有する前に呼び出す必要があります。
クリーンルームアプリケーションは、Pythonコードをアップロードまたは変更するたびに、クリーンルームの新しいバージョンを作成します。ユーザーに最新バージョンを提供したい場合は、新しいバージョン番号を指定してこのプロシージャを呼び出してください。利用可能なバージョンを確認し、現在のデフォルトバージョンを知るには、以下を実行してください。
show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
すべてのクリーンルームは、以下のバージョンとパッチ番号で作成されます。
バージョン:V1_0
パッチ:0
注釈
クリーンルーム分布が EXTERNAL にセットされている場合、このプロシージャは、クリーンルームのセキュリティスキャンが APPROVED 状態に移行した後にのみ呼び出すことができます。セキュリティステータスを見るには、 view_cleanrooom_scan_status
を呼び出してください。
引数:
cleanroom_name(文字列) - クリーンルーム名。
version(文字列) - バージョン。常に「V1_0」でなければなりません。
patch(文字列) - コンシューマーによってロードされたパッチ番号。これは0から始まり、新しいクリーンルームのバージョンが利用可能になるたびにインクリメントする必要があります。上記のように利用可能なバージョンが表示されます。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
provider.drop_cleanroom¶
説明: クリーンルームを削除します。クリーンルームをインストールしたコラボレーターは、クリーンルームへのアクセスや使用ができなくなります。次回ブラウザが更新されると、クリーンルームはウェブアプリに表示されなくなります。
引数:
cleanroom_name(文字列) - 削除するクリーンルームの名前。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
provider.enable_consumer_run_analysis¶
説明: コンシューマーがクリーンルームで分析を実行できるようにします。この機能はすべての新しいクリーンルームでデフォルトで有効になっているため、クリーンルームのコンシューマーが実行する分析を明示的に無効にした場合のみ、このプロシージャを実行する必要があります。
重要
このプロシージャは、コンシューマーがクリーンルームをインストールする前に呼び出す必要があります。クリーンルームのインストール後にこの機能が変更された場合、新しい構成を反映させるためにクリーンルームをインストールし直す必要があります。
引数:
cleanroom_name(文字列) - コンシューマーが実行する分析を許可するクリーンルームの名前。
consumer_accounts(文字列の配列) - この機能を有効にする全コンシューマーのアカウントロケーター。 NOTE: これらのコンシューマーは、クリーンルームに既に追加されている必要があります。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']);
provider.disable_consumer_run_analysis¶
説明: 指定されたコンシューマーが指定されたクリーンルームで分析を実行できないようにします。デフォルトでは、すべてのコンシューマーがクリーンルームで分析を実行できます。
重要
このプロシージャは、コンシューマーがクリーンルームをインストールする前に呼び出す必要があります。既にクリーンルームをインストールされた後に変更された場合は、新しい設定を反映させるためにクリーンルームをインストールし直す必要があります。
引数:
cleanroom_name(文字列) - コンシューマーが実行する分析を無効にしているクリーンルーム。
consumer_accounts(文字列の配列) - このクリーンルームで分析を実行できないコンシューマーのアカウントロケーター。 NOTE: これらのコンシューマーは、既にクリーンルームに追加されている必要があります。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']);
library.is_consumer_run_enabled¶
説明: このクリーンルームがコンシューマーが実行する分析を許可しているかどうかをチェックします。
引数:
cleanroom_name(文字列) - チェックするクリーンルームの名前。
戻り値: (文字列) このクリーンルームがコンシューマーが実行する分析を許可しているかどうか。
例:
call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
provider.create_or_update_cleanroom_listing¶
説明: 新しいクリーンルームを公開、または既存のクリーンルームを更新します。変更がコンシューマーに確実に伝播されるように、クリーンルームに変更を加えるたびに、このメソッドを呼び出す必要があります。
クリーンルームを初めて公開する場合、クリーンルームがウェブアプリに表示されるまでに時間がかかることがあります(最大15分)。
クリーンルームを更新した後でこのメソッドを呼び出さない場合、コンシューマーに変更が伝播される保証はありません。
注釈
このプロシージャを呼び出す前に、少なくとも一度はリリース指令をセットする必要があります。詳細は[provider.set_default_release_directive](#provider-set-default-release-directive)を参照してください。
引数:
cleanroom_name(文字列) - 公開または更新するクリーンルームの名前。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.create_or_update_cleanroom_listing($cleanroom_name);
provider.add_ui_form_customizations¶
説明: ウェブアプリでアクセスする際に、クリーンルーム内のテンプレートの UI を定義します。これは、コンシューマーがテーブルや列などのテンプレートパラメーターを選択できるようにする場合に便利です。最低限、 template_information の引数で、 display_name、 description、 methodology の値を指定する必要があります。
引数:
cleanroom_name(文字列): このテンプレートを含むクリーンルームの名前。提出されたフォームは、指定されたクリーンルームの指定されたテンプレートにのみ適用されます。
template_name(文字列): この UI が適用されるテンプレートの名前。これは、 template_information.display_name フィールドを使用して指定される、ユーザーから見えるタイトルではありません。
template_information(dict): UI でユーザーに表示される情報。以下のフィールドを含みます。
display_name
(必須): ウェブアプリのテンプレートの表示名。description
(必須): テンプレートの説明。methodology
(必須): コンシューマーがフォームを使用して分析を実行する方法の説明。warehouse_hints
(オブジェクト): 分析を実行するために使用するウェアハウスのタイプを推奨します。これは以下のフィールドを持つオブジェクトです。warehouse_size
: 有効な値についてはCREATE WAREHOUSEの warehouse_size を参照してください。snowpark_optimized
(ブール): クエリ処理にSnowparkに最適化されたウェアハウスを使用するかどうか。ほとんどの機械学習のユースケースでは、Snowflakeは TRUE を推奨します。
render_table_dropdowns
(オブジェクト): クエリで使用するプロバイダーテーブルやコンシューマーテーブルをユーザーに選択させるデフォルトのドロップダウンリストを表示するかどうか。これは以下のフィールドを持つオブジェクトです。render_consumer_table_dropdown
: (ブール、デフォルト = TRUE) TRUE の場合、デフォルトのコンシューマーテーブルセレクタを表示します。FALSE の場合、コンシューマーテーブルセレクタを非表示にします。テンプレートは、my_table
テンプレート変数を使って、リストとして選択された値にアクセスできます。render_provider_table_dropdown
: (ブール、デフォルト = TRUE) TRUE の場合、デフォルトのプロバイダーテーブルセレクタを表示します。FALSE の場合、プロバイダーテーブルセレクタを非表示にします。テンプレートは、source_table
テンプレート変数を使用して、リストとして選択された値にアクセスできます。
details(dict): テンプレートに値を渡すユーザー設定可能な入力フィールドを定義します。これはキーとオブジェクトのペアの辞書で、各ペアはユーザー設定可能な UI 要素を1つ表します。キーは任意の文字列名で、 JinjaSQL テンプレートに変数として公開されます。値は、 UI 要素を定義するオブジェクトです。各オブジェクトには以下のフィールドがあります。
<field_name>: { 'display_name': <string>, 'description': <string>, 'methodology': <string>, ['type': <enum>,] ['default': <value>,] ['choices': <string array>,] ['infoMessage': <string>,] ['size': <enum>] ['required': <bool>,] ['group': <string>,] ['references': <enum>] ['provider_parent_table_field': <string>,] ['consumer_parent_table_field': <string>] }
display_name
(必須):UI要素の表示名description
(必須):名前の下に表示される説明methodology
(必須): コンシューマーがフォームを使用して分析を実行する方法の説明type
: UI 要素のタイプ。この入力フィールドに references が指定されている場合は、このエントリを省略します(タイプが決定されます)。サポートされている値:any
(デフォルト): 通常のテキスト入力フィールド。boolean
: 真偽値セレクタinteger
:矢印で数字を変更multiselect
: ドロップダウンリストから複数の項目を選択dropdown
: ドロップダウンリストから1つの項目を選択date
:日付セレクタ
default
: この要素のデフォルト値choices
: (文字列の配列) ドロップダウンやマルチセレクト要素の選択肢リストinfoMessage
: 要素の横に表示される情報ホバーテキストsize
: 要素サイズ。サポートされている値:XS
、S
、M
、L
、XL
required
: ユーザーが値を要求するかどうか。TRUEまたはFALSEを指定してください。group
: グループ名。 UI の項目をグループ化するために使用。UI でグループ化する項目には、同じグループ名を使用します。デフォルトのドロップダウンリストを非表示にする場合、カスタムテンプレートで{{ source_table }}
と{{ my_table}}
特別引数を使用し、必要なテーブルを含む独自のドロップダウンリストを定義することができます。カスタムテンプレートを定義する際にこれらの特別な変数を使用する方法については、provider.add_custom_sql_templateを参照してください。references
: クリーンルームで利用可能なテーブルや列を、事前に知っていたり、個別にリストしたりすることなく、ドロップダウンリストに作成します。使用する場合、 type は、「multiselect」または「dropdown」のいずれかでなければなりません。以下の文字列値がサポートされています。PROVIDER_TABLES
: ユーザーがアクセスできるクリーンルーム内の全プロバイダーのテーブルのドロップダウンリストPROVIDER_JOIN_POLICY
:provider_parent_table_field
で指定されたプロバイダーテーブルから結合できるすべての列のドロップダウンリスト。PROVIDER_COLUMN_POLICY
:provider_parent_table_field
で指定されたプロバイダーテーブルの列ポリシーを持つすべての列のドロップダウンリスト。CONSUMER_TABLES
: ユーザーがアクセスできるクリーンルーム内の全コンシューマーテーブルのドロップダウンリストCONSUMER_COLUMNS
: consumer_parent_table_field で指定されたコンシューマーテーブルの、ユーザーがアクセスできるすべての列のドロップダウンリスト。プロバイダーが実行するテンプレートではコンシューマー列参照を使用しないでください。コンシューマーが結合や列ポリシーを適用する可能性があり、列ポリシーが尊重されない場合にクエリが失敗する可能性があるからです。CONSUMER_JOIN_POLICY
:consumer_parent_table_field
で指定されたコンシューマーテーブルから結合できるすべての列のドロップダウンリスト。CONSUMER_COLUMN_POLICY
:consumer_parent_table_field
で指定されたコンシューマーテーブルの列ポリシーを持つすべての列のドロップダウンリスト。
provider_parent_table_field
: ユーザーがプロバイダーテーブルを選択する UI 要素の名前を指定します(ここではテーブル名自体を指定しないでください)。 references がPROVIDER_COLUMN_POLICY
またはPROVIDER_JOIN_POLICY
にセットされている場合のみ使用します。consumer_parent_table_field
: ユーザーがコンシューマーテーブルを選択する UI 要素の名前を指定します(ここではテーブル名自体を指定しないでください)。 references がCONSUMER_COLUMNS
、CONSUMER_JOIN_POLICY
、CONSUMER_COLUMN_POLICY
にセットされている場合のみ使用します。
output_config(dict) ウェブアプリケーションでテンプレートの結果をグラフィカルに表示する方法を定義します。指定されていない場合、結果はグラフで表示されず、テーブルでのみ表示されます。グラフが必要ない場合は、この引数に空のオブジェクト{}を指定してください。許可されたフィールド:
measure_columns
: ウェブアプリケーションが生成するグラフで使用する手段およびディメンションを含む列の名前。default_output_type
: 結果を表示するデフォルト形式。データが適切な形式であれば、ユーザーは通常、 UI で表示形式を変更できます。サポートされているタイプ:TABLE
: (デフォルト) 表形式BAR
: 棒グラフ。異なるカテゴリを比較するのに適していますLINE
: 折れ線グラフ。経時的なトレンドや連続的なデータを表示するのに適していますPIE
: 円グラフ。割合やパーセンテージを表示するのに適しています
戻り値: (文字列) 成功または失敗のメッセージ。
例:
-- Specify the display name, description, and warehouse, and hide the default table dropdown lists.
-- Define the following two fields in the UI:
-- A provider table selector that shows all provider tables. Chosen tables can be accessed by the template with the variable 'a_provider_table'
-- (This dropdown list is equivalent to setting `render_table_dropdowns.render_provider_table_dropdown: True`)
-- A column selector for the tables chosen in 'a_provider_table'. Chosen columns can be accessed by the template with the variable 'a_provider_col'
call samooha_by_snowflake_local_db.provider.add_ui_form_customizations(
$cleanroom_name,
'prod_custom_template',
{
'display_name': 'Custom Analysis Template',
'description': 'Use custom template to run a customized analysis.',
'methodology': 'This custom template dynamically renders a form for you to fill out, which are then used to generate a customized analysis fitting your request.',
'warehouse_hints': {
'warehouse_size': 'xsmall',
'snowpark_optimized': FALSE
},
'render_table_dropdowns': {
'render_consumer_table_dropdown': false,
'render_provider_table_dropdown': false
},
'activation_template_name': 'activation_my_template',
'enabled_activations': ['consumer', 'provider']
},
{
'a_provider_table': {
'display_name': 'Provider table',
'order': 3,
'description': 'Provider table selection',
'size': 'S',
'group': 'Seed Audience Selection',
'references': ['PROVIDER_TABLES'],
'type': 'dropdown'
},
'a_provider_col': {
'display_name': 'Provider column',
'order': 4,
'description': 'Which col do you want to count on',
'size': 'S',
'group': 'Seed Audience Selection',
'references': ['PROVIDER_COLUMN_POLICY'],
'provider_parent_table_field': 'a_provider_table',
'type': 'dropdown'
}
},
{
'measure_columns': ['col1', 'col2'],
'default_output_type': 'PIE'
}
);
データの登録および登録解除¶
以下のコマンドを使用して、データベース、スキーマ、オブジェクトの登録および登録解除を行います。テーブルとビューは、クリーンルームにリンクする前に登録する必要があります。データベースまたはスキーマを登録すると、そのデータベースまたはスキーマ内のすべてのオブジェクトが登録されます。
provider.register_db¶
説明: データベースとその中のすべてのオブジェクトを、このクリーンルーム環境の個々のクリーンルームにリンクできるようにします。このプロシージャは、 USAGE と SELECT のデータベース権限を SAMOOHA_APP_ROLE に付与し、これはクリーンルーム環境がデータにアクセスするために使用されます。
このプロシージャを呼び出すには、データベースへの MANAGE GRANTS アクセスが必要です。このクリーンルーム環境にいる他のプロバイダーは、 SELECT の権限を必要とせずに、これらのオブジェクトを自分のクリーンルームにリンクすることができます。
重要
このプロシージャは、呼び出された後に作成されたオブジェクトは登録しません。新しいオブジェクトがデータベースに追加され、それらも登録したい場合は、このプロシージャを再度呼び出す必要があります。
引数:
db_name(文字列) - 登録するデータベース名。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.register_db('SAMOOHA_SAMPLE_DATABASE');
library.register_schema¶
説明: register_db
と似ていますが、スキーマレベルで操作します。このプロシージャを呼び出すには、スキーマに MANAGE GRANTS 権限が必要です。
このプロシージャは、クリーンルーム環境でデータアクセスに使用されるスキーマ上の USAGE および SELECT 権限を SAMOOHA_APP_ROLE に付与します。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)を登録したい場合は、代わりに library.register_managed_access_schema
を使用してください。
重要
このプロシージャは、呼び出された後に作成されたオブジェクトは登録しません。新しいオブジェクトがデータベースに追加され、それらも登録したい場合は、このプロシージャを再度呼び出す必要があります。
引数:
schema_name(文字列の配列) - 登録する1つ以上の完全修飾スキーマ名の配列。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_managed_access_schema¶
説明: register_schema
と似ていますが、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマを登録します。このプロシージャを呼び出すには、スキーマに MANAGE GRANTS 権限が必要です。
このプロシージャは、管理スキーマの使用権限を SAMOOHA_APP_ROLE に付与します。これは、クリーンルーム環境がデータにアクセスするために使用されます。
重要
このプロシージャは、呼び出された後に作成されたオブジェクトは登録しません。新しいオブジェクトがデータベースに追加され、それらも登録したい場合は、このプロシージャを再度呼び出す必要があります。
引数:
schema_name(文字列の配列) - 1つ以上の完全修飾スキーマ名の配列。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_objects¶
説明: provider.link_datasets
を呼び出すことで、クリーンルームにすべてのタイプのテーブルとビューへのアクセスを付与し、クリーンルームにリンクできるようにします。library.register_schema
、 library.register_managed_access_schema
、 provider.register_db
を呼び出すことで、より広範なオブジェクトグループを登録することができます。
このプロシージャは、 SAMOOHA_APP_ROLE にオブジェクトの使用権限を付与します。これは、クリーンルーム環境がデータにアクセスするために使用されます。
このプロシージャを呼び出すには、オブジェクトに MANAGE GRANTS 権限が必要です。このプロシージャはデータベースの登録には使用できません。
引数:
object_names(array) - 完全修飾オブジェクト名の配列。これらのオブジェクトは、クリーンルームにリンクすることができます。
戻り値: (文字列) 成功または失敗のメッセージ。
例
テーブルとビューを登録するには
call samooha_by_snowflake_local_db.library.register_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
library.unregister_db¶
説明: register_db
プロシージャを取り消し、 SAMOOHA_APP_ROLE ロールとSnowflake Data Clean Roomネイティブアプリケーションに与えられたデータベースレベルの付与を削除します。これにより、ウェブアプリのセレクタからデータベースも削除されます。
引数:
db_name(文字列) - 登録を解除するデータベース名。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
library.unregister_schema¶
説明: スキーマの登録を解除し、ユーザーがクリーンルームにテーブルやビューをリンクできないようにします。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)の登録を解除したい場合は、代わりに library.unregister_managed_access_schema
を使用してください。
引数:
schema_name(array) - 登録を解除するスキーマ。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.unregister_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_managed_access_schema¶
説明: unregister_schema
と似ていますが、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマの登録を解除します。
引数:
schema_name(array) - 登録を解除する管理スキーマ。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_objects¶
説明: すべてのタイプのテーブルとビューへのクリーンルームのアクセス権を取り消します。このアカウントで管理されているクリーンルームのユーザーは、オブジェクトを利用できなくなります。
引数:
object_names(array) - アクセス権を取り消す完全修飾オブジェクト名の配列。
戻り値: (文字列) 成功または失敗のメッセージ。
例
テーブルとビューの登録を解除するには
call samooha_by_snowflake_local_db.library.unregister_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
データとテーブルのリンク¶
以下のコマンドを使用して、クリーンルーム内のテーブルとビューを追加または削除します。
provider.view_provider_datasets¶
説明: クリーンルームに追加されたすべてのデータセットを表示します。
引数:
cleanroom_name(文字列) - クリーンルーム名。
戻り値: (テーブル) このクリーンルームのプロバイダーデータセットのリスト。
例:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.link_datasets¶
説明: Snowflakeテーブルまたはビューをクリーンルームにリンクします。このプロシージャでは、クリーンルーム内にテーブルの安全な表示を作成することで、テーブルを自動的にクリーンルームにアクセスできるようにし、テーブルのコピーを作成する必要がなくなります。テーブルはソースにリンクされたままなので、ソースの更新はクリーンルーム内の安全なバージョンに反映されます。
ここでリンクされる項目は、データベース、スキーマ、オブジェクトのいずれかのレベルで、最初に登録されなければなりません。
引数:
cleanroom_name(文字列) - オブジェクトにアクセスできるクリーンルームの名前。
tables_list(文字列の配列) - クリーンルームにリンクするテーブルまたはビューのリスト。オブジェクトはリンクする前に登録する必要があります。
consumer_list(文字列の配列、オプション) - 存在する場合、このリストにあるコンシューマーだけが、これらのオブジェクトにアクセスできます。存在しない場合、クリーンルームにアクセスできる人は誰でもこのデータにアクセスできます。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.link_datasets(
$cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
注釈
ビューをクリーンルームにリンクする前に、ACCOUNTADMINロールを持つユーザーがSnowflakeで以下を実行する必要があります。
grant reference_usage on database <DB NAME> to share in application package samooha_cleanroom_<cleanroom_name>;
provider.unlink_datasets¶
説明: 指定されたクリーンルームの指定されたテーブルへのアクセスを全ユーザーに対して削除します。指定されたテーブルはプロバイダーによってリンクされている必要があります。
引数:
cleanroom_name(文字列) - これらのデータセットにリンクされているクリーンルームの名前。
tables_list(array) - クリーンルームからリンクを解除するテーブルまたはビュー名の配列。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.unlink_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
provider.view_provider_datasets¶
説明: このアカウントのプロバイダーによって指定されたクリーンルームにリンクされたすべてのテーブルとビューを表示します。
引数:
cleanroom_name(string) - クリーンルームの名前。
戻り値: 指定されたクリーンルームにリンクされているオブジェクトのテーブル、および各オブジェクトのクリーンルーム内部表示名。
例:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.restrict_table_options_to_consumers¶
説明: 特定のコンシューマーがクリーンルーム内のテーブルにアクセスできるかどうかを制御します。このプロシージャは 置換のみ のため、ここで指定されたユーザーだけがここにリストされたテーブルにアクセスすることができます。provider.link_datasets、このプロシージャの以前の呼び出し、または他のプロシージャを通じてアクセスを付与されたコンシューマーは、リストにない場合、ここにリストされたテーブルへのアクセスを失います。
引数:
*cleanroom_name(文字列)
*access_details(オブジェクト) - JSON オブジェクト。名前はテーブルまたはビューの完全修飾名で、値はアカウントロケーターの配列です。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.restrict_table_options_to_consumers(
$cleanroom_name,
{
'DB.SCHEMA.TABLE1': ['CONSUMER_1_LOCATOR'],
'DB.SCHEMA.TABLE2': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
}
);
結合ポリシーの管理¶
データクリーンルームの結合ポリシーは、Snowflake全体の結合ポリシーとは異なります。クリーンルームの結合ポリシーは、このプロシージャを使用することによってのみセットされます。クリーンルーム以外のテーブルでセットされた結合ポリシーは、クリーンルームでは無視されます。
provider.view_join_policy¶
説明: クリーンルームに現在適用されている結合ポリシーを表示します。
引数:
cleanroom_name(文字列) - クエリするクリーンルームの名前。
戻り値: (テーブル) クリーンルーム内のすべてのテーブルまたはビューの結合可能な行のリスト。
例:
call samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
provider.set_join_policy¶
説明: このクリーンルーム内でテンプレートを実行するときに、コンシューマーが結合できる列を指定します。ポリシーは、 置換のみ であることに注意してください。したがって、プロシージャが再度呼び出されると、以前にセットされた結合ポリシーは新しいものに完全に置き換えられます。
重要
テンプレートが結合行に join_policy
または join_and_column_policy
JinjaSQL フィルターを適用する時 のみ、結合ポリシーが強制されます。
注釈
データクリーンルームでの結合ポリシーは、Snowflake全体の結合ポリシーとは異なります。クリーンルームの結合ポリシーは、このプロシージャを使用することによってのみセットされます。クリーンルーム以外のテーブルでセットされた結合ポリシーは、クリーンルームでは無視されます。
引数:
cleanroom_name(文字列) - 結合ポリシーが強制されるべきクリーンルームの名前。
table_and_col_names(文字列の配列) -
database_name.schema_name.table_or_view_name:column_name
形式での完全修飾列名。 「.」と「:」マークを正しく使用することに注意してください
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.set_join_policy($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:EMAIL', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:EMAIL']);
プロバイダーテンプレートの管理¶
以下のコマンドを使用して、このクリーンルームでサポートされているテンプレート/分析を追加します。
provider.view_added_templates¶
説明: クリーンルーム内のプロバイダーが追加したテンプレートを表示します。このプロバイダーのすべてのクリーンルームのすべてのテンプレートをリストする方法はありません。
引数:
cleanroom_name(文字列) - クエリするクリーンルーム。
戻り値: (テーブル) - 指定されたクリーンルームで利用可能なテンプレートのリストで、各テンプレートの詳細が記載されています。
例:
call samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
provider.view_template_definition¶
説明: 特定のテンプレートに関する情報を表示します。プロバイダーテンプレートを見るコンシューマーは、 consumer.view_template_definition
を使うべきです。
引数:
cleanroom_name(文字列) - このテンプレートのクリーンルームの名前。
template_name(文字列) - 情報をリクエストするテンプレートの名前。
戻り値: テンプレート定義(string)
例:
call samooha_by_snowflake_local_db.provider.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
provider.add_templates¶
説明: クリーンルームにテンプレートのリストを追加します。これは既存のテンプレートリストを置き換えるものではありません。
引数:
cleanroom_name(文字列) - テンプレートを追加するクリーンルームの名前。
template_names(文字列の配列) - 追加するテンプレートの名前。Snowflakeが提供するテンプレートのみです。カスタムテンプレートを追加するには、
add_custom_sql_template
を呼び出します。Snowflakeが提供するテンプレート名には、"prod_overlap_analysis"、"prod_provider_data_analysis"などがあります。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.add_templates($cleanroom_name, ['prod_overlap_analysis']);
provider.clear_template¶
説明: クリーンルームから指定されたテンプレートを削除します。
引数:
cleanroom_name(string) - クリーンルームの名前。
template_name(文字列) - クリーンルームから削除するテンプレートの名前。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.clear_template($cleanroom_name, 'prod_custom_template');
provider.clear_all_templates¶
説明: クリーンルームに追加されたすべてのテンプレートを削除します。
引数:
cleanroom_name(文字列) - すべてのテンプレートを削除するクリーンルームの名前。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
provider.set_column_policy¶
説明: データ中のどの列がクリーンルーム内の指定されたテンプレートで非結合行として可用性を持つかをセットします。クリーンルームで使用するには、列はここで宣言されるか、 set_join_policy
で宣言されなければなりません。ここにリストされている列は、結合列以外のテンプレート内の任意の場所で使用することができます。列を列ポリシーと結合ポリシーの両方にリストすることはできません。
デフォルトでは、テーブルの列ポリシーは空で、結果には列が表示されません。
このプロシージャは、 完全に動作を置き換える ので、呼び出されるたびに、前の列リストが完全に上書きされます。
列ポリシーのチェックは、データに対して実行される SQL クエリを解析して、許可されていない列がないかどうかを調べることによって行われることに注意してください。ワイルドカードを使用したクエリは、これらのチェックでは検出されない可能性があるため、分析テンプレートを設計する際は慎重に行う必要があります。どうしてもクエリしてはいけない列がある場合は、そのような機密性の高い列を除外したソーステーブルのビューを作成し、代わりにそのビューでリンクすることを検討してください。
引数:
cleanroom_name(string) - クリーンルームの名前。
analysis_and_table_and_cols(文字列の配列) - テンプレートで使用できる列の配列。形式:
template_name:full_table_name:column_name
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.set_column_policy($cleanroom_name,
['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
-- Same example, but using a variable name for the template.
call samooha_by_snowflake_local_db.provider.set_column_policy($cleanroom_name,
[$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
provider.view_column_policy¶
説明: クリーンルームで現在アクティブな列ポリシーのリスト。列ポリシーは、どのテーブル列をどのテンプレートに表示できるかを示します。
**引数:**cleanroom_name(文字列)
戻り値: (テーブル) どの列をどのテンプレートで使用できるか。
例:
call samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
provider.add_custom_sql_template¶
説明: カスタム JinjaSQL テンプレートをクリーンルームに追加します。これにより、コンシューマーがテンプレートを呼び出せるようになります。
クリーンルームに複数のカスタムテンプレートを追加するために、この API を複数回呼び出すことができます。このプロシージャは、このクリーンルーム内の同名の以前のテンプレートを上書きします。
コンシューマーが結果をプロバイダーにアクティブ化するためにテンプレートを使用する場合、コマンドは以下の要件を満たす必要があります。
カスタムテンプレートの名前は、文字列
activation
で始まる必要があります。例えば、activation_custom_template
。テンプレートは、
cleanroom.activation_data_
で始まるテーブルを作成する必要があります。例えば、CREATE TABLE cleanroom.activation_data_analysis_results AS ...
。テンプレートは、定義で作成されたテーブル名の一意な部分を返す必要があります。これは、
cleanroom.activation_data_
に追加された文字列です。例えば、return 'data_analysis_results'
。
JinjaSQL テンプレートは2つのグローバル変数にアクセスできます。
source_table: プロバイダーテーブルの配列。テンプレートがウェブアプリを使用して実行されると、ウェブフォームを使用してコンシューマーがこれらを選択します。テンプレートがコードから実行されるとき、これらは provider_tables 引数を使用して
consumer.run_analysis
に渡されます。my_table: コンシューマーテーブルの配列。テンプレートがウェブアプリを使用して実行されると、ウェブフォームを使用してコンシューマーがこれらを選択します。テンプレートがコードから実行されるとき、これらは consumer_tables 引数を使用して
consumer.run_analysis
に渡されます。
クリーンルームに実際にリンクされているセキュアビューの名前はテーブル名と異なるため、すべてのプロバイダー/コンシューマーテーブルは、これらの引数を使用して参照する必要があります。重要なのは、プロバイダーテーブルのエイリアスはp(またはp1)、p2、p3、p4などにする 必要 があり、コンシューマーテーブルのエイリアスはc(またはc1)、c2、c3などにする 必要 があるということです。これは、クリーンルームでセキュリティポリシーを実施するために必要です。
カスタム JinjaSQL テンプレート内のユーザー指定の列はすべて、以下のフィルターを使用して結合と列のポリシーに準拠しているかチェックする必要があります。
join_policy: 文字列値またはフィルター句が結合ポリシーに準拠しているかどうかをチェックします
column_policy: 文字列値またはフィルター句が列ポリシーに準拠しているかどうかをチェックします
join_and_column_policy: フィルター句で結合に使われる列が結合ポリシーに準拠しているか、フィルターとして使われる列が列ポリシーに準拠しているかをチェックします
例えば、 {{ where_clause | sqlsafe | join_and_column_policy }}
の句で、 where_clause = 'p.HEM = c.HEM and p.STATUS = 1'
の入力は、 p.HEM
が結合ポリシーにあり、 p.STATUS
が列ポリシーにあるかどうかをチェックするために解析されます。
注: sqlsafe フィルターは、コラボレーターが純粋な SQL をテンプレートに入れることができるため、十分注意して使用してください。
引数:
cleanroom_name(文字列) - このテンプレートが適用されるクリーンルームの名前。
template_name(文字列) - テンプレートの名前。すべて小文字、数字、スペース、またはアンダースコアでなければなりません。アクティベーションテンプレートは、「activation」で始まる名前でなければなりません。
template(文字列) - JinjaSQL テンプレート。
sensitivity(浮動、オプション) - このクリーンルームで差分プライバシーが有効になっている場合、このテンプレートで消費されるデータに適用される差分プライバシーノイズの量を指定します。デフォルトは1.0で、上限はありません。この値を、クエリ結果から1行を除外することでクエリが変更できる最大値にセットします。この引数を有効にするには、このクリーンルームで差分プライバシーを有効にする必要があります。
consumer_locators(文字列の配列、オプション) - 1つ以上のアカウントロケーターの配列。存在する場合、このテンプレートはこれらのアカウントに対してのみクリーンルームに追加されます。このリストは、後で
provider.restrict_template_options_to_consumers
を呼び出して変更することができます。コンシューマーのリストを指定しない場合、すべてのコンシューマーが指定されたクリーンルームでカスタムテンプレートを使用できます。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.add_custom_sql_template(
$cleanroom_name, 'prod_custom_template',
$$
select
identifier({{ dimensions[0] | column_policy }})
from
identifier({{ my_table[0] }}) c
inner join
identifier({{ source_table[0] }}) p
on
c.identifier({{ consumer_id }}) = identifier({{ provider_id | join_policy }})
{% if where_clause %} where {{ where_clause | sqlsafe | join_and_column_policy }} {% endif %};
$$);
provider.restrict_template_options_to_consumers¶
説明: 指定されたクリーンルームの指定されたテンプレートにアクセスできるユーザーを制御します。このプロシージャは、クリーンルーム/テンプレートのペアに対して、他のプロシージャによって以前に指定されたアクセスリストを上書きします。
引数:
cleanroom_name(string) - クリーンルームの名前。
access_details(JSON オブジェクト) - テンプレートの名前と、そのクリーンルームでそのテンプレートにアクセスできるユーザー。テンプレートが指定されている場合、ここにリストされているユーザーだけがそのクリーンルームでそのテンプレートにアクセスできます。これは、以下の形式で、1つのテンプレートにつき1つの子オブジェクトを持つオブジェクトです:
{'template_name': ['user1_locator','user2_locator','userN_locator']}
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.restrict_template_options_to_consumers(
$cleanroom_name,
{
'prod_template_1': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
}
);
コンシューマー定義のテンプレート¶
以下の APIs では、クリーンルームにテンプレートを追加するコンシューマーからの要求を承認または拒否することができます。コンシューマーが定義したテンプレートは、プロバイダーがコンシューマーの追加リクエストを承認した場合のみ、クリーンルームに追加されます。詳細については、[開発者 API を使用してコンシューマー定義のテンプレートを追加する](/user-guide/cleanrooms/developer-consumer-templates)をご参照ください。
provider.list_template_requests¶
説明: クリーンルームにコンシューマー定義のテンプレートを追加したいコンシューマーからのすべてのリクエストをリストします。これには、保留中のリクエスト、承認済みのリクエスト、拒否済みのリクエストが含まれます。保留中のリクエストをチェックし、承認する(provider.approve_template_request
)あるいは拒否する(provider.reject_template_request
)ために使用します。
重要
このプロシージャを呼び出す前に、 provider.mount_request_logs_for_all_consumers
をクリーンルーム上で一度呼び出す必要があります。何度も呼び出す必要はありません。
引数:
cleanroom_name(文字列) - このクリーンルームにテンプレートを追加するコンシューマーリクエストを表示します。
戻り値: 以下の値などを含むテーブル。
request_id(文字列) - リクエストの ID。リクエストを承認または拒否するために必要です。 consumer_identifier(文字列) - リクエストを行う人のアカウントロケーター。 template_name(文字列) - コンシューマーが提供するテンプレートの名前。 template_definition(文字列) - コンシューマーが提案するテンプレートの完全な定義。 status(文字列) - リクエストのステータス: PENDING、 APPROVED、 REJECTED。
例:
call samooha_by_snowflake_local_db.provider.list_template_requests($template_name);
provider.approve_template_request¶
説明: クリーンルームへのテンプレート追加リクエストを承認します。
引数:
cleanroom_name(文字列) - ユーザーがテンプレートを追加したいクリーンルームの名前。
request_id(文字列) - 承認するリクエストの ID。
provider.list_template_requests
を呼び出し、リクエスト IDs を確認します。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.approve_template_request('dcr_cleanroom',
'01b4d41d-0001-b572');
provider.reject_template_request¶
説明: クリーンルームへのテンプレート追加リクエストを拒否します。
引数:
cleanroom_name(文字列) - ユーザーがテンプレートを追加したいクリーンルームの名前。
request_id(文字列) - 拒否するリクエストの ID。
provider.list_template_requests
を呼び出し、リクエスト IDs を確認します。reason_for_rejection(文字列) - リクエストを拒否する理由。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.reject_template_request('dcr_cleanroom',
'01b4d41d-0001-b572',
'Failed security assessment');
テンプレートチェーン¶
テンプレートチェーンの作成と管理には以下のコマンドを使います。
provider.add_template_chain¶
説明: 新しいテンプレートチェーンを作成します。テンプレートは、テンプレートチェーンに追加される前に存在していなければなりません。テンプレートチェーンは作成後、変更することはできませんが、同じ名前で新しいテンプレートチェーンを作成し、古いテンプレートチェーンを上書きすることができます。
引数:
cleanroom_name(文字列) - テンプレートチェーンを追加するクリーンルームの名前。
template_chain_name(文字列) - テンプレートチェーンの名前。
templates(オブジェクトの配列) - オブジェクトの配列。テンプレートごとに1つ。オブジェクトは以下のフィールドを含むことができます。
template_name
(文字列) - テンプレートチェーンに追加するテンプレートを指定します。provider.add_template_chain
を呼び出すことで、テンプレートがクリーンルームにすでに追加されている必要があります。cache_results
(ブール) - テンプレートチェーンの他のテンプレートがアクセスできるように、テンプレートの結果を一時的に保存するかどうかを決定します。結果をキャッシュするには、 TRUE を指定します。output_table_name
(文字列) -cache_results
= TRUE の場合、テンプレート結果が格納されるSnowflakeテーブルの名前を指定します。jinja_output_table_param
(文字列) -cache_results
= TRUE の場合、output_table_name
に格納された結果を受け入れるために他のテンプレートが含める必要のあるJinjaパラメーター名を指定します。cache_expiration_hours
(整数) -cache_results
= TRUE の場合、キャッシュ内の結果が削除されるまでの時間数を指定します。キャッシュの有効期限が切れると、次にテンプレートチェーンが実行されたときに、キャッシュはテンプレートの結果でリフレッシュされます。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.add_template_chain(
$cleanroom_name,
'my_chain',
[
{
'template_name': 'crosswalk',
'cache_results': True,
'output_table_name': 'crosswalk',
'jinja_output_table_param': 'crosswalk_table_name',
'cache_expiration_hours': 2190
},
{
'template_name': 'transaction_insights',
'cache_results': False
}
]
);
provider.view_added_template_chains¶
説明: 指定されたクリーンルームのテンプレートチェーンをリストします。
引数:
cleanroom_name(string) - クリーンルームの名前。
戻り値: (テーブル) このクリーンルームに追加された全てのテンプレートチェーンの説明。
例:
call samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
provider.view_template_chain_definition¶
説明: テンプレートチェーンの定義を返します。
引数:
cleanroom_name(文字列) - このテンプレートチェーンに関連付けられたクリーンルームの名前。
template_chain_name(文字列) - このクリーンルームに関連付けられたテンプレートチェーンの名前。
戻り値: (テーブル) 指定されたテンプレートチェーンの説明。
例:
call samooha_by_snowflake_local_db.provider.view_template_chain_definition($cleanroom_name, 'my_chain');
provider.clear_template_chain¶
説明: 指定されたクリーンルームから指定されたテンプレートチェーンを削除します。チェーンはどこにも保存されないので、チェーンを再作成したい場合は、ゼロから再作成する必要があります。
引数:
cleanroom_name(文字列) - このテンプレートチェーンに割り当てられているクリーンルーム。
template_chain_name(文字列) - このクリーンルームから削除するテンプレートチェーン。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'my_chain');
provider.clear_all_template_chains¶
説明: 指定されたクリーンルームからすべてのテンプレートチェーンを削除します。
引数:
cleanroom_name(文字列) - すべてのテンプレートチェーンを削除するクリーンルームの名前。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.clear_all_template_chains($cleanroom_name);
マルチプロバイダー分析¶
これらのプロシージャはマルチプロバイダー分析を可能にします。
provider.enable_multiprovider_computation¶
説明: このプロシージャは、複数のSnowflakeクリーンルームのテーブルと、場合によっては異なるプロバイダーのテーブルを、コンシューマーが提供する単一のテンプレートで使用できるようにします。どのクリーンルームとどのクリーンルームを組み合わせて、他のユーザーがクエリできるか指定します。
引数:
cleanroom_name(文字列) - 所有するクリーンルームの名前。このクリーンルームの全データは、下記のユーザーからのリクエストに応じて、下記の他のクリーンルームと共有することができます。
consumer_account(文字列) - リクエストを行うことを許可され、承認された場合、
approved_other_cleanrooms
にリストされたクリーンルームからのデータと組み合わせて、このクリーンルーム内の任意のテーブルに対してクエリを実行することを許可されたコンシューマーのアカウントロケーター。approved_other_cleanrooms(文字列の配列) - このクリーンルームからのデータを結合できる完全修飾されたクリーンルーム名の配列。各エントリの形式は、
provider_org_name.provider_account_name.cleanroom_name
です。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
CALL samooha_by_snowflake_local_db.provider.enable_multiprovider_computation(
$cleanroom_name,
$consumer_account_locator,
'org1.account123',
$cleanroom_name_2);
provider.process_multiprovider_request¶
説明: コンシューマーが送信したマルチクリーンルームクエリリクエストを評価します。リクエストは、 provider.enable_multiprovider_computation
への以前の呼び出しでリクエスト元とクリーンルームがリストされているかどうか、リクエストの年齢などの要因に基づいて評価されます。評価に合格したリクエストは承認されます。
デフォルトでは、すべてのマルチプロバイダーリクエストはこのプロシージャを使用して処理されなければなりません。リクエストを自動的に処理したい場合は、 provider.resume_multiprovider_tasks
を呼び出してください。
リクエストが評価されると、リクエストと評価ステータスが以下に書き込まれます
- samp:
samooha_cleanroom_${CLEANROOM_NAME}.admin.request_log_multiprovider
テーブル(そして、評価に合格すればリクエストは承認されます)。このテーブルをクエリすると、リクエストのリストと評価ステータスを見ることができます。
SELECT * FROM samooha_cleanroom_Samooha_Cleanroom_Multiprovider_Clean_Room_1.admin.request_log_multiprovider;
承認されたリクエストにより、同じコンシューマーは同じデータに対して何度でも同じクエリを実行することができます。後で許可を取り消したい場合は、ログテーブルで承認ステータスを FALSE にセットする必要があります。
UPDATE samooha_cleanroom_Samooha_Cleanroom_Multiprovider_Clean_Room_1.admin.request_log_multiprovider SET APPROVED=False WHERE <CONDITIONS>;
引数:
cleanroom_name(文字列) - コンシューマーがマルチプロバイダー分析に含めるよう求めているクリーンルームの名前。
consumer_account(文字列) - マルチプロバイダー分析をリクエストするユーザーのコンシューマーアカウントロケーター。このロケーターは、
provider.enable_multiprovider_computation
への呼び出しで、リクエストにリストされたこのクリーンルームと他のクリーンルームについて承認されている必要があります。request_id(文字列) -
provider.view_multiprovider_requests
からの承認するリクエスト ID。また、保留中のリクエストをすべて承認するには、「-1」を渡します。以前に処理されたリクエストでこれを呼び出すと失敗します。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
CALL samooha_by_snowflake_local_db.provider.process_multiprovider_request($cleanroom_name_1, $consumer_account_locator, $request_id);
provider.view_multiprovider_requests¶
説明: 指定されたアカウントとクリーンルームからのマルチプロバイダー分析のすべてのリクエストを表示します。
引数:
cleanroom_name(文字列) - このクリーンルームを含むリクエストを表示します。
consumer_account(文字列) - このコンシューマーアカウントからのリクエストを表示します。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.suspend_multiprovider_tasks¶
説明:
引数:
cleanroom_name(文字列) -
consumer_account(文字列) -
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.resume_multiprovider_tasks¶
説明:
引数:
cleanroom_name(文字列) -
consumer_account(文字列) -
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
プロバイダーのアクティベーション¶
アクティベーション とは、プロバイダー、コンシューマー、またはサードパーティに結果をエクスポートすることを意味します。アクティベーションについてもっと読む。。
provider.set_activation_policy¶
説明: アクティベーションテンプレート内で使用できる列を定義します。プロバイダーによって承認された列のみがアクティベーションテンプレートで使用できるようにします。
引数:
cleanroom_name(文字列) - アクティベーションが許可されるべきクリーンルームの名前。
columns(文字列の配列) - ここにリストされた列のみが、このクリーンルームのアクティベーションテンプレートで使用できます。列名の形式は
template_name:fully_qualified_table_name:column_name
です。 ドット「.」とコロン「:」マーカーの適切な使用に注意してください。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.set_activation_policy('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.request_provider_activation_consent¶
説明: プロバイダーが指定されたテンプレートを実行し、結果をプロバイダーのSnowflakeアカウントにプッシュすることを許可するリクエストをコンシューマーに送信します。 引数:
cleanroom_name(文字列) - アクティベーションテンプレートを含むクリーンルーム。
template_name(文字列) - 承認をリクエストするアクティベーションテンプレートの名前。このテンプレートは、以前の呼び出しでクリーンルームに追加されている必要があります。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.request_provider_activation_consent(
$cleanroom_name, 'activation_my_activation_template');
プロバイダーとして分析を実行する¶
provider.enable_provider_run_analysis¶
説明: プロバイダー(クリーンルーム作成者)が指定されたクリーンルームで分析を実行できるようにします。デフォルトでは無効になっています。プロバイダーは、 provider.submit_analysis_request
を呼び出すことによって、各分析について自動化されたセキュリティチェックをパスしなければなりません。
重要
このプロシージャは、 provider.add_consumers
の 後、コンシューマーがクリーンルームをインストールする前に、呼び出されなければなりません。コンシューマーがすでにクリーンルームをインストールした後にこれを変更した場合、コンシューマーは新しい構成を反映させるためにクリーンルームをインストールし直す必要があります。
引数:
cleanroom_name(文字列) - プロバイダーが実行する分析を有効にするべきクリーンルームの名前。
consumer_accounts(文字列の配列) - このクリーンルームにデータを追加したすべてのコンシューマーアカウントのアカウントロケーター。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.enable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
provider.disable_provider_run_analysis¶
説明: プロバイダー(クリーンルーム作成者)がクリーンルームで分析を実行できないようにします(デフォルトでは無効になっています)。
重要
このプロシージャは、 provider.add_consumers
の 後、コンシューマーがクリーンルームをインストールする前に、呼び出されなければなりません。既にクリーンルームをインストールされた後に変更された場合は、新しい設定を反映させるためにクリーンルームをインストールし直す必要があります。
引数:
cleanroom_name(文字列) - プロバイダーが実行する分析を無効にするべきクリーンルームの名前。
consumer_account_locator(文字列) -
provider.enable_provider_run_analysis
に渡されたコンシューマーアカウント名のリストと同じ。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.disable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
library.is_provider_run_enabled¶
説明: このクリーンルームがプロバイダーが実行する分析を許可しているかどうかをチェックします。
引数:
cleanroom_name(文字列) - チェックするクリーンルームの名前。
戻り値: (文字列) このクリーンルームがプロバイダーが実行する分析を許可するかどうか。
例:
call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
provider.submit_analysis_request¶
説明: 指定されたクリーンルームで指定されたテンプレートを実行する許可をコンシューマーに求めます。このプロシージャを呼び出す前に、以下の条件をすべて満たしている必要があります。
プロバイダーは、このクリーンルームでプロバイダーが実行する分析を有効にする必要があります。
コンシューマーは、指定されたテンプレートに対して承認されたプロバイダーが実行する分析を持っている必要があります。
テンプレートはクリーンルーム内で実行され、結果はクリーンルーム内に安全に保管されます。結果は暗号化されるため、プロバイダーだけが結果を見ることができます。
引数:
cleanroom_name(文字列) - テンプレートを実行するクリーンルームの名前。
consumer_account_locator(文字列) -
consumer.enable_templates_for_provider_run
を呼び出すことによってプロバイダーが実行する分析を許可した、このクリーンルーム内のコンシューマーのアカウントロケーター。template_name(文字列) - 実行するテンプレートの名前。
provider_tables(array) - テンプレートに公開するプロバイダーテーブルのリスト。このリストは、
source_table
配列変数に入力されます。consumer_tables(array) - テンプレートに公開するコンシューマーテーブルのリスト。このリストは、
my_table
配列変数に入力されます。analysis_arguments(オブジェクト) - 各キーが、作成したテンプレートで使用される引数名である JSON オブジェクト。
戻り値: (文字列) リクエスト ID はリクエストのステータスを確認し、結果にアクセスするために使用されます。分析結果を見るために必要なので、 この ID を保存 しておいてください。
例:
call samooha_by_snowflake_local_db.provider.submit_analysis_request(
$cleanroom_name,
'<CONSUMER_ACCOUNT>',
'prod_overlap_analysis',
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
object_construct(
'dimensions', ['c.REGION_CODE'],
'measure_type', ['AVG'],
'measure_column', ['c.DAYS_ACTIVE']
));
provider.check_analysis_status¶
説明: プロバイダーはこのプロシージャを呼び出し、プロバイダー分析リクエストのステータスを確認します。リクエストのステータスを確認できるようになるまでには、かなりの時間がかかることがあります。分析が完了したとマークされたら、 provider.get_analysis_result
を呼び出して結果を確認します。
引数:
cleanroom_name(文字列) - リクエストが行われたクリーンルームの名前。
request_id(文字列) -
provider.submit_analysis_request
によって返されるリクエストの ID。consumer_account_locator(文字列) - リクエストが送信されたコンシューマーのアカウントロケーター。
戻り値: (文字列) リクエストのステータス。 COMPLETED
は分析の正常終了を意味します。
例:
-- It can take up to 2 minutes for this to pick up the request ID after the initial request
call samooha_by_snowflake_local_db.provider.check_analysis_status(
$cleanroom_name,
$request_id,
'<CONSUMER_ACCOUNT>'
);
provider.get_analysis_result¶
説明: プロバイダーが実行する分析の結果を取得します。結果を得るには、分析ステータスが COMPLETED とリストされるまで待つ必要があります。結果はクリーンルーム内で無期限に持続します。
引数:
cleanroom_name(文字列) - リクエストが送信されたクリーンルームの名前。
request_id(文字列) -
submit_analysis_request
によって返されるリクエストの ID。consumer_account_locator(文字列) -
submit_analysis_request
に渡されたコンシューマーのアカウントロケーター。
戻り値: (テーブル) クエリ結果。
例:
call samooha_by_snowflake_local_db.provider.get_analysis_result(
$cleanroom_name,
$request_id,
$locator
);
クリーンルームの共有の管理¶
以下のコマンドを使用して、コンシューマーとクリーンルームを共有することを管理します。
provider.view_consumers¶
説明: クリーンルームへのアクセスを許可されたコンシューマーのリスト。コンシューマーがクリーンルームをインストールしたかどうかは表示されません。
引数:
cleanroom_name(文字列) - 対象のクリーンルーム。
戻り値: (テーブル) - クリーンルームにアクセスできるコンシューマーアカウントのリスト。
例:
call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
provider.add_consumers¶
説明: 指定されたユーザーに指定されたクリーンルームへのアクセスを付与します。クリーンルームはウェブアプリと API の両方からアクセスできます。この場合、以前の呼び出しによるコンシューマーリストは上書きされません。クリーンルームへのアクセスは、アカウント全体ではなく、特定のユーザーに付与されます。コンシューマーアカウントがクリーンルームにアクセスするには、プロバイダーと同じSnowflakeリージョンにいる必要があることに注意してください。select current_region();
を呼び出すことで、リージョンを確認することができます
provider.view_consumers
を呼び出すと、現在のコンシューマーのリストを見ることができます。
引数:
cleanroom_name(文字列) - 指定したユーザーと共有するクリーンルームの名前。ユーザーは、 API またはウェブアプリのいずれかを使用してクリーンルームをインストールできます。
consumer_account_locators(文字列) - CURRENT_ACCOUNTが返すコンシューマーアカウントロケーターのカンマ区切りリスト。このリストには、
consumer_account_names
に含まれるのと同じ数のエントリを、同じ順番で含める必要があります。consumer_account_names(文字列) - コンシューマーアカウント名のカンマ区切りリストで、形式は
org_name.account_name
です。組織名はCURRENT_ORGANIZATION_NAMEを呼び出すことで取得できます。アカウント名はCURRENT_ACCOUNT_NAMEを呼び出すことで取得できます。このリストには、consumer_account_locators
にリストされているのと同じ数の項目を、同じ順番で含める必要があります。enable_differential_privacy_tasks(ブール、オプション、デフォルト: FALSE) - このクリーンルームで、リストされたユーザーの差分プライバシーを有効にするかどうか。TRUE を指定するには、このクリーンルームで差分プライバシーを有効にする必要があります。
戻り値: (文字列) 成功または失敗のメッセージ。プロシージャは、ユーザーロケーターやアカウント名を検証しないので、成功は、提出されたロケーターがこのクリーンルームのデータベースに追加されたことだけを示すことに注意してください。
例1:
call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'LOCATOR1,LOCATOR2', 'ORG1.NAME1,ORG2.NAME2');
provider.remove_consumers¶
説明: 指定されたクリーンルームへのアカウントアクセスを削除します。この方法は、提供されたアカウントのすべてのユーザーからのアクセスをブロックします。
provider.view_consumers
を呼び出すと、現在のコンシューマーのリストを見ることができます。
引数:
cleanroom_name(文字列) - クリーンルームの ID (ユーザーフレンドリーな名前ではありません)。
cleanroom_account_locators(文字列) - ユーザーアカウントロケーターのカンマ区切りリスト。アカウント内の全ユーザーはクリーンルームへのアクセスを失います。
戻り値: (文字列) - 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.remove_consumers($cleanroom_name, 'locator1,locator2,locator3');
provider.set_cleanroom_ui_accessibility¶
説明: このプロバイダーアカウントにログインしているすべてのユーザーに対して、ウェブアプリのクリーンルームを表示または非表示にします。
引数:
cleanroom_name(string) - クリーンルームの名前。
visibility_status(文字列) - 以下の大文字と小文字を区別する値のいずれか。
HIDDEN - 現在のプロバイダーアカウントのすべてのユーザーからウェブアプリのクリーンルームを非表示にします。クリーンルームへは、引き続き API 呼び出しでアクセスできます。
EDITABLE - クリーンルームをウェブアプリで見えるようにします。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.set_cleanroom_ui_accessibility($cleanroom_name, 'HIDDEN');
provider.enable_laf_for_cleanroom¶
説明: クロスクラウド自動フルフィルメントを有効にすることで、プロバイダーのアカウントと異なるリージョンにあるSnowflakeアカウントを持つコラボレーターとクリーンルームを共有することができます。クロスクラウド自動複製は、リストの自動複製(LAF)とも呼ばれています。
デフォルトでは、クロスクラウド自動フルフィルメントは、それが環境に有効であっても、新しいクリーンルームのためにオフになっています。
重要
このコマンドを実行する 前に、 ACCOUNTADMIN ロールを持つSnowflake管理者が、Snowflakeアカウントでクロスクラウド自動フルフィルメントを有効にする必要があります。Snowflakeアカウントでクロスクラウド自動フルフィルメントを有効にする手順については、異なるリージョンのアカウントとのコラボレーションを参照してください。
他リージョンのコンシューマーと協力するためには、さらにコストがかかります。これらのコストの詳細については、クロスクラウド自動フルフィルメントコストをご参照ください。
引数:
cleanroom_name(文字列) - リージョン間で共有されるべきクリーンルームの名前。個々のクリーンルームを共有する前に、管理者がアカウントに対してクロスクラウド自動フルフィルメントを有効にする必要があります。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.enable_laf_for_cleanroom($cleanroom_name);
library.is_laf_enabled_on_account¶
説明: このアカウントでクロスクラウド自動フルフィルメントが有効かどうかを返します。
戻り値: このアカウントでクロスクラウド自動フルフィルメントが有効な場合は TRUE、そうでない場合は FALSE。
例:
call samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();
クリーンルームでのPythonの使用¶
provider.load_python_into_cleanroom¶
説明: カスタムPython関数をクリーンルームにロードします。このプロシージャを使用してクリーンルームにロードされたコードは、コンシューマーからは見えません。アップロードされたコードはJinjaテンプレートから呼び出すことができます。
クリーンルームでPythonコードをアップロードして使う方法を学習しましょう。
このプロシージャは、クリーンルームのパッチ番号をインクリメントし、セキュリティスキャンをトリガーします。最新バージョンをコラボレーターと共有するには、スキャンステータスが APPROVED になるまで待つ必要があります。
このプロシージャはオーバーロードされており、5番目の引数のデータタイプが異なる2つの署名を持っています。これは、コードをインラインでアップロードするか、ステージでファイルからロードするかを決定します。
署名¶
インライン UDF アップロード:
(cleanroom_name String, function_name String, arguments Array, packages Array, rettype String, handler String, code String)
ステージから UDF アップロード:
(cleanroom_name String, function_name String, arguments Array, packages Array, imports Array, rettype String, handler String)
引数:
cleanroom_name(文字列) - スクリプトをロードするクリーンルームの名前。
function_name(文字列) - このパッケージの名前。 handler で指定された関数を arguments で指定された引数で呼び出すには、カスタムテンプレート内でこの名前を使用します。
arguments(文字列ペアの配列) - 関数 function_name が必要とする引数の配列。各引数はスペースで区切られた文字列のペアで、引数の名前と引数の SQL データ型が記載されています。これはユーザーのドキュメントに使用され、検証されません。例: 'size integer'、'month string'、'data variant'。
packages(文字列の配列) - コードが使用するPythonパッケージ名のリスト。これらはPythonの標準パッケージでなければなりません。 UDFs はアップロードされた他の UDFs を呼び出すことはできません。
imports(単一要素の文字列の配列) - ステージから UDF をアップロードするときのみ表示されます。これは、コードをアップロードしたステージを基準としたステージアドレスという、単一の要素を持つ文字列の配列です。ルートステージのパスは、
provider.get_stage_for_python_files
を呼び出すことで利用可能になります。ret_type(文字列) - 関数 handler によって返される値の SQL データ型。例: 'integer'、'variant'。
handler(文字列) - テンプレートが function_name を呼び出したときに呼び出されるコード内のエントリポイント関数。
インライン UDF の場合、これは関数名です。例:
main
。ステージからアップロードされたコードの場合、これはソースファイル名で修飾された関数名です。例:
myscript.main
。
code(文字列) - インラインコードとして UDF をアップロードする場合にのみ存在します。これはPython UDFであるべきです。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
-- Inline UDF
call samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
$cleanroom_name,
'assign_group', # Name of the UDF
['data variant', 'index integer'], # Arguments of the UDF, along with their type
['pandas', 'numpy'], # Packages UDF will use
'integer', # Return type of UDF
'main', # Handler
$$
import pandas as pd
import numpy as np
def main(data, index):
df = pd.DataFrame(data) # you can do something with df but this is just an example
return np.random.randint(1, 100)
$$
);
-- Upload from stage
call samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
$cleanroom_name,
'myfunc', # Name of the UDF
['data variant', 'index integer'], # Arguments of the UDF
['numpy', 'pandas'], # Packages UDF will use
['/test_folder/assign_group.py'], # Python file to import from a stage
'integer', # Return type of UDF
'assign_group.main' # Handler scoped to file name
);
provider.get_stage_for_python_files¶
説明: クリーンルームでカスタムPythonコードを定義するために、インラインコード定義ではなくステージにアップロードされたコードファイルを使用する予定の場合、Pythonファイルがアップロードされるべきステージパスを返します。provider.load_python_into_cleanroom
を呼び出してファイルがアップロードされるまで、ステージは存在せず、調べることもできません。
クリーンルームでPythonコードをアップロードして使う方法を学習しましょう。
引数:
cleanroom_name(文字列) - ファイルをアップロードするクリーンルームの名前。
戻り値: (文字列) コードファイルをアップロードするパス。provider.load_python_into_cleanroom
の imports 引数にこれを使用します。
例:
call samooha_by_snowflake_local_db.provider.get_stage_for_python_files($cleanroom_name);
provider.view_cleanrooom_scan_status¶
説明: DISTRIBUTION を EXTERNAL にセットしたクリーンルームの脅威スキャンステータスを報告します。デフォルトのリリースディレクティブをセットまたは変更する前に、スキャンを「APPROVED」としてマークする必要があります。スキャンステータスは、 EXTERNAL クリーンルームでのみ確認する必要があります。
引数:
cleanroom_name(文字列) - ステータスをチェックするクリーンルームの名前。
戻り値: (文字列) スキャンステータス。
例:
call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name);
クリーンルームのメタデータゲッターコマンド¶
クリーンルームの関連プロパティを表示するには、以下のコマンドを使用します。
provider.mount_request_logs_for_all_consumers¶
説明: クリーンルームのコンシューマーからプロバイダーへ戻ってくる情報にプロバイダーがアクセスできるようにします。
.. # TODO: これについての詳細が必要です--どのログが最初にこれを呼び出す必要があるのでしょうか?)
引数:
cleanroom_name(文字列) - リクエストログをマウントするクリーンルームの名前。
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
provider.view_request_logs¶
説明: このクリーンルームのコンシューマーから送信されたリクエストログを表示します。これを初めて呼び出す前に、 mount_request_logs_for_all_consumers
を呼び出す必要があります。
.. # TODO: どんなリクエストがログに記録されますか?)
引数:
cleanroom_name(文字列) - リクエストログをレビューするクリーンルームの名前。
戻り値: クリーンルーム(テーブル)に対して実行されているクエリの記録されたログのセット
例:
call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
差分プライバシー¶
これらのコマンドは、クリーンルーム内の差分プライバシーを制御します。provider.add_custom_sql_template
または provider.add_consumers
を呼び出す際に、テンプレートまたはコンシューマーレベルで差分プライバシーを指定することもできます。
provider.is_dp_enabled_on_account¶
説明: このアカウントで差分プライバシーが有効になっているかどうかを記述します。
引数: なし
戻り値: このアカウントで差分プライバシーが有効になっている場合は TRUE、そうでない場合は FALSE。
例:
call samooha_by_snowflake_local_db.provider.is_dp_enabled_on_account();
provider.suspend_account_dp_task¶
説明: 差分プライバシー信号をリッスンするタスクを無効にします。これはアカウントにおける差分プライバシーに関連するコストを制御するために使用されます。差分プライバシータスクが無効にされた場合、差分プライバシーによるコストは発生しませんが、差分プライバシーが指定された既存のテンプレートで差分プライバシーが動作し続けるかもしれませんし、動作しないかもしれません。差分プライバシーの管理についての詳細をご覧ください。
引数: なし
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.suspend_account_dp_task();
provider.resume_account_dp_task¶
説明: 現在のアカウントの差分プライバシータスクリスナーを再開します。差分プライバシーを持つテンプレートが再び機能し始めます。以前にセットされた差分プライバシーの値(感度や関連ユーザーなど)は保持されます。
引数: なし
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.resume_account_dp_task();
一般的なヘルパーコマンド¶
クリーンルームの機能とサポートされているフローを活用するために、一般的に以下のコマンドを使用します。
library.enable_local_db_auto_upgrades¶
説明: タスク samooha_by_snowflake_local_db.admin.expected_version_task
を有効にします。このタスクは、新しいバージョンがリリースされると、Snowflake Data Clean Rooms Native Appを自動的にアップグレードします。このタスクを無効にすることでコストを削減できるかもしれませんが、システム上にクリーンルームネイティブアプリの最新バージョンがあることを確認するために、このタスクを実行したままにすることをお勧めします。
引数: なし
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
library.disable_local_db_auto_upgrades¶
説明: タスク samooha_by_snowflake_local_db.admin.expected_version_task
を無効にします。このタスクは、新しいバージョンがリリースされると、Snowflake Data Clean Rooms Native Appを自動的にアップグレードします。
**引数:**なし
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
非推奨プロシージャ¶
以下のプロシージャは非推奨であり、ここでは念のためリストアップしています。交換プロシージャが示されている場合は、新しいプロシージャを使用してください。
provider.view_ui_registration_request_log -- DEPRECATED¶
注意
このコマンドは非推奨となりました。 ウェブアプリで使用するクリーンルームテンプレートを手動で登録する必要はなくなりました。
説明: クリーンルームをウェブアプリに登録するためにアカウントから発生したリクエストのリストを表示します。リクエストごとに関連付けられた ID があります。これは、 view_ui_registration_log
プロシージャと併用して、リクエストのステータスを表示できます。リクエストはバックエンドに共有され、そこで処理され、クリーンルームがクリーンルームに追加されます。
引数:
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
library.register_table_or_view -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.register_objectsを使用してください。
説明: あらゆるタイプのテーブルとビューを登録します。
**引数:**object_names(array)、is_view(boolean)、is_iceberg(boolean)、is_external(boolean)、is_under_managed_access_schema(boolean)
戻り値: (文字列) 成功または失敗のメッセージ。
例
テーブルを登録するには:
call samooha_by_snowflake_local_db.library.register_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
false,
false,
false);
Icebergテーブルを登録するには:
call samooha_by_snowflake_local_db.library.register_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
true,
false,
false);
library.register_table -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.register_objectsを使用してください。
説明: register_db
と似ていますが、テーブルレベルで操作します。このテーブルの SELECT 権限を SAMOOHA_APP_ROLE ロールに付与し、ユーザーがテーブルをクリーンルームにリンクできるようにします。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)にテーブルを登録したい場合は、代わりに library.register_managed_access_table
を使用してください。
**引数:**table_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_table -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.register_objectsを使用してください。
説明: register_table
と似ていますが、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマのテーブルを登録します。完全修飾されたテーブル名を表す配列または文字列を渡すことができ、SAMOOHA_APP_ROLEロールへのグラント選択が行われ、ユーザーはテーブルをクリーンルームにリンクすることができます。
**引数:**table_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_view -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.register_objectsを使用してください。
説明: register_db
と似ていますが、ビューレベルで操作します。完全修飾されたビュー名を表す配列または文字列を渡すことができ、 SAMOOHA_APP_ROLE ロールへの付与選択が行われ、ユーザーはビューをクリーンルームにリンクすることができます。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)にビューを登録したい場合は、代わりに library.register_managed_access_view
を使用してください。
**引数:**view_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_view -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.register_objectsを使用してください。
説明: register_view
と似ていますが、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマのビューを登録します。完全修飾されたビュー名を表す配列または文字列を渡すことができ、 SAMOOHA_APP_ROLE ロールへの付与選択が行われ、ユーザーはビューをクリーンルームにリンクすることができます。
**引数:**view_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_table_or_view -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.unregister_objectsを使用してください。
説明: すべてのタイプのテーブルとビューの登録を解除します。
**引数:**object_names(array)、is_view(boolean)、is_iceberg(boolean)、is_external(boolean)、is_under_managed_access_schema(boolean)
戻り値: (文字列) 成功または失敗のメッセージ。
例
テーブルの登録を解除するには:
call samooha_by_snowflake_local_db.library.unregister_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
false,
false,
false);
library.unregister_table -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.unregister_objectsを使用してください。
説明: unregister_db
と似ていますが、テーブルレベルで操作します。テーブルの登録を解除するために、完全修飾テーブル名を表す配列または文字列を渡すことができます。未登録のテーブルをクリーンルームにリンクすることはできません。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)のテーブルの登録を解除したい場合は、代わりに library.unregister_managed_access_table
を使用してください。
**引数:**table_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_table -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.unregister_objectsを使用してください。
説明: unregister_table
と似ていますが、管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)のテーブルの登録を解除します。
**引数:**table_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_view -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.unregister_objectsを使用してください。
説明: unregister_db
と似ていますが、ビューレベルで操作します。ビューの登録を解除するには、完全修飾したビュー名を表す配列あるいは文字列を渡します。未登録のビューをクリーンルームにリンクすることはできません。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)内のビューの登録を解除したい場合は、代わりに library.unregister_managed_access_view
を使用してください。
**引数:**view_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_view -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにlibrary.unregister_objectsを使用してください。
説明: unregister_view
と似ていますが、管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターを使用して作成されたスキーマ)のビューの登録を解除します。
**引数:**view_name(array)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
provider.create_cleanroom_listing -- 非推奨¶
注意
このコマンドは非推奨となりました。 代わりにprovider.create_or_update_cleanroom_listingを使用してください。
説明: クリーンルームが構成された後、Snowflake Marketplaceにクリーンルームのプライベートリストを作成し、指定されたコラボレーターと共有します。
orgname.account_name
フォーマットのアカウントURLを用いてコラボレーターを識別子とします。コンシューマーは、アカウントの組織名とアカウント名の検索の指示に従って、この文字列を見つけることができます。
注釈
このプロシージャを使うには、リリースディレクティブをセットしておく必要があります。詳細は[provider.set_default_release_directive](#provider-set-default-release-directive)を参照してください。
引数: cleanroom_name(文字列)、consumer_account_name(文字列)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.create_cleanroom_listing($cleanroom_name, <consumerorg.consumeracct>);
provider.register_cleanroom_in_ui -- DEPRECATED¶
注意
このコマンドは非推奨となりました。 ウェブアプリで使用するクリーンルームテンプレートを手動で登録する必要はなくなりました。
説明: コンシューマーがウェブアプリで使用するクリーンルームを登録します。クリーンルームはプロバイダーが開発者APIsを使って作成・設定します。このコマンドは、コンシューマーがインストールし、テーブルを追加し、開発者 APIs を使用せずに追加したカスタム分析を実行できるように、ウェブアプリに登録します。クリーンルームとの連携は、ウェブインターフェイスを通じて行います。
ウェブアプリに複数のカスタムテンプレートを含めるために、この API を複数回呼び出すことができます。
**引数:**cleanroom_name(文字列)、template name(文字列)、consumer_account_locator(文字列)、user_email(文字列)
戻り値: (文字列) 成功または失敗のメッセージ。
例:
call samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)