Snowflakeデータクリーンルーム:プロバイダーAPIリファレンスガイド

このガイドでは、プロバイダーがクリーンルームを作成、設定、共有するための 開発者APIs について説明します。すべての関数は以下のスキーマの中にあります。

samooha_by_snowflake_local_db.provider
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';  -- This must only have alphanumeric characters.
Copy

クリーンルームの作成

クリーンルームの作成と削除には、以下のコマンドを使用します。

provider.cleanroom_init

説明:自身のアカウントにクリーンルームを作成します。クリーンルームには英数字とスペースのみの名前を付けることができます。また、このクリーンルームが組織内のみで共有するテスト用クリーンルーム(INTERNAL)なのか、他の組織と外部で共有する生産用クリーンルーム(EXTERNAL)なのかを指定するために、クリーンルームの ディストリビューション を渡す必要があります。

ディストリビューションが指定されていない場合、デフォルトはINTERNALです。

INTERNALのクリーンルームをEXTERNALのクリーンルームに変更することができます。

alter application package samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
Copy

注釈

ディストリビューション は、EXTERNALまたはINTERNALのいずれかです。クリーンルームがEXTERNALディストリビューション用にマークされている場合、コラボレーターと共有する前に、まずSnowflakeが自動セキュリティスキャンを実行する必要があります。詳細は [provider.set_default_release_directive](#provider-set-default-release-directive)をご参照ください。

入力: cleanroom_name (文字列)distribution(文字列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
Copy

provider.set_default_release_directive

説明:クリーンルームのリリースディレクティブ、つまりコラボレーターが受け取るバージョンとパッチを設定します。

デフォルトでは、すべてのクリーンルームは以下のバージョンとパッチ番号で作成されます。

  • バージョン:V1_0

  • パッチ:0

注釈

クリーンルーム分布がEXTERNALに設定されている場合、クリーンルームのセキュリティスキャンがAPPROVED状態に移行したときにのみ呼び出すことができます。現在のスキャン状況を表示するには、電話をかけます。

show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
Copy

入力: cleanroom_name(string)、version(string)、patch(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
Copy

provider.drop_cleanroom

説明:既存のクリーンルームを作成者がドロップすることができます。これにより、クリーンルームは完全に削除され、クリーンルームを設置したコンシューマーは、クリーンルームにアクセスすることも使用することもできなくなります。

入力: cleanroom_name(文字列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
Copy

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

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

provider.register_db

説明:呼び出し側の権限で実行され、アカウント管理者がSnowflake Data Clean Roomアプリケーションから見えるようにデータベースを登録できるようにします。SELECTへの能力は、データベース内のすべてのスキーマとテーブル、およびSnowflake Data Clean Roomネイティブアプリケーション(SAMOOHA_BY_SNOWFLAKE)に付与されます。

入力: db_name(文字列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.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)

出力: 成功メッセージ(文字列)

:

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)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.register_table_or_view

説明: あらゆるタイプのテーブルとビューを登録します。

入力: 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

説明register_dbと似ていますが、テーブルレベルで操作します。完全修飾されたテーブル名を表す配列または文字列を渡すことができ、SAMOOHA_APP_ROLEロールへのグラント選択が行われ、ユーザーはテーブルをクリーンルームにリンクすることができます。

管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)にテーブルを登録したい場合は、代わりに library.register_managed_access_table を使用してください。

入力: table_name(配列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_managed_access_table

説明: register_table と似ていますが、 WITH MANAGED ACCESS パラメーターで作成されたスキーマのテーブルを登録します。完全修飾されたテーブル名を表す配列または文字列を渡すことができ、SAMOOHA_APP_ROLEロールへのグラント選択が行われ、ユーザーはテーブルをクリーンルームにリンクすることができます。

入力: table_name(配列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_table

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

library.register_managed_access_view

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

library.unregister_db

説明register_dbプロシージャを取り消し、SAMOOHA_APP_ROLEロールとSnowflake Data Clean Roomネイティブアプリケーションに与えられたデータベースレベルのグラントを削除します。これにより、UIドロップダウン要素からデータベースも削除されます。

入力: db_name(文字列)

出力: 成功メッセージ(文字列)

:

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)

出力: 成功メッセージ(文字列)

:

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)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.unregister_table_or_view

説明: すべてのタイプのテーブルとビューの登録を解除します。

入力: 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.register_table

説明: unregister_db と似ていますが、テーブルレベルで操作します。テーブルの登録を解除するために、完全修飾テーブル名を表す配列または文字列を渡すことができます。未登録のテーブルをクリーンルームにリンクすることはできません。

管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)内のテーブルの登録を解除したい場合は、代わりに library.unregister_managed_access_table を使用してください。

入力: table_name(配列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_managed_access_table

説明: unregister_table と似ていますが、管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)のテーブルの登録を解除します。

入力: table_name(配列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_view

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

library.unregister_managed_access_view

説明: unregister_view と似ていますが、管理アクセススキーマ(つまり、 WITH MANAGED ACCESS パラメーターで作成されたスキーマ)のビューの登録を解除します。

入力: view_name (array)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

データセットの追加とポリシーの作成

以下のコマンドを使用して、クリーンルームのデータを追加し、ポリシーを設定します。

provider.restrict_table_options_to_consumers

説明: 特定のコンシューマーがクリーンルーム内のテーブルにアクセスできるかどうかを制御します。

第2引数は JSON オブジェクトで、名前/値のペアはそれぞれテーブル名と、そのテーブルにアクセスできるコンシューマーの配列です。各コンシューマーは、アカウントロケーターを使用して指定されます。

入力: cleanroom_name(string)、access_details(variant)

出力: 成功メッセージ(string)

:

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

provider.set_join_policy

説明:クリーンルーム内でテンプレートを実行する際に、コンシューマーが結合を実行できる列を指定します。列ポリシーは 置換のみ であることに注意してください。したがって、この関数が再度呼び出された場合、以前に設定された列ポリシーは現在のものに完全に置き換えられます。

チェックは、SQL Jinja テンプレートへの where_clause 引数、または join_policy フィルターが追加された引数のいずれかを調べることによって行われることに注意してください。このチェックでは、許可されていない列がないかどうかを調べます。ワイルドカードを使用したクエリは、これらのチェックでは検出されない可能性があります。

デフォルトでは、チェックは where_clause と呼ばれるSQL Jinja引数に対して行われます。このチェックを有効にするには、必ずこのタグを使用してください。

入力: cleanroom_name(文字列)、table_and_col_names(配列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.set_join_policy($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:EMAIL', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:EMAIL']);
Copy

テンプレート

以下のコマンドを使用して、このクリーンルームでサポートされているテンプレート/分析を追加します。

provider.add_templates

説明:識別子を使って定義済みテンプレートのリストを追加します。例としては、"prod_overlap_analysis"や"prod_provider_data_analysis"などがあります。

入力: cleanroom_name(string)、template_names(array)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.add_templates($cleanroom_name, ['prod_overlap_analysis']);
Copy

provider.view_template_definition

説明:テンプレート名を指定すると、クリーンルームからテンプレート定義を取得します。これは、ユーザーがテンプレートを視覚的に確認し、テンプレートを実行する際にどのパラメータを渡す必要があるかを判断するのに役立ちます。

入力: cleanroom_name(文字列)、template_name(文字列)

出力: テンプレート定義(文字列)

:

call samooha_by_snowflake_local_db.provider.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
Copy

provider.clear_template

説明:クリーンルームから指定されたテンプレート(その名前で参照)を削除します。

入力: cleanroom_name(string)、template_name(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.clear_template($cleanroom_name, 'prod_custom_template');
Copy

provider.clear_all_templates

説明:クリーンルームに追加されたすべてのテンプレートを削除します。これを呼び出すと、テンプレートを再度追加する必要があります。

入力: cleanroom_name(文字列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
Copy

provider.set_column_policy

説明:コンシューマーがデータ内のどの列に対して操作を実行できるかを設定します。これはテンプレートを追加した後にのみ呼び出されるべきです。これはテンプレートの関数でもあるため、入力は template_name:full_table_name:column_name にする必要があります。列ポリシーが 置換のみ であることに注意してください。したがって、関数が呼び出された場合、以前に設定された列ポリシーは現在のものに完全に置き換えられます。

列ポリシーAPIは、メールのようなID列では呼び出されるべきではありません。これは集約および列別のグループにのみ使用されるべきです。

SQL、データに対して実行されるクエリを解析し、許可されていない列がないかチェックすることに注意してください。ワイルドカードを使用したクエリは、これらのチェックでは検出されない可能性があります。

デフォルトでは、チェックは dimensions または measure_columns と呼ばれるSQL Jinja引数に対して実行されます。このチェックを有効にするには、必ずこれらのタグを使用してください。

あるいは、SQL Jinja テンプレートで join_policycolumn_policy タグを使用して、SQL Jinja のカスタム引数に対してセキュリティポリシーを適用することもできます。

入力: cleanroom_name(文字列)、 analysis_and_table_and_columns(配列)

出力: 成功メッセージ(文字列)

:

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',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:CAMPAIGN']);
Copy

provider.add_custom_sql_template

説明:SQL Jinja のカスタムテンプレートをクリーンルームに追加します。これにより、コンシューマーがテンプレートを呼び出せるようになります。

クリーンルームに複数のカスタムテンプレートを追加するために、この API を複数回呼び出すことができます。この手続きは、同じ名前の以前のテンプレートを上書きすることに注意してください。既存のテンプレートを編集したい場合は、 API に既存のテンプレート名を引数として渡します。

コンシューマーがプロバイダーに結果を返すためにテンプレートを使用する場合、そのコマンドは以下の要件を満たさなければなりません。

  • カスタムテンプレートの名前は、文字列 activation で始まる必要があります。例えば、 activation_custom_template

  • テンプレートの定義は、 cleanroom.activation_data_ で始まるテーブルを作成する必要があります。例えば、 CREATE TABLE cleanroom.activation_data_analysis_results AS ...

  • テンプレートの定義は、 cleanroom.activation_data_ に追加された文字列である、定義で作成されたテーブル名のユニークな部分を返す必要があります。例えば、 return 'data_analysis_results'

SQL Jinjaテンプレートには、2つの特別な引数があります。

  • source_table:プロバイダー側のテーブルの配列

  • my_table: コンシューマー側のテーブルの配列

クリーンルームに実際にリンクされているセキュアビューの名前はテーブル名と異なるため、すべてのプロバイダー/コンシューマーテーブルは、これらの引数を使用して参照する必要があります。重要なのは、プロバイダーテーブルのエイリアスはp(またはp1)、p2、p3、p4などにする 必要 があり、コンシューマーテーブルのエイリアスはc(またはc1)、c2、c3などにする 必要 があるということです。これは、クリーンルームでセキュリティポリシーを実施するために必要です。

さらに、"column_policy"と"join_policy"がコンシューマ分析リクエストのチェックを実行するには、SQL Jinjaテンプレートですべての列名を dimensions または measure_columns として参照する必要があります。これらのタグは、SQL Jinjaのカスタムテンプレートでデフォルトでチェックさせたい列を参照するために使用してください。

また、SQL Jinjaテンプレートのカスタム引数は、以下のフィルターを使用して、結合および列のポリシーに準拠しているかどうかを確認することができます。

  • join_policy: 文字列値またはフィルター句が結合ポリシーに準拠しているかどうかを確認します。

  • column_policy: 文字列値またはフィルター句が列ポリシーに準拠しているかどうかを確認します。

  • join_and_column_policy: フィルター句で結合に使用される列が結合ポリシーに準拠しているか、また、フィルターとして使用される列が列ポリシーに準拠しているかを確認します。

例えば、 {{ where_clause | sqlsafe | join_and_column_policy }} 句では、 p.HEM = c.HEM and p.STATUS = 1 の入力が解析され、 p.HEM が結合ポリシーにあり、 p.STATUS が列ポリシーにあるかどうかがチェックされます。

注意: sqlsafe フィルターの使用には注意が必要です。このフィルターを使用すると、コラボレーターが純粋なSQLをテンプレートに入れることができます。

コンシューマーのリストを指定しない場合、すべてのコンシューマーがカスタムテンプレートを使用できます。パラメーターを使用してコンシューマーのリストを指定した場合、それらのコンシューマーのみがクリーンルームでテンプレートを使用できます。

入力: cleanroom_name(文字列)、template_name(string)、template(string)、differential_privacy_sensitivity(float、 OPTIONAL)、consumer_list(array、 OPTIONAL)

出力: 成功メッセージ(文字列)

:

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

provider.restrict_template_options_to_consumers

:説明: 特定のコンシューマーがクリーンルームでテンプレートを使用できるかどうかを制御します。

第2引数は JSON オブジェクトで、各名前と値のペアはテンプレートの名前と、それを使用できるコンシューマーの配列です。各コンシューマーは、アカウントロケーターを使用して指定されます。

入力: cleanroom_name(string)、access_details(variant)

出力: 成功メッセージ(string)

:

call samooha_by_snowflake_local_db.provider.restrict_template_options_to_consumers(
    $cleanroom_name,
    {
        'prod_template_1': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
    }
);
Copy

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

以下の APIs では、クリーンルームにテンプレートを追加するコンシューマーからの要求を承認または拒否することができます。コンシューマー定義のテンプレートは、プロバイダーがコンシューマーの追加リクエストを承認した場合にのみ、クリーンルームに追加されます。詳細については、[開発者 API を使用してコンシューマー定義のテンプレートを追加する](/user-guide/cleanrooms/developer-consumer-templates)をご参照ください。

provider.list_template_requests

説明: クリーンルームにコンシューマー定義のテンプレートを追加したいコンシューマーからのすべてのリクエストをリストします。これには、保留中のリクエスト、承認済みのリクエスト、拒否済みのリクエストが含まれます。

入力: cleanroom_name(文字列)

出力: request_id(string)、consumer_identifier(string)、template_name(string)、template_definition(string)、status(string)

:

CALL samooha_by_snowflake_local_db.provider.list_template_requests('dcr_cleanroom');
Copy

provider.approve_template_request

説明: クリーンルームへのテンプレート追加リクエストを承認します。<request_id>引数を取得するには、 provider.list_template_requests コマンドを実行し、リクエストの UUID を取得します。

入力: cleanroom_name(string)、request_id(string)

出力: 成功メッセージ(文字列)

:

CALL samooha_by_snowflake_local_db.provider.approve_template_request('dcr_cleanroom', 
    '01b4d41d-0001-b572');
Copy

provider.reject_template_request

****: クリーンルームへのテンプレートの追加リクエストを拒否します。<request_id>引数を取得するには、 provider.list_template_requests コマンドを実行し、リクエストの UUID を取得します。

入力: cleanroom_name(string)、request_id(string)、consumer_account_locator(string)

出力: 成功メッセージ(文字列)

:

CALL samooha_by_snowflake_local_db.provider.reject_template_request('dcr_cleanroom',
  '01b4d41d-0001-b572',
  'Failed security assessment');
Copy

分析を実行できる人の設定

以下のコマンドを使用して、クリーンルームで分析を実行できる人を設定します。プロバイダー(クリーンルーム作成者)、コンシューマー(クリーンルームインストール担当者)、またはその両方を指定できます。

provider.enable_provider_run_analysis

説明:プロバイダー(クリーンルーム作成者)がクリーンルーム内で分析を実行できるようにします(デフォルトでは無効になっています)。

注釈

非常に重要: これは、provider.add_consumer に、コンシューマーがクリーンルームをインストールする前に呼び出される必要があります。既にクリーンルームをインストールされた後に変更された場合は、新しい設定を反映させるためにクリーンルームをインストールし直す必要があります。

入力: cleanroom_name(string)、consumer_account_locator(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.enable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
Copy

provider.disable_provider_run_analysis

説明:プロバイダー(クリーンルーム作成者)がクリーンルームで分析を実行することを無効にします(デフォルトでは無効になっています)。

注釈

非常に重要: これは、provider.add_consumer に、コンシューマーがクリーンルームをインストールする前に呼び出される必要があります。既にクリーンルームをインストールされた後に変更された場合は、新しい設定を反映させるためにクリーンルームをインストールし直す必要があります。

入力: cleanroom_name(string)、consumer_account_locator(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.disable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
Copy

provider.enable_consumer_run_analysis

説明:コンシューマー(クリーンルームインストール担当者)がクリーンルーム内で分析を実行できるようにします(デフォルトで有効)。

注釈

非常に重要: これは、provider.add_consumer に、コンシューマーがクリーンルームをインストールする前に呼び出される必要があります。既にクリーンルームをインストールされた後に変更された場合は、新しい設定を反映させるためにクリーンルームをインストールし直す必要があります。

入力: cleanroom_name(string)、consumer_account_locator(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']); 
Copy

provider.disable_consumer_run_analysis

説明:コンシューマー(クリーンルームインストール担当者)がクリーンルーム内で分析を実行できないようにします(デフォルトで有効)。

注釈

非常に重要: これは、provider.add_consumer に、コンシューマーがクリーンルームをインストールする前に呼び出される必要があります。既にクリーンルームをインストールされた後に変更された場合は、新しい設定を反映させるためにクリーンルームをインストールし直す必要があります。

入力: cleanroom_name(string)、consumer_account_locator(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']); 
Copy

library.is_provider_run_enabled

説明: このクリーンルームがプロバイダー実行分析を有効にしているかチェックします。注意:consumer.enable_templates_for_provider_run(下記参照)を呼び出すことによって、明示的な承認を与える必要があります。

入力: cleanroom_name(文字列)

出力: 有効メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
Copy

library.is_consumer_run_enabled

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

入力: cleanroom_name(文字列)

出力: 有効メッセージ(文字列)

:

call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
Copy

テンプレートチェーン

テンプレートチェーンの作成と管理には、以下のコマンドを使用します。テンプレートチェーンの使用に関する一般的な情報は、「開発者 APIs を使用してテンプレートを順次実行する」(./developer-template-chains.rst)をご参照ください。

provider.add_template_chain

説明: 新しいテンプレートチェーンを作成します。テンプレートは、テンプレートチェーンに追加される前に存在していなければなりません。

入力: cleanroom_name(string)、template_chain_name(string)、templates(array of objects)

テンプレートを表す JSON オブジェクトは、以下のフィールドを含むことができます。

  • template_name (string) - テンプレートチェーンに追加するテンプレートを指定します。テンプレートはすでに存在していなければなりません。

  • cache_results (boolean) - テンプレートチェーンの他のテンプレートがアクセスできるように、テンプレートの結果を一時的に保存するかどうかを決定します。結果をキャッシュするには、 TRUE を指定します。

  • output_table_name (string) - cache_results = TRUE の場合、テンプレート結果が格納されるSnowflakeテーブルの名前を指定します。

  • jinja_output_table_param (string) - cache_results = TRUE の場合、output_table_nameに格納された結果を受け入れるために他のテンプレートが含める必要のあるJinjaパラメーター名を指定します。

  • cache_expiration_hours (integer) - cache_results = TRUE の場合、キャッシュ内の結果が削除されるまでの時間数を指定します。キャッシュの有効期限が切れると、次にテンプレートチェーンが実行されたときに、テンプレートの結果でキャッシュがリフレッシュされます。

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.add_template_chain(
  'collab_clean_room',
  '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
    }
  ]
);
Copy

provider.view_added_template_chains

説明: クリーンルームで現在アクティブなテンプレートを表示します。

入力: cleanroom_name(文字列)

出力:* 追加されたテンプレートチェーン(テーブル)*

:

call samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
Copy

provider.view_template_chain_definition

説明: テンプレートチェーンの属性を返します。

入力: cleanroom_name (string), template_chain_name (string)

出力: テンプレートチェーンの定義 (string)

:

call samooha_by_snowflake_local_db.provider.view_template_chain_definition($cleanroom_name, 'insights_chain');
Copy

provider.clear_template_chain

説明: クリーンルームから指定されたテンプレート(その名前で参照)を削除します。

入力: cleanroom_name(string)、template_name(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'insights_chain');
Copy

provider.clear_all_template_chains

説明: クリーンルームに追加されたすべてのテンプレートを削除します。

入力: cleanroom_name(文字列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.clear_all_template_chains($cleanroom_name);
Copy

クリーンルーム作成者としての分析

provider.submit_analysis_request

説明:クリーンルームプロバイダーとして分析を実行するには、分析リクエストを送信します。この分析リクエストはクリーンルームに送られ、コンシューマーのセキュリティポリシーと照合されます。セキュリティーチェックと差分プライバシーレイヤーが解析を許可すると、解析はクリーンルーム内で実行され、結果はクリーンルーム内に安全に保存されます。

プロバイダーが分析を実行できるようにする場合、プロバイダーだけが知っている暗号キーがクリーンルームに追加されます。このキーは分析結果の暗号化に使用され、プロバイダーテナントに転送される前に、安全なキーを使用して復号化されます。これにより、プロバイダーが依頼した分析結果をプロバイダー以外の人が見ることはできません。

入力: cleanroom_name (string)、consumer_account_locator (string)、template_name (string)、consumer_tables (array)、provider_tables (array)、analysis_arguments (object)

出力: request ID (string)

:

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

-- This API returns a request ID that we save into a local variable.
set request_id = '<REQUEST_ID';
Copy

provider.check_analysis_status

説明:分析リクエストが送信されたら、このAPIを使用してリクエストのステータスを確認します。リクエストが表示されるまで、送信後1分ほどかかることがあります。完了すると、ステータスはCOMPLETEDと表示されます。

入力: cleanroom_name (string)、request_id (string)、consumer_account_locator (string)

出力: status (string)

:

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

provider.get_analysis_result

説明:分析ステータスがIDのリクエストに対してCOMPLETEDと表示されると、このAPIを使ってrequest_idの結果を得ることができます。これは、分析結果を取得し、分析有効化時にアカウントに作成された秘密キーで復号化し、分析結果を出力します。

入力: cleanroom_name (string)、request_id (string)、consumer_account_locator (string)

出力: analysis results (table)

:

call samooha_by_snowflake_local_db.provider.get_analysis_result(
    $cleanroom_name, 
    $request_id, 
    '<CONSUMER_ACCOUNT>'
);
Copy

コンシューマーと共有

クリーンルームをコンシューマーと共有するには、以下のコマンドを使用します。

provider.add_consumers

説明: クリーンルームにコンシューマーアカウントを追加します。単一または複数のコンシューマーアカウントのロケーターとアカウント名は、カンマ区切りの値を含む文字列パラメーターを介して追加されます。また、 provider.add_consumers に複数のコールでアカウントを追加することもできます。

オプションで、このクリーンルームで差分プライバシーを有効にするかどうかを示すブール値フラグを渡すことができます。デフォルトでは、差分プライバシーはどのクリーンルームでも有効になっていません。

入力: cleanroom_name(string)、consumer_account_locator(string)、consumer_account_name(string)、enable_differential_privacy(boolean、オプション、デフォルト: FALSE)

出力: 成功メッセージ(文字列)

例1:

call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'IMA38718', 'PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778');
Copy

例1では、アカウントはlocator=IMA38718、accountname=PKBYKUM。SAMOOHA_MANAGED_ACCOUNT_DEMO_642778。

例2

call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'IMA38718,LEB88915', 'PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778,PM.CLEANROOMAWSUSWEST21');
Copy

例2では、最初のアカウントはlocator=IMA38718、accountname=PKBYKUM。SAMOOHA_MANAGED_ACCOUNT_DEMO_642778。2つ目のアカウントは、locator=LEB88915、accountname=PM.CLEANROOMAWSUSWEST21。

provider.create_cleanroom_listing

説明:クリーンルームが設定されると、Snowflakeマーケットプレイス上にそのクリーンルームのプライベートリスティングを作成し、指定されたコラボレーターと共有します。

orgname.account_nameフォーマットのアカウントURLを用いてコラボレーターを識別子とします。コンシューマーは、アカウントの組織名とアカウント名の検索の指示に従って、この文字列を見つけることができます。

注釈

この手順を使うには、releaseディレクティブを設定しておく必要があります。詳細は [provider.set_default_release_directive](#provider-set-default-release-directive)をご参照ください。

入力: cleanroom_name(string)、consumer_account_name(string)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.create_cleanroom_listing($cleanroom_name, <consumerorg.consumeracct>);
Copy

provider.enable_laf_for_cleanroom

説明Cross-Cloud Auto-Fulfillmentを有効にすることで、Snowflakeアカウントが自分のアカウントと異なるリージョンにあるコラボレーターとクリーンルームを共有することができます。クロスクラウド自動複製は、リストの自動複製(LAF)とも呼ばれています。

注釈

このコマンドを実行する に、ACCOUNTADMIN ロールを持つSnowflake管理者が、Snowflakeアカウントでクロスクラウド自動複製を有効にする必要があります。Snowflakeアカウントでクロスクラウド自動複製を有効にする手順については、異なるリージョンのアカウントとの連携をご参照ください。

他リージョンのコンシューマーと協力するためには、さらにコストがかかります。これらのコストの詳細については、クロスクラウド自動複製コストをご参照ください。

クリーンルームのクロスクラウド自動複製を有効にした後、 provider.create_cleanroom_listing コマンドを使用して、通常通りリストにコンシューマーを追加できます。リストは、必要に応じて自動的にリモートクラウドやリージョンに複製されます。

入力: cleanroom_name(文字列)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.enable_laf_for_cleanroom($cleanroom_name);
Copy

provider.view_cleanrooom_scan_status

説明:DISTRIBUTIONをEXTERNALに設定したクリーンルームのスキャンステータスを表示します。デフォルトのリリースディレクティブが設定され、クリーンルームがコラボレーターに共有される前に、スキャンは「APPROVED」としてマークされる必要があります。

入力: cleanroom_name(文字列)

出力: scan status (string)

:

call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name);
Copy

Pythonコードをクリーンルームにロードする関数

provider.load_python_into_cleanroom

説明: 内密に 任意のPython関数をクリーンルームにロードします。このAPIを使ってクリーンルームに読み込まれたコードは、コンシューマーには見えません。出来上がった関数は、SQL Jinja テンプレート内でクリーンルームとして呼び出すことができます。

注釈

この手順は、あなたのPythonコードを既存のバージョンのパッチとしてクリーンルームに追加します。これにより、セキュリティスキャンが再度トリガーされ、コラボレーターに最新バージョンを共有する前に、APPROVEDになるまで待つ必要があるかもしれません。その場合は、provider.set_default_release_directiveを、クリーンルームを最新のバージョン/パッチでプロバイダーに共有する前に呼び出してください。詳細については、Snowflakeネイティブアプリのドキュメントをご参照ください。

入力: cleanroom_name(string)、function_name(string)、arguments(array)、packages(array)、ret_type(string)、handler(string)、code(string)

出力: 成功メッセージ(文字列)

:

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

クリーンルームUI登録方法

以下のコマンドを使用して、カスタム分析をロードしたクリーンルームをSnowflake Data Clean RoomのWebアプリの[カスタム分析]タブに登録します。

provider.add_ui_form_customizations

説明::コンシューマーのためにウェブアプリに登録したいクリーンルームのUIフォームのカスタマイズを追加します。最低限、display_namedescriptionmethodologyの値を指定する必要があります。

可能なカスタマイズは以下の通りです。

  • type: 次のUI要素のいずれか

    • boolean:真偽値セレクタ

    • integer:矢印で数字を変更

    • multiselect:ドロップダウンから複数の項目を選択

    • dropdown:ドロップダウンから1項目を選択

    • date:日付セレクタ

    • any:通常のテキスト入力フィールド

  • choices:ドロップダウンとマルチセレクトタイプで利用可能な選択肢のリスト

  • default:任意のデフォルト値

  • display_name (必須):UI要素の表示名

  • description (必須):名前の下に表示される説明

  • methodology (必須):コンシューマーがフォームを使用して分析を実行する方法の説明。

  • infoMessage:名前の横にある「i」アイコンにカーソルを合わせると表示される情報メッセージ

  • サイズ:要素サイズをXSS MLXLの間で選択してください

  • required:要素が必須かどうかを示します。TRUEまたはFALSEを指定してください。

  • group:複数の要素に同じ値を入れてUIフォームでグループ化します。

  • render_table_dropdowns:ユーザーにテーブルを選択させるデフォルトのドロップダウンリストをテンプレートに表示するかどうかを制御します。指定しない場合は、プロバイダーテーブルとコンシューマーテーブルの両方にドロップダウンが表示されます。すべてのプロバイダーテーブルまたはすべてのコンシューマーテーブルで構成されるドロップダウンリストが必要ですが、それらのリストを表示する必要がない場合は、代わりに 参照 パラメーターを使用します。

    render_table_dropdownsの値は、以下のキーからなるdictです。

    • render_consumer_table_dropdownFALSEの場合、コンシューマーテーブルのデフォルトのドロップダウンリストは非表示になります。デフォルトはTRUEです。

    • render_provider_table_dropdownFALSEの場合、プロバイダーテーブルのデフォルトのドロップダウンリストは非表示になります。デフォルトはTRUEです。

    デフォルトのドロップダウンリストを非表示にする場合、カスタムテンプレートで{{ source_table }}{{ my_table}}の特別引数を使用し、必要なテーブルを含む独自のドロップダウンリストを定義することができます。カスタムテンプレートを定義する際にこれらの特殊変数を使用する方法の詳細については、provider.add_custom_sql_templateをご参照ください。

  • 参照: クリーンルームで利用可能なテーブルまたは列を含むドロップダウンリストを作成します。ウェブアプリで分析を実行する際に、ユーザーインターフェイスを設計段階で各テーブルや列を個別に指定することなく、ユーザーがテーブルや列を選択できるようにします。

    この文字列には次のような値があります。

    • PROVIDER_TABLES: ドロップダウンリストは、クリーンルーム内のすべてのプロバイダーのテーブルで構成されています。

    • CONSUMER_TABLES: ドロップダウンリストは、クリーンルーム内のすべてのコンシューマーのテーブルで構成されています。

    • PROVIDER_COLUMN_POLICY: ドロップダウンリストは、プロバイダーの列ポリシーの列、例えば、フィルタリングできる列で構成されます。指定する場合は、 provider_parent_table_field パラメーターも含めて、どのプロバイダーテーブルに列ポリシーが含まれているかを識別する必要があります。

    • PROVIDER_JOIN_POLICY: ドロップダウンリストは、プロバイダーの結合ポリシーの列、つまり、コンシューマーが結合キーとして使用できるプロバイダーのテーブルの列で構成されます。指定する場合は、 provider_parent_table_field パラメーターも含めて、どのプロバイダーテーブルに結合ポリシーが含まれているかを識別する必要があります。

    • CONSUMER_COLUMNS: ドロップダウンリストには、コンシューマーの結合ポリシーの列、つまりコンシューマーテーブルの列で、アナリストが結合キーとして使用できる列が表示されます。指定する場合は、 consumer_parent_table_field パラメーターも含めて、どのコンシューマーテーブルに結合ポリシーが含まれているかを識別する必要があります。

  • provider_parent_table_field: ユーザーがプロバイダーテーブルを選択するための UI フィールドの名前を指定します。参照 パラメーターが PROVIDER_COLUMN_POLICY または PROVIDER_JOIN_POLICY を指定する場合は必須です。

    例えば、 a_provider_table が、アナリストがプロバイダーテーブルを選択できるようにする UI フィールドの名前である場合、ユーザーがプロバイダーテーブルから列を選択できるようにする UI フィールドには、名前と値のペア 'provider_parent_table_field': 'a_provider_table' が含まれることがあります。

  • consumer_parent_table_field: ユーザーがプロバイダーテーブルを選択するための UI フィールド名を指定します。参照 パラメーターが CONSUMER_COLUMNS を指定する場合は必須です。

    例えば、 a_consumer_table が、アナリストがコンシューマーテーブルを選択できるようにする UI フィールドの名前である場合、ユーザーがテーブルから列を選択できるようにする UI フィールドには、名前と値のペア 'consumer_parent_table_field': 'a_consumer_table' が含まれることがあります。

  • warehouse_hints:コンシューマーアカウントが分析を実行するために使用するウェアハウスの種類を制御するオプションのカスタマイズ。例えば、ほとんどの機械学習のユースケースでは、SnowflakeはSnowpark最適化ウェアハウスを指定することを推奨します。warehouse_size の有効な値については、CREATE WAREHOUSEをご参照ください。

ビジュアルのカスタマイズは以下の通りです。

  • measure_columns: 出力に表示される量的データポイント。これらの列には、詳細なデータ分析を可能にする指標とディメンションが含まれます。

  • default_output_type: データを視覚化する形式。サポートされているタイプ:

    • TABLE: 表形式でデータを表示します。これが既定の出力タイプです。

    • BAR: 異なるカテゴリーを比較するのに理想的な棒グラフを使用してデータを視覚化します。

    • LINE: 折れ線グラフを使用して、時間的または連続的なデータの傾向を表示します。

    • PIE: データを円グラフで表し、比率やパーセンテージを表示するのに適しています。

入力: template name (string)、template_description (dict)、customizations (dict)、output_config (dict)

出力: 成功メッセージ(文字列)

例:

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

provider.register_cleanroom_in_ui

説明: コンシューマーがウェブアプリで使用するクリーンルームを登録します。クリーンルームはプロバイダーが開発者APIsを使って作成・設定します。このメソッドは、コンシューマーがインストールし、テーブルを追加し、開発者APIsを使用せずに追加したカスタム分析を実行できるように、ウェブアプリに登録します。クリーンルームとの連携は、ウェブインターフェイスを通じて行います。

ウェブアプリに複数のカスタムテンプレートを含めるために、この API を複数回呼び出すことができます。

入力: cleanroom_name(string)、template name(string)、consumer_account_locator(string)、user_email(string)

出力: 成功メッセージ(文字列)

例:

call samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)
Copy

provider.view_ui_registration_request_log

説明:クリーンルームをウェブアプリに登録するためにアカウントから発行されたリクエストの一覧を表示します。リクエストごとに関連付けられたIDがあります。これは、view_ui_registration_logプロシージャと併用して、リクエストのステータスを表示できます。リクエストはバックエンドに共有され、そこで処理され、クリーンルームがクリーンルームに追加されます。

入力:

出力: 成功メッセージ(文字列)

例:

call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
Copy

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

クリーンルームの関連プロパティを表示するには、以下のコマンドを使用します。

provider.describe_cleanroom

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

入力: cleanroom_name(文字列)

出力: クリーンルームの広範な説明文字列(テーブル)

:

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

provider.view_provider_datasets

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

入力: cleanroom_name(文字列)

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

:

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

provider.view_join_policy

説明:クリーンルームで現在有効な参加ポリシーを表示します。

入力: cleanroom_name(文字列)

出力: 結合ポリシー(テーブル)

:

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

provider.view_added_templates

説明:クリーンルームで現在アクティブなテンプレートを表示します。

入力: cleanroom_name(文字列)

出力: 追加されたテンプレート(テーブル)

:

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

provider.view_column_policy

説明:クリーンルームで現在有効な列ポリシーを表示します。

入力: cleanroom_name(文字列)

出力: 列ポリシー(テーブル)

:

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

provider.view_consumers

説明:クリーンルームが共有されているコンシューマーを表示します。

入力: cleanroom_name(文字列)

出力: クリーンルームにアクセスできるコンシューマーアカウント(テーブル)

:

call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
Copy

provider.view_cleanrooms

説明: 説明最近作成されたクリーンルームを作成日順に表示します。

入力:

出力: 既存の全クリーンルームを作成日順に並べたもの(テーブル)

:

call samooha_by_snowflake_local_db.provider.view_cleanrooms();
Copy

provider.view_request_logs

説明:このクリーンルームの利用者から送信されたリクエストログを表示します。

入力: cleanroom_name(文字列)

出力: クリーンルーム(テーブル)に対して実行されているクエリの記録されたログのセット

:

call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
Copy

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

クリーンルームの機能とサポートされるフローを活用するために、一般的に以下の方法を使用します。

provider.grant_reference_usage

説明:データを含むアップストリームデータベースにクリーンルームへのreference_usageを許可します。

注釈

このコマンドはウェブアプリ専用です。

これは、register_dbにあるものよりもはるかに限定的なグラントです。上流データベースのデータを参照するビューやUDTFsを追加する場合、この手順を使用する必要がありますが、SAMOOHA_APP_ROLEロールに実際のテーブルを表示させたり、Webアプリのドロップダウンにこれらのデータベースを表示させたりすることはできません。

このコマンドは、リンクされた表示やUDTFsで使用されるデータを含むデータベースで呼び出す必要があります。

入力: database_names (array)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.grant_reference_usage(['<DATABASE_NAME>']);
Copy

provider.revoke_reference_usage

説明provider.grant_reference_usageによって作成された参照データベースのリストからデータベースを削除します。

注釈

このコマンドはウェブアプリ専用です。

入力: database_names (array)

出力: 成功メッセージ(文字列)

:

call samooha_by_snowflake_local_db.provider.revoke_reference_usage(['<DATABASE_NAME>']);
Copy

provider.mount_request_logs_for_all_consumers

説明: クリーンルームのコンシューマーからプロバイダーへ戻ってくる情報にプロバイダーがアクセスできるようにします。

入力: cleanroom_name(文字列)

出力: 成功メッセージ(文字列)

:

CALL samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
Copy

library.enable_local_db_auto_upgrades

説明: タスク、 samooha_by_snowflake_local_db.admin.expected_version_task を有効にします。このタスクは、新しいバージョンがリリースされると、Snowflake Data Clean Rooms用のSnowflake Native Appを自動的にアップグレードします。

入力:* なし*

出力: 成功メッセージ(文字列)

:

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を自動的にアップグレードします。

入力:* なし*

出力: 成功メッセージ(文字列)

:

CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
Copy