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

このページでは、clean room API のコンシューマーが、clean roomを管理するために使用するプロシージャについて説明します。コーディングのセットアップ方法については、 コーディング設定 をご参照ください。

ロールアクセス管理

consumer.grant_run_on_cleanrooms_to_role

説明: 指定されたclean roomでプロシージャのサブセットを実行する権限を指定されたロールに付与します。Clean roomをこのアカウントで 作成 するのではなく、このアカウントに インストール する必要があります。(つまり、自分がコンシューマーであるclean roomに限定されます)。

clean roomの使用を制限付きで許可するには、ユーザーに SAMOOHA_APP_ROLE ではなく、指定されたロールを付与します。 ロールアクセスの詳細

ここで指定したロールを使用すると、以下のプロシージャを実行できます:

  • CONSUMER.VIEW_ADDED_TEMPLATES

  • CONSUMER.VIEW_ADDED_TEMPLATE_CHAINS

  • CONSUMER.GET_ARGUMENTS_FROM_TEMPLATE

  • CONSUMER.VIEW_COLUMN_POLICY

  • CONSUMER.VIEW_CONSUMER_DATASETS

  • CONSUMER.VIEW_JOIN_POLICY

  • CONSUMER.VIEW_PROVIDER_COLUMN_POLICY

  • CONSUMER.VIEW_PROVIDER_DATASETS

  • CONSUMER.VIEW_PROVIDER_JOIN_POLICY

  • CONSUMER.VIEW_REMAINING_PRIVACY_BUDGET

  • CONSUMER.RUN_ANALYSIS

  • CONSUMER.VIEW_PROVIDER_ACTIVATION_POLICY

  • CONSUMER.VIEW_ACTIVATION_POLICY

  • CONSUMER.RUN_ACTIVATION

引数:

  • cleanroom_name (文字列の配列) - 指定したロールに制限付きでアクセスを許可するすべてのclean roomの名前。

  • run_role_name (文字列) - 指定したclean roomに対する制限付きの権限を持つロールの名前。このプロシージャを呼び出す前にロールを作成する必要があります。

戻り値: (文字列) - 成功または失敗のメッセージ。

例:

CREATE ROLE MARKETING_ANALYST_ROLE;
CALL samooha_by_snowflake_local_db.consumer.grant_run_on_cleanrooms_to_role(
  ['overlap_cleanroom', 'market_share_cleanroom'],
  'MARKETING_ANALYST_ROLE'
);
Copy

consumer.revoke_run_on_cleanrooms_from_role

説明: 指定したclean roomで指定したロールから権限を取り消します。ユーザーが取り消されないロールへのアクセスを持つか、 SAMOOHA_APP_ROLE を持つ場合は、引き続き指定したclean roomでclean roomプロシージャを実行できます。

引数:

  • cleanroom_name (文字列の配列) - このアカウント内の1つ以上のclean roomの名前。

  • run_role_name (文字列) - このアカウントで指定したclean roomへの制限付きの権限を取り消すロールの名前。

戻り値: (文字列) - 成功または失敗のメッセージ。

例:

CALL samooha_by_snowflake_local_db.consumer.revoke_run_on_cleanrooms_from_role(
  ['overlap_cleanroom', 'market_share_cleanroom'],
  'TEMP_USERS_ROLE'
);
Copy

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

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

consumer.install_cleanroom

説明: 指定したプロバイダーによって作成されたclean roomをインストール (参加) します。2回以上呼び出すと、そのたびに既存のclean roomが削除されます。2回目のインストールを、その完了を待たずに中断するとclean roomが破損し、clean roomを使用するためにこのプロシージャを完了することが必要になります。

引数:

  • cleanroom_name (文字列) - インストールするclean roomの名前。

  • provider_account_locator (文字列) - このclean roomを作成したプロバイダーのアカウントロケーター。

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

:

call samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, $provider_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

