Snowflakeデータクリーンルーム:コンシューマーAPIリファレンスガイド¶
以下のコンテンツは、Snowflakeデータクリーンルームがコンシューマー向けに提供するすべての開発者APIsの詳細です。すべての関数は以下のスキーマの中にあります。
samooha_by_snowflake_local_db.consumer
環境設定¶
開発者APIsを使用してSnowflake Data Clean Roomで作業する前に、以下のコマンドを実行してSnowflake環境をセットアップします。SAMOOHA_APP_ROLEのロールをお持ちでない場合は、アカウント管理者にお問い合わせください。
use role samooha_app_role;
use warehouse app_wh;
プロバイダーが共有したクリーンルームの名前を割り当てます。
set cleanroom_name = 'Test Cleanroom 1';
クリーンルームをインストールする¶
プロバイダーが共有するクリーンルームを以下のコマンドでインストールします。
consumer.install_cleanroom¶
説明:関連プロバイダーと選択されたクリーンルームを使って、クリーンルームをコンシューマーアカウントにインストールします。
引数: cleanroom_name(string)、provider_account_locator(string)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, '<PROVIDER_ACCOUNT_LOCATOR>');
consumer.is_enabled¶
説明: クリーンルームのインストールが完了すると、プロバイダー側で設定が完了し、使用可能になるまで約1分かかります。この関数により、ユーザーはクリーンルームのステータスを確認し、有効かどうかを確認することができます。クリーンルームのインストール後、通常1分程度でフラグが「真」に切り替わります。
引数: cleanroom_name(string)
戻り値: 有効(boolean)
例:
call samooha_by_snowflake_local_db.consumer.is_enabled($cleanroom_name);
consumer.uninstall_cleanroom¶
説明:コンシューマーアカウントのクリーンルームをアンインストールします。これにより、共有クリーンルームデータベースを含む、クリーンルームに関連するすべてのデータベースが削除されます。クリーンルームは consumer.install_cleanroom で随時再インストールできることに注意してください。
引数: cleanroom_name(string)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
プロバイダー実行分析を設定する¶
library.is_provider_run_enabled¶
説明: このクリーンルームがプロバイダー実行分析を有効にしているかチェックします。注意:consumer.enable_templates_for_provider_runを呼び出すことによって、明示的な承認を与える必要があります (以下を参照)。
引数: cleanroom_name(string)
戻り値: 有効メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
library.is_consumer_run_enabled¶
説明: このクリーンルームでコンシューマー実行分析が有効になっているかどうかをチェックします。このフラグは、クリーンルームの利用者(インストール担当者)が分析を実行できるかどうか、またはコラボレーションへのデータ提供者として機能するかどうかを決定します。
引数: cleanroom_name(string)
戻り値: 有効メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
consumer.enable_templates_for_provider_run¶
説明: クリーンルームがプロバイダー実行分析を有効にしている場合 (すなわち、クリーンルームのプロバイダーが、プロバイダーが分析を実行できるようにクリーンルームをマークしている場合)、それらを有効にするために、このプロシージャをコンシューマーが呼び出す必要があります。この手続きは、分析を実行したいプロバイダーに対して、テンプレートごとに明確な承認を与えるために必要です。
最後のブール値パラメータは、TRUEに設定された場合、コンシューマーがプロバイダーの分析のための差分プライバシーを有効にすることを可能にします。
引数:
cleanroom_name(string) - クリーンルームの名前。
template_names(文字列の配列) - クリーンルーム内の、プロバイダー分析を有効にする1つ以上のテンプレートの配列
enable_differential_privacy(ブール) - TRUE の場合、
template_names
にリストされている全てのテンプレートに対して、差分プライバシーを有効にします。差分プライバシーは、差分プライバシーがクリーンルーム自体で有効になっている場合にのみ、これらのテンプレートで有効にすることができます。consumer.is_dp_enabled
を呼び出すことで、クリーンルームの差分プライバシーステータスを確認できます。
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.enable_templates_for_provider_run($cleanroom_name, ['prod_overlap_analysis'], FALSE);
データの登録および登録解除¶
以下のコマンドを使用して、データベース、スキーマ、オブジェクトの登録および登録解除を行います。テーブルとビューは、クリーンルームにリンクする前に登録する必要があります。データベースまたはスキーマを登録すると、そのデータベースまたはスキーマ内のすべてのオブジェクトが登録されます。
consumer.register_db¶
説明: クリーンルームにデータベースを追加することで、データベースから任意のデータセットをリンクすることができます。これが呼び出されない場合、samooha_app_roleに個別に付与する必要があります。
引数: db_name(string)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.register_db('SAMOOHA_SAMPLE_DATABASE');
library.register_schema¶
説明: register_db
と似ていますが、スキーマレベルで操作します。完全修飾されたテーブル名を表す配列または文字列を渡すことができ、 SAMOOHA_APP_ROLE ロールへの付与選択が行われ、ユーザーはテーブルをクリーンルームにリンクすることができます。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)を登録したい場合は、代わりに library.register_managed_access_schema
を使用します。
引数: schema_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_managed_access_schema¶
説明: register_schema
と似ていますが、 WITH MANAGED ACCESS パラメーターで作成されたスキーマを登録します。完全修飾されたテーブル名を表す配列または文字列を渡すことができ、 SAMOOHA_APP_ROLE ロールへの付与選択が行われ、ユーザーはテーブルをクリーンルームにリンクすることができます。
引数: schema_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_objects¶
説明: consumer.link_datasets
を呼び出すことで、クリーンルームにすべてのタイプのテーブルとビューへのアクセスを付与し、それらをクリーンルームにリンクできるようにします。library.register_schema
、 library.register_managed_access_schema
、 consumer.register_db
を呼び出すことで、より広範なオブジェクトグループを登録することができます。
引数:
object_names(array) - 完全修飾したオブジェクト名の配列。これらのオブジェクトは、クリーンルームにリンクすることができます。
戻り値: 成功メッセージ(string)
例
テーブルとビューを登録するには
call samooha_by_snowflake_local_db.library.register_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
library.register_table_or_view -- 非推奨¶
注意
このコマンドは非推奨です。 [library.register_objects](#cleanroom_consumer_library_register_objects)を使用してください。
説明: あらゆるタイプのテーブルとビューを登録します。
引数: object_names(array)、is_view(boolean)、is_iceberg(boolean)、is_external(boolean)、is_under_managed_access_schema(boolean)
出力: success message (string)
例
テーブルを登録するには:
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](#cleanroom_consumer_library_register_objects)を使用してください。
説明:register_db
と似ていますが、テーブルレベルで操作します。完全修飾されたテーブル名を表す配列または文字列を渡すことができ、SAMOOHA_APP_ROLEロールへのグラント選択が行われ、ユーザーはテーブルをクリーンルームにリンクすることができます。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)にテーブルを登録したい場合は、代わりに library.register_managed_access_table
を使用してください。
引数: table_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_table -- 非推奨¶
注意
このコマンドは非推奨です。 [library.register_objects](#cleanroom_consumer_library_register_objects)を使用してください。
説明: register_table
と似ていますが、 WITH MANAGED ACCESS パラメーターで作成されたスキーマのテーブルを登録します。完全修飾されたテーブル名を表す配列または文字列を渡すことができ、SAMOOHA_APP_ROLEロールへのグラント選択が行われ、ユーザーはテーブルをクリーンルームにリンクすることができます。
引数: table_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_view -- 非推奨¶
注意
このコマンドは非推奨です。 [library.register_objects](#cleanroom_consumer_library_register_objects)を使用してください。
説明: register_db
と似ていますが、ビューレベルで操作します。完全修飾されたビュー名を表す配列または文字列を渡すことができ、 SAMOOHA_APP_ROLE ロールへの付与選択が行われ、ユーザーはビューをクリーンルームにリンクすることができます。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)にビューを登録したい場合は、代わりに library.register_managed_access_view
を使用してください。
引数: view_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_view -- 非推奨¶
注意
このコマンドは非推奨です。 [library.register_objects](#cleanroom_consumer_library_register_objects)を使用してください。
説明: register_view
と似ていますが、 WITH MANAGED ACCESS パラメーターで作成されたスキーマのビューを登録します。完全修飾されたビュー名を表す配列または文字列を渡すことができ、 SAMOOHA_APP_ROLE ロールへの付与選択が行われ、ユーザーはビューをクリーンルームにリンクすることができます。
引数: view_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_db¶
説明:register_db
プロシージャを取り消し、SAMOOHA_APP_ROLEロールとSnowflake Data Clean Roomネイティブアプリケーションに与えられたデータベースレベルのグラントを削除します。これにより、UIドロップダウン要素からデータベースも削除されます。
引数: db_name(string)
戻り値: 成功メッセージ(string)
例:
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)
戻り値: 成功メッセージ(string)
例:
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)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_objects¶
説明: すべてのタイプのテーブルとビューへのクリーンルームのアクセス権を取り消します。このアカウントで管理されているクリーンルームのユーザーは、オブジェクトを利用できなくなります。
引数:
object_names(array) - アクセス権を取り消す完全修飾オブジェクト名の配列。
戻り値: 成功メッセージ(string)
例
テーブルとビューの登録を解除するには
call samooha_by_snowflake_local_db.library.unregister_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
library.unregister_table_or_view -- 非推奨¶
注意
このコマンドは非推奨です。 [library.unregister_objects](#cleanroom_consumer_library_unregister_objects)を使用してください。
説明: すべてのタイプのテーブルとビューの登録を解除します。
引数: object_names(array)、is_view(boolean)、is_iceberg(boolean)、is_external(boolean)、is_under_managed_access_schema(boolean)
出力: success message (string)
例
テーブルの登録を解除するには:
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](#cleanroom_consumer_library_unregister_objects)を使用してください
説明: unregister_db
と似ていますが、テーブルレベルで操作します。テーブルの登録を解除するために、完全修飾テーブル名を表す配列または文字列を渡すことができます。未登録のテーブルをクリーンルームにリンクすることはできません。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)内のテーブルの登録を解除したい場合は、代わりに library.unregister_managed_access_table
を使用してください。
引数: table_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_table -- 非推奨¶
注意
このコマンドは非推奨です。 [library.unregister_objects](#cleanroom_consumer_library_unregister_objects)を使用してください
説明: unregister_table
と似ていますが、管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)のテーブルの登録を解除します。
引数: table_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_view -- 非推奨¶
注意
このコマンドは非推奨です。 [library.unregister_objects](#cleanroom_consumer_library_unregister_objects)を使用してください
説明: unregister_db
と似ていますが、ビューレベルで操作します。ビューの登録を解除するには、完全修飾したビュー名を表す配列あるいは文字列を渡します。未登録のビューをクリーンルームにリンクすることはできません。
管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)内のビューの登録を解除したい場合は、代わりに library.unregister_managed_access_view
を使用してください。
引数: view_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_view -- 非推奨¶
注意
このコマンドは非推奨です。 [library.unregister_objects](#cleanroom_consumer_library_unregister_objects)を使用してください
説明: unregister_view
と似ていますが、管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)のビューの登録を解除します。
引数: view_name(array)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
データセットのリンクとリンク解除¶
データセットが登録されると、そのデータセットからテーブルやビューを特定のクリーンルームにリンクすることができます。また、特定のクリーンルームからテーブルやビューのリンクを解除して、クリーンルームからそのデータへのアクセスを削除することもできます。
consumer.link_datasets¶
説明: テーブルまたはビューをクリーンルームにリンクし、指定した結合および列ポリシーに従って、クリーンルーム内のテンプレートにテーブルへのアクセスを与えます。
引数:
cleanroom_name(string) - アクセス権を付与するクリーンルームの名前
tables_list(文字列の配列) - クリーンルームに公開する、完全修飾されたテーブル名あるいはビュー名のリスト。これらのオブジェクトは、まず適切な[登録メソッド](#cleanroom_consumer_library_register_objects)を使って登録(クリーンルーム環境で利用できるようにする)する必要があります。
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.link_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
consumer.unlink_datasets¶
説明: すべてのユーザーの指定されたクリーンルームの指定されたテーブルまたはビューへのアクセスを削除します。これはコンシューマーが提供したデータに対してのみ有効です。
引数:
cleanroom_name(string) - アクセスを削除するクリーンルームの名前。
tables_list(文字列の配列) - アクセスをブロックすべき、完全修飾されたテーブル名あるいはビュー名のリスト。
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.unlink_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
consumer.view_consumer_datasets¶
説明: このアカウントのコンシューマーによって指定されたクリーンルームにリンクされたすべてのテーブルとビューを表示します。
引数:
cleanroom_name(string) - クリーンルームの名前。
戻り値: 指定されたクリーンルームにリンクされているオブジェクトのテーブル、および各オブジェクトのクリーンルーム内部表示名。
例:
call samooha_by_snowflake_local_db.consumer.view_consumer_datasets($cleanroom_name);
プロバイダーデータ分析¶
consumer.set_join_policy¶
説明: プロバイダーがクリーンルーム内でテンプレートを実行する際、プロバイダー実行分析を使用して結合を実行することが許可される列を指定します。列ポリシーは 置換のみ であることに注意してください。したがって、この関数が再度呼び出された場合、以前に設定された列ポリシーは現在のものに完全に置き換えられます。
SQL、データに対して実行されるクエリを解析し、許可されていない列がないかチェックすることに注意してください。ワイルドカードを使用したクエリは、これらのチェックでは検出されない可能性があります。
引数: cleanroom_name(文字列)、table_and_col_names(配列)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.set_join_policy($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:EMAIL', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:EMAIL']);
consumer.set_column_policy¶
説明: データプロバイダーが操作を実行できる列を設定します。これはテンプレートを追加した後にのみ呼び出されるべきです。これはテンプレートの関数でもあるため、入力は template_name:full_table_name:column_name にする必要があります。列ポリシーが 置換のみ であることに注意してください。したがって、関数が呼び出された場合、以前に設定された列ポリシーは現在のものに完全に置き換えられます。
列ポリシーはEメールなどのID列では呼び出されるべきではありません。これは集約および列別のグループにのみ使用されるべきです。
SQL、データに対して実行されるクエリを解析し、許可されていない列がないかチェックすることに注意してください。ワイルドカードを使用したクエリは、これらのチェックでは検出されない可能性があります。
チェックは、SQL Jinja引数の dimensions または measure_columns に対して行われます。これらのタグを使用して、このチェックを有効にしてください。
引数: cleanroom_name(文字列)、analysis_and_table_and_columns(配列)
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.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',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:CAMPAIGN']);
テンプレート¶
以下のコマンドにより、ユーザーは、クリーンルームで利用可能な分析テンプレートを実行できます。
consumer.view_template_definition¶
説明:クリーンルームテンプレートの定義は、テンプレートに渡す必要のあるパラメータを決定するのに役立ちます。
注釈
Samoohaプロシージャは全て暗号化されており、デフォルトでは閲覧できません。ただし、追加したカスタムテンプレートはすべて表示されます。
引数: cleanroom_name(string)、template_name(string)
戻り値: テンプレート定義(string)
例:
call samooha_by_snowflake_local_db.consumer.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
consumer.get_arguments_from_template¶
説明: 出力を簡単に消化できるよう、データをどのように整理し、各テンプレートにどのようなデータが必要かを定義します。
引数: cleanroom_name(string)、template_name(string)
戻り値: 引数リストと仕様(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.get_arguments_from_template($cleanroom_name, 'prod_overlap_analysis');
テンプレートチェーン¶
以下のコマンドにより、ユーザーは、クリーンルームで利用可能なテンプレートチェーンで作業することができます。テンプレートチェーンの使用に関する一般的な情報は、「開発者 APIs を使用してテンプレートを順次実行する」(./developer-template-chains.rst)をご参照ください。
consumer.view_added_template_chains¶
説明: クリーンルームで現在アクティブなテンプレートを表示します。
引数: cleanroom_name(string)
戻り値: 追加されたテンプレートチェーン(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_added_template_chains($cleanroom_name);
consumer.view_template_chain_definition¶
説明: テンプレートチェーンの属性を返します。
引数: cleanroom_name(string)、template_chain_name(string)
戻り値: テンプレートチェーン定義(string)
例:
call samooha_by_snowflake_local_db.consumer.view_template_chain_definition($cleanroom_name, 'insights_chain');
consumer.get_arguments_from_template_chain¶
説明: テンプレートチェーン内の全てのテンプレートに対して期待される引数を返します。
引数: cleanroom_name(string)、template__chain_name(string)
戻り値: 引数リストと仕様(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.get_arguments_from_template_chain($cleanroom_name, 'insights_chain');
分析の実行¶
以下のコマンドは、指定されたテンプレートに基づいて特定の分析またはアクティベーションを実行します。
consumer.run_analysis¶
説明: テンプレートまたはテンプレートチェーンを使用して分析を実行し、結果テーブルを返します。
差分プライバシーが有効な場合、このテンプレートの予算上限に達しているとクエリが失敗することがあります。
引数:
cleanroom_name(文字列) - 実行するテンプレートがあるクリーンルームの名前。
template_name(文字列) - クリーンルームで実行するテンプレートまたはテンプレートチェーンの名前。
consumer_tables(文字列の配列) - 完全修飾されたコンシューマーテーブル名の配列。これらは
my_table
テンプレート変数に割り当てられます。これらのテーブルはすでにクリーンルームにリンクされている必要があります。consumer.view_consumer_datasets
を呼び出して利用可能なテーブルを参照してください。例えば、['mytable1','mytable2','mytable3']を渡すと、テンプレートはこれらの値にそれぞれ{{my_table[0]}}
、{{my_table[1]}}
、{{my_table[2]}}
としてアクセスすることができます。provider_tables(文字列の配列) - 完全修飾されたプロバイダーテーブル名の配列。これらは
source_table
テンプレート変数に割り当てられます。これらのテーブルはすでにクリーンルームにリンクされている必要があります。consumer.view_provider_datasets
を呼び出して利用可能なテーブルを参照してください。例えば、['sourcetable1','sourcetable2','sourcetable3']を渡すと、テンプレートはこれらの値にそれぞれ{{source_table[0]}}
、{{source_table[1]}}
、{{source_table[2]}}
としてアクセスすることができます。analysis_arguments(オブジェクト) - テンプレートに渡されるキー/値ペアのオブジェクト。テンプレートはキー名で変数にアクセスできます。
{'age': 20}
を渡すと、テンプレートは{{age}}
として値にアクセスします。値が必要ない場合は、空のオブジェクトを渡します。どの値が必要かを確認するには、consumer.view_template_definition
を呼び出して、問題のテンプレートを調べます。このオブジェクトには、オプションで1つの予約値があります。epsilon
(浮動、オプション) - このクリーンルームで差分プライバシーが有効になっている場合、[差分プライバシーのepsilon値](https://www.google.com/search?q=differential+privacy+epsilon&oq=differential+privacy+epsilon)を指定します。デフォルトは0.1です。
use_cache(ブール、オプション) - 同じクエリに対してキャッシュされた結果を使用するかどうか。デフォルトは TRUE です。毎回最新バージョンのテンプレートを使用してクエリが再実行されるようにするため、テンプレートのテストや編集時に FALSE にセットします。
戻り値: (テーブル) クエリ結果。
例:
call samooha_by_snowflake_local_db.consumer.run_analysis(
$cleanroom_name,
'prod_overlap_analysis',
['SAMOOHA_SAMPLE_DATABASE.MYDATA.CONVERSIONS'], -- Consumer tables
['SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES'], -- Provider tables
object_construct(
'max_age', 30
)
);
アクティベーション¶
結果のアクティブ化の詳細情報については、[開発者 APIs を使用して結果をSnowflakeアカウントに送信してアクティブ化する](./developer-provider-activation)を参照してください。
consumer.set_activation_policy¶
説明: アクティブ化テンプレート内で使用できる列を定義します。これにより、コンシューマーが承認した列のみが、アクティブ化テンプレートで使用できるようになります。
入力: cleanroom_name(string)、列(array)
列 引数は <template_name>:<fully_qualified_table_name>:<column_name>
の形式で渡されます。
出力: 成功メッセージ
例:
call samooha_by_snowflake_local_db.consumer.set_activation_policy('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:REGION_CODE' ]);
consumer.approve_provider_activation_consent¶
説明: プロバイダーのアクティブ化(プロバイダーのSnowflakeアカウントに結果をプッシュする機能)を許可するプロバイダーのリクエストを承認します。プロバイダーはすでに provider.request_provider_activation_consent
を呼び出して許可をリクエストしていると仮定します。
入力: cleanroom_name(string)、activation_template_name(string)
出力: 成功メッセージ
例:
call consumer.approve_provider_activation_consent('my_cleanroom', 'activation_my_template');
consumer.run_activation¶
説明: アクティブ化のために結果をSnowflakeアカウントにプッシュバックするテンプレートを実行します。
引数: cleanroom_name(string)、segment_name(string)、template_name(string)、consumer_tables(array)、provider_tables(array)、activation_arguments(object)、consumer_direct_activation(boolean)、application_id(string)
コンシューマーがアクティブ化のために結果を自分のSnowflakeアカウントにプッシュする場合は、 consumer_direct_activation 引数を TRUE
にセットします。
application_id に引数として空の文字列を渡します。
戻り値: 成功メッセージ
例:
call samooha_by_snowflake_local_db.consumer.run_activation(
$cleanroom_name,
'my_activation_segment',
'activation_custom_template',
['consumer_source_table'],
['provider_source_table'],
object_construct( -- Custom arguments needed for the template
'dimensions', ['p.CAMPAIGN'], -- always use p. to refer to fields in provider tables, and c. to refer to fields in consumer tables. Use p2, p3, etc. for more than one provider table and c2, c3, etc. for more than one consumer table.
'where_clause', 'p.EMAIL=c.EMAIL'
));
コンシューマー定義のテンプレート¶
以下の APIs を使用すると、クリーンルームにコンシューマー定義のテンプレートを追加することができます。詳細については、[開発者 API を使用してコンシューマー定義のテンプレートを追加する](developer-consumer-templates.rst)をご参照ください。
consumer.create_template_request¶
説明: クリーンルームのプロバイダーにリクエストを送信し、クリーンルームに追加できるようにカスタムテンプレートの承認を求めます。
引数: cleanroom_name(string)、template_name(string)、template_definition(string)
戻り値: 成功メッセージ(string)
例:
CALL samooha_by_snowflake_local_db.consumer.create_template_request('dcr_cleanroom',
'my_analysis',
$$
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 %};
$$);
consumer.generate_python_request_template¶
説明: カスタムPythonコードを含むコンシューマー向けクリーンルームテンプレートを生成します。生成されたテンプレートにはPythonコードと JinjaSQL テンプレートのプレースホルダーが含まれます。最終的なテンプレートを consumer.list_template_requests
に渡します。
[コンシューマー定義テンプレートについて詳細をご覧ください。](/user-guide/cleanrooms/developer-consumer-templates)
引数:
function_name(string) - 関数を実行するために SQL テンプレートが呼び出すPython関数の名前。
引数(文字列の配列) - Python関数の引数のリスト。各引数は、「<argument_name> <argument_type>」の形式で、スペースで区切られた文字列のペアです。例えば
['data variant', 'scale integer']
などです。パッケージ(文字列の配列) - Pythonコードに必要なパッケージ名の配列。ない場合は空の配列を指定します。例えば、
['pandas','numpy']
などです。インポート(文字列の配列) - Pythonコードに必要なカスタムPythonライブラリ。0個以上のステージアドレスの配列である必要があります。例:
['@db.schema.stage/my_python_sproc.py']
戻り値のタイプ(string) - 関数の SQL 戻り値のタイプ。例:
'integer'
、'varchar'
。ハンドラー(string) - Pythonコード内のメインハンドラー関数の名前。通常、これは
'main'
です。コード(string) - Pythonコードの実装。インポートを含み、指定したハンドラーがインポート内で定義されている場合、これは空文字列になります。
戻り値: 生成されたPythonテンプレート(string)。プレースホルダーを SQL コードに置き換えてください。
例:
Pythonの些細な例でヘルパー関数を呼び出します。
call SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER.GENERATE_PYTHON_REQUEST_TEMPLATE(
'my_func', // SQL should use this name to call your function
['data variant', 'index integer'], // Arguments and types for the function
['pandas', 'numpy'], // Standard libraries used
[], // No custom libraries needed.
'integer', // Return type integer
'main', // Standard main handler
// Python implementation as UDF
$$
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)
$$
);
前回の呼び出しに対する応答です。JinjaSQL をプレースホルダーのところにあるように挿入し、 consumer.create_template_request
に渡します。
BEGIN
-- First define the Python UDF
CREATE OR REPLACE FUNCTION CLEANROOM.my_func(data variant, index integer)
RETURNS integer
LANGUAGE PYTHON
RUNTIME_VERSION = 3.10
PACKAGES = ('pandas', 'numpy')
HANDLER = 'main'
AS '
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)
';
-- Then define and execute the SQL query
LET SQL_TEXT varchar := '<INSERT SQL TEMPLATE HERE>';
-- Execute the query and return the result
LET RES resultset := (EXECUTE IMMEDIATE :SQL_TEXT);
RETURN TABLE(RES);
END;
consumer.list_template_requests¶
説明: コンシューマーがクリーンルームにテンプレートを追加するために行った要求をリストします。
引数: cleanroom_name(string)
戻り値: request_id(文字列)、provider_identifier(文字列)、template_name(文字列)、template_definition(文字列)、request_status(文字列)、reason(文字列)
例:
CALL samooha_by_snowflake_local_db.consumer.list_template_requests('dcr_cleanroom');
クリーンルームのメタデータゲッターメソッド¶
以下の方法は、クリーンルームの関連特性を示しています。
consumer.describe_cleanroom¶
説明: テンプレート、データセット、ポリシーなど、クリーンルームに追加されたすべての情報を含むテキストサマリーを作成します。
引数: cleanroom_name(文字列)
戻り値: クリーンルームの詳細説明文字列(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.describe_cleanroom($cleanroom_name);
consumer.view_provider_datasets¶
説明: プロバイダーによってクリーンルームに追加されたすべてのデータセットを表示します。
引数: cleanroom_name(文字列)
戻り値: クリーンルーム内の全てのプロバイダーデータセット名(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_provider_datasets($cleanroom_name);
consumer.view_join_policy¶
説明: コンシューマーデータセットでコンシューマーが設定する、クリーンルーム内でユーザーが安全に参加できる列の概要を示します。
引数: cleanroom_name(string)
戻り値: 結合ポリシー(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_join_policy($cleanroom_name);
consumer.view_provider_join_policy¶
説明: プロバイダーがプロバイダーのデータセットに設定した、ユーザーがクリーンルーム内で安全に参加できる列の概要を示します。
引数: cleanroom_name(string)
戻り値: 結合ポリシー(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_provider_join_policy($cleanroom_name);
consumer.view_added_templates¶
説明: クリーンルーム内のすべてのアクティブなテンプレートを表示します。
引数: cleanroom_name(string)
戻り値: 追加されたテンプレート(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_added_templates($cleanroom_name);
consumer.view_column_policy¶
説明: コンシューマーによってクリーンルームに適用されたすべての列ポリシーを表示します。
引数: cleanroom_name(string)
戻り値: 列ポリシー(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_column_policy($cleanroom_name);
consumer.view_provider_column_policy¶
説明: プロバイダーによってクリーンルームに適用されたすべての列ポリシーを表示します。
引数: cleanroom_name(string)
戻り値: 列ポリシー(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_provider_column_policy($cleanroom_name);
consumer.view_cleanrooms¶
説明: このアカウントで参加済み(インストール済み)または参加可能なすべてのクリーンルームを表示します。失敗したクリーンルームは表示されません。結果テーブルでは
IS_ALREADY_INSTALLED: クリーンルームに参加している場合、True(ウェブアプリの 参加済み タブ)、クリーンルームに招待されているが参加していない場合、False(ウェブアプリの 招待済み タブ)。
既知の問題: - この方法では、アンインストールされたクリーンルームが表示されないことがあります。クリーンルームが共有されていることが分かっているのにリストに表示されない場合は、
consumer.describe_cleanroom
を呼び出して、そのクリーンルームが参加可能かどうかを確認してください。
引数: なし
戻り値: 作成日順に並べられた全ての既存クリーンルーム(テーブル)
例:
call samooha_by_snowflake_local_db.consumer.view_cleanrooms();
-- Now filter out invitations that have not been accepted
SELECT cleanroom_name FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE is_already_installed = TRUE;
差分プライバシー¶
これらのコマンドは、クリーンルーム内の差分プライバシーを制御します。また、 consumer.enable_templates_for_provider_run
を呼び出す際に、テンプレートレベルで差分プライバシーを指定することもできます。
[差分プライバシーの管理について詳細をご覧ください。](/user-guide/cleanrooms/differential-privacy)
consumer.is_dp_enabled¶
説明: クリーンルームで差分プライバシーが有効になっているかどうかを確認します。
引数: cleanroom_name(文字列)
戻り値: クリーンルームが DP を有効にしているかどうか(boolean)
例:
call samooha_by_snowflake_local_db.consumer.is_dp_enabled($cleanroom_name);
consumer.view_remaining_privacy_budget¶
説明: クリーンルームからのクエリに使用できるプライバシー予算の残りを表示します。一度使い果たしたrun_analysisは、予算がリセットされるまで、それ以上呼び出すことはできません。予算は毎日リセットされます。
SELECT cleanroom_name FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE is_already_installed = TRUE;
引数: cleanroom_name(string)
戻り値: 残りのプライバシー予算(浮動)
例:
call samooha_by_snowflake_local_db.consumer.view_remaining_privacy_budget($cleanroom_name);
一般的なヘルパーメソッド¶
一般的なクリーンルームの機能性を支援するために、以下の方法を使用してください。
consumer.set_cleanroom_ui_accessibility¶
説明: 現在のアカウントのコンシューマーのために、ウェブアプリでクリーンルームを表示または非表示にします。
引数:
cleanroom_name(文字列) - クリーンルームの名前。
visibility_status(文字列) - 以下の大文字と小文字を区別する値のいずれか。
HIDDEN - 現在のコンシューマーアカウントの全ユーザーから、ウェブアプリで指定されたクリーンルームを非表示にします。クリーンルームへは、引き続き API 呼び出しでアクセスできます。
EDITABLE - クリーンルームをウェブアプリで見えるようにします。
戻り値: 成功メッセージ(string)
例:
call samooha_by_snowflake_local_db.consumer.set_cleanroom_ui_accessibility($cleanroom_name, 'HIDDEN');
library.enable_local_db_auto_upgrades¶
説明: タスク、 samooha_by_snowflake_local_db.admin.expected_version_task
を有効にします。このタスクは、新しいバージョンがリリースされると、Snowflake Data Clean Rooms用のSnowflake Native Appを自動的にアップグレードします。
引数: なし
戻り値: 成功メッセージ(string)
例:
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用のSnowflake Native Appを自動的にアップグレードします。
引数: なし
戻り値: 成功メッセージ(string)
例:
CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();