Snowflakeデータクリーンルーム:コンシューマーAPIリファレンスガイド

以下のコンテンツは、Snowflakeデータクリーンルームがコンシューマー向けに提供するすべての開発者APIsの詳細です。すべての関数は以下のスキーマの中にあります。

samooha_by_snowflake_local_db.consumer
Copy

環境設定

開発者APIsを使用してSnowflake Data Clean Roomで作業する前に、以下のコマンドを実行してSnowflake環境をセットアップします。SAMOOHA_APP_ROLEのロールをお持ちでない場合は、アカウント管理者にお問い合わせください。

use role samooha_app_role;
use warehouse app_wh;
Copy

プロバイダーが共有したクリーンルームの名前を割り当てます。

set cleanroom_name = 'Test Cleanroom 1';
Copy

クリーンルームをインストールする

プロバイダーが共有するクリーンルームを以下のコマンドでインストールします。

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>');
Copy

consumer.is_enabled

説明: クリーンルームのインストールが完了すると、プロバイダー側で設定が完了し、使用可能になるまで約1分かかります。この関数により、ユーザーはクリーンルームのステータスを確認し、有効かどうかを確認することができます。クリーンルームのインストール後、通常1分程度でフラグが「真」に切り替わります。

引数: cleanroom_name(string)

戻り値: 有効(boolean)

:

call samooha_by_snowflake_local_db.consumer.is_enabled($cleanroom_name);
Copy

consumer.uninstall_cleanroom

説明:コンシューマーアカウントのクリーンルームをアンインストールします。これにより、共有クリーンルームデータベースを含む、クリーンルームに関連するすべてのデータベースが削除されます。クリーンルームは consumer.install_cleanroom で随時再インストールできることに注意してください。

引数: cleanroom_name(string)

戻り値: 成功メッセージ(string)

:

call samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
Copy

プロバイダー実行分析を設定する

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)
Copy

library.is_consumer_run_enabled

説明: このクリーンルームでコンシューマー実行分析が有効になっているかどうかをチェックします。このフラグは、クリーンルームの利用者(インストール担当者)が分析を実行できるかどうか、またはコラボレーションへのデータ提供者として機能するかどうかを決定します。

引数: cleanroom_name(string)

戻り値: 有効メッセージ(string)

:

call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
Copy

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);
Copy

データの登録および登録解除

以下のコマンドを使用して、データベース、スキーマ、オブジェクトの登録および登録解除を行います。テーブルとビューは、クリーンルームにリンクする前に登録する必要があります。データベースまたはスキーマを登録すると、そのデータベースまたはスキーマ内のすべてのオブジェクトが登録されます。

consumer.register_db

説明: クリーンルームにデータベースを追加することで、データベースから任意のデータセットをリンクすることができます。これが呼び出されない場合、samooha_app_roleに個別に付与する必要があります。

引数: db_name(string)

戻り値: 成功メッセージ(string)

:

call samooha_by_snowflake_local_db.consumer.register_db('SAMOOHA_SAMPLE_DATABASE');
Copy

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']);
Copy

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']);
Copy

library.register_objects

説明: consumer.link_datasets を呼び出すことで、クリーンルームにすべてのタイプのテーブルとビューへのアクセスを付与し、それらをクリーンルームにリンクできるようにします。library.register_schemalibrary.register_managed_access_schemaconsumer.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']);
Copy

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);
Copy

Icebergテーブルを登録するには:

call samooha_by_snowflake_local_db.library.register_table_or_view(
        ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
        false, 
        true,
        false,
        false);
Copy

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']);
Copy

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']);
Copy

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']);
Copy

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']);
Copy

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');
Copy

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']);
Copy

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']);
Copy

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']);
Copy

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);
Copy

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']);
Copy

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']);
Copy

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']);
Copy

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']);
Copy

プロバイダーデータ分析

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']);
Copy

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']);
Copy

テンプレート

以下のコマンドにより、ユーザーは、クリーンルームで利用可能な分析テンプレートを実行できます。

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');
Copy

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');
Copy

テンプレートチェーン

以下のコマンドにより、ユーザーは、クリーンルームで利用可能なテンプレートチェーンで作業することができます。テンプレートチェーンの使用に関する一般的な情報は、「開発者 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);
Copy

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');
Copy

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');
Copy

分析の実行

以下のコマンドは、指定されたテンプレートに基づいて特定の分析またはアクティベーションを実行します。

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
  )
);
Copy

アクティベーション

結果のアクティブ化の詳細情報については、[開発者 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' ]);
Copy

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'
  ));
Copy

コンシューマー定義のテンプレート

以下の 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 %};
  $$);
Copy

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)
    $$
);
Copy

前回の呼び出しに対する応答です。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;
Copy

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');
Copy

クリーンルームのメタデータゲッターメソッド

以下の方法は、クリーンルームの関連特性を示しています。

consumer.describe_cleanroom

説明: テンプレート、データセット、ポリシーなど、クリーンルームに追加されたすべての情報を含むテキストサマリーを作成します。

引数: cleanroom_name(文字列)

戻り値: クリーンルームの詳細説明文字列(テーブル)

:

call samooha_by_snowflake_local_db.consumer.describe_cleanroom($cleanroom_name);
Copy

consumer.view_provider_datasets

説明: プロバイダーによってクリーンルームに追加されたすべてのデータセットを表示します。

引数: cleanroom_name(文字列)

戻り値: クリーンルーム内の全てのプロバイダーデータセット名(テーブル)

:

call samooha_by_snowflake_local_db.consumer.view_provider_datasets($cleanroom_name);
Copy

consumer.view_join_policy

説明: コンシューマーデータセットでコンシューマーが設定する、クリーンルーム内でユーザーが安全に参加できる列の概要を示します。

引数: cleanroom_name(string)

戻り値: 結合ポリシー(テーブル)

:

call samooha_by_snowflake_local_db.consumer.view_join_policy($cleanroom_name);
Copy

consumer.view_provider_join_policy

説明: プロバイダーがプロバイダーのデータセットに設定した、ユーザーがクリーンルーム内で安全に参加できる列の概要を示します。

引数: cleanroom_name(string)

戻り値: 結合ポリシー(テーブル)

:

call samooha_by_snowflake_local_db.consumer.view_provider_join_policy($cleanroom_name);
Copy

consumer.view_added_templates

説明: クリーンルーム内のすべてのアクティブなテンプレートを表示します。

引数: cleanroom_name(string)

戻り値: 追加されたテンプレート(テーブル)

:

call samooha_by_snowflake_local_db.consumer.view_added_templates($cleanroom_name);
Copy

consumer.view_column_policy

説明: コンシューマーによってクリーンルームに適用されたすべての列ポリシーを表示します。

引数: cleanroom_name(string)

戻り値: 列ポリシー(テーブル)

:

call samooha_by_snowflake_local_db.consumer.view_column_policy($cleanroom_name);
Copy

consumer.view_provider_column_policy

説明: プロバイダーによってクリーンルームに適用されたすべての列ポリシーを表示します。

引数: cleanroom_name(string)

戻り値: 列ポリシー(テーブル)

:

call samooha_by_snowflake_local_db.consumer.view_provider_column_policy($cleanroom_name);
Copy

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;
Copy

差分プライバシー

これらのコマンドは、クリーンルーム内の差分プライバシーを制御します。また、 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);
Copy

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);
Copy

一般的なヘルパーメソッド

一般的なクリーンルームの機能性を支援するために、以下の方法を使用してください。

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');
Copy

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();
Copy

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();
Copy