説明: コンシューマーアカウントのclean roomをアンインストールします。これにより、clean roomに関連するすべてのデータベースが (共有clean roomデータベースを含めて) 削除されます。clean roomは、 consumer.install_cleanroom でいつでも再インストールできます。

引数: cleanroom_name(string)

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

:

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

クロスクラウドコラボレーション

別のクラウドリージョンに作成されたclean roomをインストールします。 詳細はこちら。

library.enable_laf_on_account

説明: 現在のアカウントでクロスクラウド自動フルフィルメントを有効にします。ACCOUNTADMIN ロールが必要です。

引数: なし

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

例:

USE ROLE ACCOUNTADMIN;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.library.enable_laf_on_account();
Copy

consumer.is_laf_enabled_for_cleanroom

説明: このclean roomでクロスクラウド自動フルフィルメントが有効になっているかどうかを記述します。クロスクラウド自動フルフィルメントは アカウント管理者が構成する必要があります

引数:

  • cleanroom_name(string) - クリーンルームの名前。

戻り値: このclean roomでクロスクラウド自動フルフィルメントが有効になっているかどうか。

例:

CALL samooha_by_snowflake_local_db.consumer.is_laf_enabled_for_cleanroom($cleanroom_name);
Copy

consumer.request_laf_cleanroom

説明: 別のクラウドリージョンで作成されたclean roomをインストールするための前提条件を設定します。このプロシージャを呼び出す前に consumer.install_cleanroom を呼び出すと失敗します。このプロシージャは、呼び出しのたびに現在のステータスを返します。返されたステータスが FULFILLED になるまで度たび呼び出しを続け、その後で consumer.install_cleanroom を呼び出します。ステータスが FULFILLED に達するまで、最大10分かかることがあります。

引数:

  • cleanroom_name (文字列) - インストールされるクロスリージョンclean roomの名前。

  • provider_locator (文字列) - このclean roomを作成したプロバイダーのアカウントロケーター。

Returns: (文字列) リクエストのステータスメッセージ。ステータスが FULFILLED になるまで呼び出しを続けます。

例:

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.request_laf_cleanroom(
  $cleanroom_name,$provider_locator);
Copy

consumer.setup_cleanroom_request_share_for_laf

説明: 指定したclean roomの、指定したプロバイダーとのクロスクラウドでのリクエスト共有を有効にします。これは、クロスリージョンのclean roomが、リクエストログ、コンシューマーテンプレートリクエスト、プロバイダーが実行する分析など、すべての機能を使用するために必要です。

引数:

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

例:

CALL samooha_by_snowflake_local_db.consumer.setup_cleanroom_request_share_for_laf(
      $cleanroom_name, $provider_account_name);
Copy

consumer.setup_activation_share_to_laf_consumer

説明: 異なるクラウドリージョンのプロバイダーとコンシューマー間のプロバイダーアクティベーションを有効にします。

引数:

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

例:

CALL samooha_by_snowflake_local_db.consumer.setup_activation_share_to_laf_consumer('org1.locator1,org2.locator2');
Copy

プロバイダーデータ分析

プロバイダーが実行する分析の詳細情報。

library.is_provider_run_enabled

説明: プロバイダーが実行する分析を、このclean roomが許可しているかどうかをチェックします。注: consumer.enable_templates_for_provider_run を呼び出して明示的に承認するまで、プロバイダーがこのclean roomで分析を実行することはできません。

引数: cleanroom_name(string)

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

:

call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
Copy

consumer.enable_templates_for_provider_run

説明: リクエストされたclean roomで分析を実行する許可をプロバイダーに与えます。これは、プロバイダーが provider.enable_provider_run_analysis を呼び出して、プロバイダーが実行する分析をclean roomで有効にした後に呼び出します。 consumer.enable_templates_for_provider_run は、指定したclean roomの指定したテンプレートで分析を実行するための権限を、プロバイダーに必要なだけ何度でも付与します。

引数:

  • cleanroom_name (文字列) - プロバイダーに分析の実行を許可するclean roomの名前。

  • template_names (文字列の配列) - プロバイダーに実行が許可されたclean room内の1つまたは複数のテンプレートの名前の配列。

  • enable_differential_privacy (ブール) - TRUE の場合、 template_names にリストされているすべてのテンプレートに対して、差分プライバシーを有効にします。差分プライバシーは、差分プライバシーがクリーンルーム自体で有効になっている場合にのみ、これらのテンプレートで有効にすることができます。consumer.is_dp_enabled を呼び出すことで、クリーンルームの差分プライバシーステータスを確認できます。consumer.set_privacy_settings を呼び出すことで、プライバシー設定をカスタマイズできます。 詳細情報。

  • template_configuration (オブジェクト、オプション) - 各テンプレートに追加する設定を指定するオプションのオブジェクト。このオブジェクトはキーと値のペアを持ち、キーはテンプレート名(template_namesの値)、値は以下のプロパティを持つオブジェクトです:

    • warehouse_type (文字列) - このテンプレートでプロバイダーに使用を許可するウェアハウスのタイプ。WAREHOUSE_TYPE に定義した値が許可されます。

    • warehouse_size (文字列の配列) - このウェアハウスタイプとテンプレートで使用を許可するウェアハウスの1つまたは複数のサイズ。WAREHOUSE_SIZE に定義した値が許可されます。

戻り値: (文字列) 成功または失敗のメッセージ。

例:

-- Simple example
CALL samooha_by_snowflake_local_db.consumer.enable_templates_for_provider_run($cleanroom_name, ['prod_overlap_analysis'], FALSE);

-- Specify warehouse types that the provider can request for each template.
call samooha_by_snowflake_local_db.CONSUMER.enable_templates_for_provider_run(
  $cleanroom_name,
  [$template1, $template2],
  TRUE,
  {
    $template1: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'LARGE']},
    $template2: {'warehouse_type': 'SNOWPARK-OPTIMIZED', 'warehouse_size': ['MEDIUM', 'XLARGE']},
    $template3: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'XLARGE']} 
  });
Copy

マルチプロバイダー分析

以下のプロシージャは、 マルチプロバイダー分析 を有効にします。

consumer.prepare_multiprovider_flow

説明: 指定したclean roomのプロバイダーにマルチプロバイダークエリ実行のリクエストを送信します。このプロシージャが実際にリクエストを実行するのではなく、 consumer.execute_multiprovider_flow を呼び出すことで、このリクエストを将来的に実行するための権限をプロバイダーに要求します。

プロバイダーが承認した場合、コンシューマーは consumer.execute_multiprovider_flow を (差分プライバシーの設定に応じて) 何度でも呼び出して、クエリを実行できます。prepare_multiprovider_flow を新しい値で呼び出した後に、前回承認されたクエリを再実行する場合も、やはり prepare_multiprovider_flow を前回のクエリとまったく同じ値で呼び出す必要がありますが、プロバイダーの承認を待ってから consumer.execute_multiprovider_flow を実行する必要はありません。

リクエストは4時間有効で、それ以降はキューから削除されます。

引数:

  • cleanroom_name (文字列の配列) - コンシューマーのアカウントのclean room名の配列。これらのclean roomをインストールする必要があります。

  • template_name (文字列) - cleanroom_name にリストされている各clean roomで実行するテンプレートの名前。これは、clean roomのプロバイダーによって追加されたSnowflake提供のテンプレート、または consumer.create_template_request を呼び出して前回clean roomに発信したカスタムテンプレートになります。どちらの場合でも、リクエストをclean roomのプロバイダーに発信するには、テンプレートがすでにclean roomに存在している必要があります。

  • arguments (オブジェクト) - テンプレートへの入力に使用される、以下のフィールドを持つオブジェクト:

    • source_table (文字列の配列) - テンプレートで使用可能な source_table 配列への入力に使用されるテーブル名の配列。各テーブル名の構文は、 cleanroom_name.db.schema.table です。各プロバイダーは、リクエストにリストされた自分のclean roomテーブルのみを参照できます。

    • my_table (文字列の配列) - テンプレートで使用可能な my_table 配列への入力に使用する、自分のデータが格納されたテーブル名の配列。consumer.run_analysisconsumer_tables 引数に渡されたものと同じ構文を使用します。

    • その他のテンプレート変数 - 必要な値をキー/値ペアとしてテンプレートに渡します。

戻り値: (文字列) execute_multiprovider_flow に渡すリクエストID。

例:

CALL samooha_by_snowflake_local_db.consumer.prepare_multiprovider_flow(
    [$cleanroom_name_1, $cleanroom_name_2],
    'prod_aggregate_data',
    object_construct(
        'source_table', [
            CONCAT($cleanroom_name_1, '.SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'), 
            CONCAT($cleanroom_name_2, '.SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS')
        ],
        'my_table', ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']),
        'hem_col', ['p1.HASHED_EMAIL', 'p2.HASHED_EMAIL'],
        'dimensions', ['p1.STATUS', 'p2.STATUS'],
        'consumer_join_col', 'HASHED_EMAIL'
    )
);
Copy

consumer.execute_multiprovider_flow

説明: コンシューマーから consumer.prepare_multiprovider_flow に送信された最新のクエリを実行します。プロシージャは、プロバイダーによってクエリが承認されたclean roomごとにクエリを実行し、すべてのクエリ結果を結合して返します。このプロシージャを実行する以外に、プロバイダーがクエリを承認したかどうかを知る方法はありません。

引数:

  • cleanroom_name (文字列の配列) - 準備されたクエリが実行されるclean room名の配列。この配列は、クエリリクエストで使用されるclean roomのリストと完全に一致する必要があります。

  • request_id (文字列、オプション) - prepare_multiprovider_flow によって返されるリクエストID。

戻り値: (テーブル) 承認されたすべてのclean roomによる結果を結合したデータ。このコンシューマーからのクエリをプロバイダーが一度も承認しなかった場合、クエリは失敗します。ただし、プロバイダーがこのコンシューマーから別のクエリを承認しているが、それが最新のクエリではない場合、プロシージャは空の結果セットを返します。

例:

CALL samooha_by_snowflake_local_db.consumer.execute_multiprovider_flow([$cleanroom1, $cleanroom2], $request_id);
Copy

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

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

consumer.register_db

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

引数: db_name(string)

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

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

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)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

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)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

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)

テーブルとビューを登録するには

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.library.register_objects(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
Copy

library.enable_external_tables_on_account

説明: このアカウントのすべてのclean roomでIcebergまたは外部テーブルを有効にします。Icebergまたは外部テーブルを、プロバイダーとコンシューマーの いずれか のアカウントからリンクするために、その 両方 のアカウントのACCOUNTADMIN から呼び出す必要があります。この機能をこのアカウント内の特定のclean roomに制限するには、 enable_external_tables_for_cleanroom を呼び出してください。

引数: なし

戻り値: (文字列) 成功または失敗のメッセージ。

例:

USE ROLE ACCOUNTADMIN;

CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Copy

consumer.enable_external_tables_for_cleanroom

説明: コンシューマーがこのアカウントで指定したclean roomにIcebergまたは外部テーブルをリンクすることを可能にします。このアカウントのすべてのclean roomでIcebergと外部テーブルのリンクを許可するには、 enable_external_tables_on_account を呼び出します。

引数:

  • cleanroom_name (文字列) - プロバイダーがIcebergまたは外部テーブルをリンクできるclean room名。

戻り値: (文字列) 成功または失敗のメッセージ。成功するとセキュリティスキャンがトリガーされ、セキュリティスキャンが成功した場合に生成されるパッチの番号も返されます。

例:

CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
    $cleanroom_name);
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)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

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)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

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)

テーブルとビューの登録を解除するには

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

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:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_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']);
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_template_definition

説明:クリーンルームテンプレートの定義は、テンプレートに渡す必要のあるパラメータを決定するのに役立ちます。

is_obfuscated 引数を適用することで、テンプレートが 不明瞭化 されている場合、テンプレートの定義を表示できません。

注釈

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 を使用してテンプレートを順次実行する を参照してください。

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.run_analysis

説明: テンプレートまたはテンプレートチェーンを使用して分析を実行し、結果テーブルを返します。

差分プライバシーが有効な場合、このテンプレートの予算上限に達しているとクエリが失敗することがあります。

テンプレートがis_obfuscated 引数を適用することによって 不明瞭化 されている場合、Snowflake Enterprise Edition 以上を使用しなければテンプレートを実行できません。

引数:

  • 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 を呼び出して、問題のテンプレートを調べます。列名を指定する場合は、テンプレートを調べて、テーブル名で列名を修飾する必要があるかどうかを判断してください。テーブルのエイリアスが p または c の場合、列名には小文字の p および c のテーブル・エイリアスを使用します。つまり、 P.age_band ではなく p.age_band です。このオブジェクトには、オプションで1つの予約値があります。

    • epsilon (浮動、オプション) - このクリーンルームで差分プライバシーが有効になっている場合、[差分プライバシーのepsilon値](https://www.google.com/search?q=differential+privacy+epsilon&oq=differential+privacy+epsilon)を指定します。デフォルトは0.1です。

  • use_cache(ブール、オプション) - 同じクエリに対してキャッシュされた結果を使用するかどうか。デフォルトは FALSE です。

戻り値: (テーブル) クエリ結果。

:

call samooha_by_snowflake_local_db.consumer.run_analysis(
  $cleanroom_name,
  'prod_overlap_analysis',
  ['SAMOOHA_SAMPLE_DATABASE.MYDATA.CONVERSIONS'],  -- Consumer tables
  ['MYDB.MYSCH.EXPOSURES'],      -- Provider tables
  object_construct(
    'max_age', 30
  )
);
Copy

アクティベーション

結果のアクティベートに関する詳細情報は、 アクティベーションの概要 をご参照ください。

library.view_external_activation_history

説明: 現在のアカウントのアクティベーションリクエスト履歴を表示します。

引数: なし

戻り値: アクティベーションリクエストの詳細とステータスのテーブル。

:

call SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.view_external_activation_history();
Copy

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アカウントに結果をプッシュバックするテンプレートを実行します。consumer_direct_activation 引数には、コンシューマーとプロバイダーのどちらのアクティベーションかを定義します。

引数:

  • cleanroom_name (文字列) - アクティベーションを実行するclean roomの名前。

  • segment_name (文字列) - このアクティベーションの実行によって生成される行のラベルに使用される任意の文字列。アクティベーションを実行するたびに、既存の結果テーブルに新しい行が追加されます。このプロシージャを呼び出すたびに、このフィールドに一意の文字列を入力して、指定した実行で結果にフィルターできるようにします。

  • template_name (文字列) - 呼び出すアクティベーションテンプレートの名前。

  • consumer_tables (文字列の配列) - テンプレートに渡すコンシューマーテーブルの完全修飾名の配列。

  • provider_tables (文字列の配列) - テンプレートに渡すプロバイダーテーブルの完全修飾名の配列。

  • activation_arguments (オブジェクト) - テンプレートに渡す引数のキーと値のセット。

  • consumer_direct_activation (ブール、オプション) - コンシューマーアカウントに結果をプッシュバックする場合は TRUE、プロバイダーに結果を送信する場合は FALSE。デフォルトは FALSE です。

戻り値: (文字列) 成功した場合の成功メッセージ。

:

-- Run a consumer activation, as specified by the final TRUE argument.
SET segment_name = 'my_activation_segment';
CALL samooha_by_snowflake_local_db.consumer.run_activation(
  $cleanroom_name,
  $segment_name,
  $template_name,
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
  object_construct(
    'c_join_col', 'c.hashed_email',
    'p_join_col', 'p.hashed_email'
  ),
  TRUE);
Copy

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

以下の APIs を使用すると、クリーンルームにコンシューマー定義のテンプレートを追加することができます。詳しくは、 開発者 API を使用してコンシューマー定義のテンプレートを追加する をご参照ください。

consumer.create_template_request

説明: clean roomのプロバイダーにリクエストを送信し、カスタムテンプレートの承認を求めて、clean roomに追加できるようにします。開発者 API を使用してコンシューマー定義のテンプレートを追加する をご参照ください。

引数:

  • cleanroom_name(文字列) - このテンプレートが適用されるクリーンルームの名前。

  • template_name(文字列) - テンプレートの名前。すべて小文字、数字、スペース、またはアンダースコアでなければなりません。アクティベーションテンプレートは、「activation」で始まる名前でなければなりません。

  • template_definition (文字列) - JinjaSQL テンプレート。 テンプレート構文の詳細。

戻り値: 成功メッセージ(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.get_sql_jinja

説明: JinjaSQL テンプレートを有効な SQL ステートメントに評価します。このプロシージャで処理できるのは標準的な JinjaSQL ステートメントだけです。 join_policycolumn_policy などの JinjaSQL へのclean room拡張は処理できません。

引数:

  • template_string (文字列) - 処理するテンプレート。標準の JinjaSQL のみサポートされています。

  • arguments (オブジェクト) - テンプレートで使用される変数に対応するフィールド名および値が、生成されたクエリのテンプレートにある、対応する変数のプレースホルダに挿入されたオブジェクト。

戻り値: (文字列) 発信されたテンプレートにより、指定した変数値で生成される SQL ステートメント。

例:

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER.GET_SQL_JINJA(
$$
SELECT COUNT(*), IDENTIFIER({{ group_by_col }})
  FROM IDENTIFIER({{ my_table | sqlsafe }})
  INNER JOIN IDENTIFIER({{ source_table | sqlsafe }})
  ON IDENTIFIER({{ consumer_join_col }}) = IDENTIFIER({{ provider_join_col }})
  GROUP BY IDENTIFIER({{ group_by_col }});
$$,
object_construct(
'group_by_col', 'city',
'consumer_join_col', 'hashed_email',
'provider_join_col', 'hashed_email',
'my_table', 'mydb.mysch.t1',
'source_table', 'mydb.mysch.t2'));
Copy

応答:

SELECT COUNT(*), IDENTIFIER('city')
  FROM IDENTIFIER(mydb.mysch.t1)
  INNER JOIN IDENTIFIER(mydb.mysch.t2)
  ON IDENTIFIER('hashed_email') = IDENTIFIER('hashed_email')
  GROUP BY IDENTIFIER('city');
Copy

consumer.generate_python_request_template

説明: カスタムPythonコードを含むコンシューマー向けクリーンルームテンプレートを生成します。生成されたテンプレートにはPythonコードと JinjaSQL テンプレートのプレースホルダーが含まれます。最終的なテンプレートを consumer.create_template_request に渡します。

[コンシューマー定義テンプレートについて詳細をご覧ください。](/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

説明: コンシューマーがclean roomにテンプレートを追加するために行ったリクエストをリストします。

引数: 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

説明:テンプレート、データセット、ポリシーなど、clean roomに追加されたすべての情報を含むテキストサマリーを作成します。テンプレートがis_obfuscated 引数を適用することによって 不明瞭化 されている場合、Snowflake Enterprise Edition 以上を使用しなければテンプレートを表示できません。

引数: 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

説明:clean room内のすべてのアクティブなテンプレートを表示します。テンプレートがis_obfuscated 引数を適用することによって 不明瞭化 されている場合、Snowflake Enterprise Edition 以上を使用しなければテンプレートを表示できません。

引数: cleanroom_name(string)

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

:

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

library.is_consumer_run_enabled

説明: コンシューマーが実行する分析が、このclean roomで有効かどうかをチェックします。このフラグで、clean roomのコンシューマー (インストールした側) がこのclean roomで分析を実行できるかどうかを定義します。

引数: cleanroom_name(string)

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

:

CALL samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name);
Copy

consumer.view_cleanrooms

説明: このアカウントで参加済み(インストール済み)または参加可能なすべてのクリーンルームを表示します。インストールされたclean roomのみを表示するには、 consumer.view_installed_cleanrooms を実行します。

引数: なし

戻り値: (テーブル) このアカウントにインストールまたは招待されているすべてのclean room。

:

call samooha_by_snowflake_local_db.consumer.view_cleanrooms();
Copy

consumer.view_installed_cleanrooms

説明: このアカウントにインストール (参加) しているすべてのclean roomのリスト。結合されたclean roomと結合されていないclean roomを表示するには、 consumer.view_cleanrooms を呼び出します。このアカウントで作成されたすべてのclean roomを表示するには、 provider.view_cleanrooms を呼び出します。

引数: なし

戻り値: (テーブル) このアカウントにインストールされているclean room。

例:

CALL samooha_by_snowflake_local_db.consumer.view_installed_cleanrooms();
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_privacy_settings

説明: カスタムテンプレートを使用してプロバイダーが実行する分析 (アクティベーションを含む) のプライバシー設定を行います。以前にセットした値をすべて消去します。このメソッドを呼び出すたびに、以前の設定がすべて消去されます。

引数:

  • cleanroom_name (文字列) - これらの設定を適用するclean roomの名前。

  • privacy_settings (文字列) - カスタムテンプレートがプロバイダーによって実行される場合に、プライバシー設定を指定する文字列 JSON オブジェクト。このオブジェクトの構文は以下のとおりです:

    '{
      "null" : <template_config>
    }'
    
    Copy

    template_config は、差分プライバシーと集計の設定を含むオブジェクトです。このオブジェクトで指定するフィールドについては、 設定可能なプライバシー をご参照ください。

例:

-- Apply differential privacy for provider-run analysis using all custom templates.
CALL samooha_by_snowflake_local_db.consumer.set_privacy_settings(
  $cleanroom_name,
  PARSE_JSON('{
    "null":{ "differential": 1, "epsilon": 0.1, "privacy_budget": 3 }
    }')
  );
Copy

戻り値: 文字列の成功メッセージ。

Snowpark Container Services コマンド

clean roomでのSnowplark Container Services の使用について詳しくは、こちらをご参照ください。

consumer.start_or_update_service

説明: このclean roomでプロバイダーが定義した最新バージョンの SPCS を作成し、起動します。プロバイダーが provider.load_service_into_cleanroom を呼び出してコンテナーを作成または更新する際には必ず、コンシューマーは consumer.start_or_update_service を呼び出してサービスを更新する必要があります。

コンシューマーは、このプロシージャを呼び出す前にプールを定義し、開始する必要があります。

引数:

  • cleanroom_name (文字列) - コンテナーをロードするclean roomの名前。

  • compute_pool_name (文字列) - このclean roomでコンシューマーによって定義されるコンピュートプールの名前。プールがすでに作成され、clean roomにプールへのアクセス権限が付与されている必要があります。

  • service_options (オブジェクト、オプション) - このサービスのパラメーターを指定するオブジェクト。以下のプロパティを指定できます:

    • query_warehouse - (文字列、オプション) このサービスで使用するウェアハウスの名前。clean roomを実行するウェアハウスと同じである必要はありません。

    • min_instances - (整数、オプション) このサービスで使用するインスタンスの最小数。

    • max_instances - (整数、オプション) このサービスで使用するインスタンスの最大数。

戻り値: (テーブル) 読み込みが成功した場合の結果。成功しなかった場合はエラーをスローします。

例:

CALL samooha_by_snowflake_local_db.consumer.start_or_update_service(
    $cleanroom_name,
    'dcr_lal_pool',
    object_construct(
        'query_warehouse', 'app_wh',
        'min_instances', '1',
        'max_instances', '1'
));
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