Snowflake Data Clean Room:提供商 API 参考指南

本指南介绍允许提供商创建、配置和共享 Clean Room 的 开发者 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

为 Clean Room 创建名称。Clean Room 名称 只能包含字母数字字符。除空格和下划线外,Clean Room 名称不能包含任何特殊字符。

set cleanroom_name = 'Test Cleanroom 1';  -- This must only have alphanumeric characters.
Copy

创建 Clean Room

使用以下命令创建和删除 Clean Room:

provider.cleanroom_init

描述:在账户中创建 Clean Room。您可以选择指定 Clean Room 的 分布类型,以指定这是仅在组织内部共享的测试 Clean Room (INTERNAL),还是打算与其他组织共享的生产 Clean Room (EXTERNAL)。

您可以将 Clean Room 从 INTERNAL 更改为 EXTERNAL,如下所示:

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

实参:

  • cleanroom_name(字符串) – Clean Room 名称,最多 80 个字符。名称不区分大小写、A‑Z、a‑z、0‑9、空格和下划线。当创建 Clean Room 时,空格将会解析为下划线。

  • distribution(字符串,可选) – 以下值之一(默认值为 INTERNAL):

    • INTERNAL – Clean Room 仅对同一组织内的用户可见,并且在 更改发布指令 之前不需要进行安全扫描。

    • EXTERNAL – Clean Room 可以在组织外部共享,并且在 更改发布指令 之前需要进行安全扫描。

返回: success message(字符串)

示例

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

provider.set_default_release_directive

描述:设置 Clean Room 的版本指令,即协作者将收到的版本和补丁。

默认情况下,创建的所有 Clean Room 都有以下版本号和补丁号:

  • 版本:V1_0

  • 补丁:0

备注

如果 Clean Room 分布设置为 EXTERNAL,则只有在 Clean Room 安全扫描进入 APPROVED 状态后,才能调用此命令。要查看当前扫描状态,请调用:

show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
Copy

实参: cleanroom_name(字符串)、version(字符串)、patch(字符串)

返回: success message(字符串)

示例

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

provider.drop_cleanroom

描述:创建者可以删除现有的 Clean Room。此命令会完全删除 Clean Room,这意味着已安装 Clean Room 的使用者无法再访问或使用它。

实参: cleanroom_name(字符串)

返回: success message(字符串)

示例

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

注册和取消注册数据

使用以下命令注册和取消注册数据库、架构和对象。必须先注册表和视图,然后才能将其链接到 Clean Room。如果您注册了一个数据库或架构,则还需注册该数据库或架构中的所有对象。

provider.register_db

描述:以调用者权限执行,允许账户管理员将数据库注册为对 Snowflake Data Clean Room 应用程序可见。数据库中的所有架构和表,以及 Snowflake Data Clean Room 本地应用程序 (SAMOOHA_BY_SNOWFLAKE) 都具有 SELECT 功能。

实参: db_name(字符串)

返回: success message(字符串)

示例

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

library.register_schema

描述:与 register_db 类似,但在架构级运行。可以传入表示完全限定架构名称的数组或字符串,并授予 SAMOOHA_APP_ROLE 角色选择权限,使用户能够将架构中的对象链接到 Clean Room 中。

如果要注册托管访问架构(即使用 WITH MANAGED ACCESS 参数创建的架构),请改用 library.register_managed_access_schema

实参: schema_name(数组)

返回: success message(字符串)

示例

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 角色选择权限,使用户能够将架构中的对象链接到 Clean Room 中。

实参: schema_name(数组)

返回: success message(字符串)

示例

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

library.register_objects

描述:授予 Clean Room 访问所有类型的表和视图的权限,使其可以通过调用 provider.link_datasets 链接到 Clean Room。您可以通过调用 library.register_schemalibrary.register_managed_access_schemaprovider.register_db 注册更广泛的对象组。

实参:

  • object_names(数组) – 完全限定的对象名称数组。然后可以将这些对象链接到 clean room。

返回: success message(字符串)

示例

要注册表和视图:

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

描述:注册所有类型的表和视图。

实参: object_names(数组)、is_view(布尔)、is_iceberg(布尔)、is_external(布尔)、is_under_managed_access_schema(布尔)

返回: success message(字符串)

示例

要注册表:

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

描述:与 register_db 类似,但在表级运行。可以传入表示完全限定表名称的数组或字符串,并授予 SAMOOHA_APP_ROLE 角色选择权限,使用户能够将表链接到 clean room 中。

如果要在托管访问架构(即使用 WITH MANAGED ACCESS 参数创建的架构)中注册表,请改用 library.register_managed_access_table

实参: table_name(数组)

返回: success message(字符串)

示例

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

library.register_managed_access_table – 已弃用

注意

此命令现已弃用。 请使用 library.register_objects

描述:类似于 register_table,但在使用 WITH MANAGED ACCESS 参数创建的架构中注册表。可以传入表示完全限定表名称的数组或字符串,并授予 SAMOOHA_APP_ROLE 角色选择权限,使用户能够将表链接到 clean room 中。

实参: table_name(数组)

返回: success message(字符串)

示例

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

library.register_view – 已弃用

注意

此命令现已弃用。 请使用 library.register_objects

描述:与 register_db 类似,但在视图级运行。可以传入表示完全限定视图名称的数组或字符串,并授予 SAMOOHA_APP_ROLE 角色选择权限,使用户能够将视图链接到 clean room 中。

如果要在托管访问架构(即使用 WITH MANAGED ACCESS 参数创建的架构)中注册视图,请改用 library.register_managed_access_view

实参: view_name(数组)

返回: success message(字符串)

示例

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

library.register_managed_access_view – 已弃用

注意

此命令现已弃用。 请使用 library.register_objects

描述:类似于 register_view,但在使用 WITH MANAGED ACCESS 参数创建的架构中注册视图。可以传入表示完全限定视图名称的数组或字符串,并授予 SAMOOHA_APP_ROLE 角色选择权限,使用户能够将视图链接到 clean room 中。

实参: view_name(数组)

返回: success message(字符串)

示例

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(字符串)

返回: success message(字符串)

示例

call samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
Copy

library.unregister_schema

描述:取消注册一个架构,以防止用户将其表和视图链接到 clean room。

如果要取消注册托管访问架构(即使用 WITH MANAGED ACCESS 参数创建的架构),请改用 library.unregister_managed_access_schema

实参: schema_name(数组)

返回: success message(字符串)

示例

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(数组)

返回: success message(字符串)

示例

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

library.unregister_objects

描述:撤销 clean room 对所有类型的表和视图的访问权限。此账户管理的所有 clean room 中的任何用户将无法再使用这些对象。

实参:

  • object_names(数组) – 应该撤消访问权限的完全限定对象名称数组。

返回: success message(字符串)

示例

要取消注册表和视图:

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

描述:取消注册所有类型的表和视图。

实参: object_names(数组)、is_view(布尔)、is_iceberg(布尔)、is_external(布尔)、is_under_managed_access_schema(布尔)

输出 success message(字符串)

示例

要取消注册表:

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

描述:与 unregister_db 类似,但在表级运行。可以传入表示完全限定表名称的数组或字符串来取消注册表。用户无法将取消注册的表链接到 clean room 中。

如果要在托管访问架构(即使用 WITH MANAGED ACCESS 参数创建的架构)中取消注册表,请改用 library.unregister_managed_access_table

实参: table_name(数组)

返回: success message(字符串)

示例

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

library.unregister_managed_access_table – 已弃用

注意

此命令现已弃用。 请使用 library.unregister_objects

描述:类似于 unregister_table,但在托管访问架构(即使用 WITH MANAGED ACCESS 创建的架构)中取消注册表。

实参: table_name(数组)

返回: success message(字符串)

示例

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

library.unregister_view – 已弃用

注意

此命令现已弃用。 请使用 library.unregister_objects

描述:与 unregister_db 类似,但在视图级运行。可以传入表示完全限定视图名称的数组或字符串来取消注册表。用户无法将取消注册的视图链接到 clean room 中。

如果要在托管访问架构(即使用 WITH MANAGED ACCESS 参数创建的架构)中注册视图,请改用 library.unregister_managed_access_view

实参: view_name(数组)

返回: success message(字符串)

示例

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

library.unregister_managed_access_view – 已弃用

注意

此命令现已弃用。 请使用 library.unregister_objects

描述:类似于 unregister_view,但在托管访问架构(即使用 WITH MANAGED ACCESS 创建的架构)中取消注册视图。

实参: view_name(数组)

返回: success message(字符串)

示例

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

管理数据集和表访问权限

使用以下命令为 Clean Room 添加数据和设置策略。

provider.restrict_table_options_to_consumers

描述:控制特定使用者是否可以访问 Clean Room 中的表。

第二个参数是 JSON 对象,其中每个名/值对是表的名称和可以访问该表的使用者数组。每个使用者都使用其账户定位器来指定。

输入cleanroom_name(字符串),access_details(变量)

输出成功消息(字符串)

示例

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

描述:指定在 Clean Room 内运行模板时,允许使用者对哪些列执行联接。请注意,列策略是 仅替换,因此如果再次调用该函数,先前设置的列策略将被当前策略完全替换。

请注意,检查会审查是将 where_clause 实参添加到 SQL Jinja 模版,还是将任意实参添加到 join_policy 筛选器。此检查可查找任何未经授权的列。使用这些检查可能无法找出含有通配符的查询,因此,设计分析模板时仍应慎重。

默认情况下,会对 SQL Jinja 实参(称为 where_clause)进行检查。确保使用此标签启用此检查。

实参: cleanroom_name(字符串)、table_and_col_names(数组)

返回: success message(字符串)

示例

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

模板

使用以下命令添加此 Clean Room 支持的模板/分析。

provider.add_templates

描述:使用模板的名称标识符添加预定义模板列表。示例包括“prod_overlap_analysis”和“prod_provider_data_analysis”。

实参: cleanroom_name(字符串)、template_names(字符串)

返回: success message(字符串)

示例

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

provider.view_template_definition

描述:给定模板名称,从 Clean Room 检索模板定义。此命令有助于用户直观地检查模板,并确定在运行模板时需要传递哪些参数。

实参: cleanroom_name(字符串)、template_name(字符串)

返回: 模板定义(字符串)

示例

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

provider.clear_template

描述:从 Clean Room 中移除指定模板(用其名称表示)。

实参: cleanroom_name(字符串)、template_name(字符串)

返回: success message(字符串)

示例

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

provider.clear_all_templates

描述:移除已添加到 Clean Room 的所有模板。一旦调用此命令,就需要再次添加模板。

实参: cleanroom_name(字符串)

返回: success message(字符串)

示例

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。它只能用于聚合列和分组依据列。

请注意,进行检查的方式是解析为查找任何未经授权的列而要对数据运行的 SQL 查询。使用这些检查可能无法找出含有通配符的查询,因此,设计分析模板时仍应慎重。

默认情况下,会对 SQL Jinja 实参(名为 dimensionsmeasure_columns)进行检查。确保使用这些标签来启用此检查。

另外,您还可以使用 SQL Jinja 模板中的 join_policycolumn_policy 标签,对自定义 SQL Jinja 实参执行安全策略。

实参: cleanroom_name(字符串)、analysis_and_table_and_columns(数组)

返回: success message(字符串)

示例

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 模板添加到 Clean Room。这样的话,使用者就可以调用模板了。

您可以多次调用该 API 将多个自定义模板添加到 Clean Room。该过程将覆盖任何具有相同名称的先前模板。如果要编辑现有模板,请将现有模板名称作为实参传递给 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 模板中,有两个特殊实参:

  • source_table:来自提供商端的表数组

  • my_table:来自使用者端的表数组

必须使用这些实参来引用所有提供商/使用者表,因为实际链接到 Clean Room 的安全视图名称与表名不同。重要的是,提供商表别名 MUST 为 p(或 p1)、p2、p3、p4 等。使用者表别名 必须 为 c(或 c1)、c2、c3 等。要在 Clean Room 中执行安全策略,必须满足此条件。

此外,要使“column_policy”和“join_policy”对使用者分析请求执行检查,在 SQL Jinja 模版中,所有列名必须称为 dimensionsmeasure_columns。确保使用这些标签来引用自定义 SQL Jinja 模板中默认要检查的列。

或者,可以使用以下筛选器检查自定义 SQL Jinja 模板中的任何参数是否符合联接和列策略(注意: 这些筛选器目前无法与前面描述的标准 pc 别名结合使用):

  • 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 放入模板。

如果不指定使用者列表,则所有使用者都可以使用自定义模板。如果使用该参数指定使用者列表,则只有这些使用者才能在 Clean Room 中使用该模板。

实参:

  • cleanroom_name(字符串) – 适用此模板的 Clean Room 的名称。

  • template_name(字符串) – 模板的名称。必须全部是小写字母、数字、空格或下划线。激活模板的名称必须以“activation”开头。

  • 模板(字符串) – JinjaSQL 模板。

  • differential_privacy_sensitivity(浮点数,OPTIONAL) – 如果为该 Clean Room 启用了差分隐私,则它会指定应用于该模板使用的数据的差分隐私噪声量。默认值为 1.0,没有上限。将此值设置为查询可以通过从结果中排除单行而更改的最大量。您必须通过调用 provider.add_consumers(enable_differential_privacy=TRUE) 来启用差分隐私,才能使此实参生效。

  • consumer_list(数组,OPTIONAL) – 一个或多个账户定位器的数组。该模板将仅添加到指定账户的 Clean Room 中。您可以稍后通过调用 provider.restrict_template_options_to_consumers 来修改此列表。

返回: success or failure message(字符串)

示例

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

描述:控制特定使用者是否可以使用 Clean Room 中的模板。

第二个参数是 JSON 对象,其中每个名/值对是模板的名称和可以使用该模板的使用者数组。每个使用者都使用其账户定位器来指定。

输入cleanroom_name(字符串),access_details(变量)

输出成功消息(字符串)

示例

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 让您可以批准或拒绝使用者为 Clean Room 添加模板的请求。仅当提供商批准使用者添加模板的请求时,才会将使用者定义的模板添加到 Clean Room。 有关更多信息,请参阅 使用开发者 API 添加使用者定义的模板

provider.list_template_requests

描述:列出所有想要将使用者定义的模板添加到 Clean Room 的使用者的请求。其中包括待处理、已批准和已拒绝的请求。

实参: cleanroom_name(字符串)

返回: request_id(字符串)、consumer_identifier(字符串)、template_name(字符串)、template_definition(字符串)、status(字符串)

示例

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

provider.approve_template_request

描述:批准为 Clean Room 添加模板的请求。要获得 <request_id> 实参,请执行 provider.list_template_requests 命令来检索请求的 UUID。

实参: cleanroom_name(字符串)、request_id(数组)

返回: success message(字符串)

示例

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

provider.reject_template_request

描述:拒绝为 Clean Room 添加模板的请求。要获得 <request_id> 实参,请执行 provider.list_template_requests 命令来检索请求的 UUID。

实参: cleanroom_name(字符串)、request_id(字符串)、reason_for_rejection(字符串)

返回: success message(字符串)

示例

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

配置分析运行者

使用以下命令配置谁可以在 Clean Room 中运行分析。您可以指定提供商(Clean Room 创建者)和/或使用者(Clean Room 安装者)。

provider.enable_provider_run_analysis

描述:使提供商(Clean Room 创建者)能够在 Clean Room 中运行分析(默认已禁用)。

备注

非常重要:需要在 provider.add_consumer 之后、使用者安装 Clean Room 之前调用此命令。如果用户在安装 Clean Room 后更改了此配置,则需要重新安装 Clean Room 以反映新的配置。

实参: cleanroom_name(字符串)、consumer_account_locator(字符串)

返回: success message(字符串)

示例

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

provider.disable_provider_run_analysis

描述:禁止提供商(Clean Room 创建者)在 Clean Room 中运行分析(默认已禁用)。

备注

非常重要:需要在 provider.add_consumer 之后、使用者安装 Clean Room 之前调用此命令。如果用户在安装 Clean Room 后更改了此配置,则需要重新安装 Clean Room 以反映新的配置。

实参: cleanroom_name(字符串)、consumer_account_locator(字符串)

返回: success message(字符串)

示例

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

provider.enable_consumer_run_analysis

描述:使使用者(Clean Room 安装者)能够在 Clean Room 中运行分析(默认已启用)。

备注

非常重要:需要在 provider.add_consumer 之后、使用者安装 Clean Room 之前调用此命令。如果用户在安装 Clean Room 后更改了此配置,则需要重新安装 Clean Room 以反映新的配置。

实参: cleanroom_name(字符串)、consumer_account_locator(字符串)

返回: success message(字符串)

示例

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

provider.disable_consumer_run_analysis

描述:禁止使用者(Clean Room 安装者)在 Clean Room 中运行分析(默认已启用)。

备注

非常重要:需要在 provider.add_consumer 之后、使用者安装 Clean Room 之前调用此命令。如果用户在安装 Clean Room 后更改了此配置,则需要重新安装 Clean Room 以反映新的配置。

实参: cleanroom_name(字符串)、consumer_account_locator(字符串)

返回: success message(字符串)

示例

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

library.is_provider_run_enabled

描述:检查此 Clean Room 是否已启用 Provider Run Analysis。注意:仍需通过调用 consumer.enable_templates_for_provider_run 获得明确批准(见下文)。

实参: cleanroom_name(字符串)

输出: enabled message(字符串)

示例

call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
Copy

library.is_consumer_run_enabled

描述:检查此 Clean Room 是否已启用 Consumer Run Analysis。此标志决定了 Clean Room 使用者(安装者)是否可以运行分析,或者作为数据贡献者参与协作。

实参: cleanroom_name(字符串)

输出: enabled message(字符串)

示例

call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
Copy

激活

有关激活结果的更多信息,请参阅 使用开发者 APIs 将结果发送到 Snowflake 账户进行激活

provider.set_activation_policy

描述:定义哪些列可以在激活模板中使用。确保只有提供商批准的列可以与激活模板一起使用。

输入cleanroom_name(字符串)、columns(数组)

columns 实参以 <template_name>:<fully_qualified_table_name>:<column_name> 格式传递。

输出: 成功消息

示例

call samooha_by_snowflake_local_db.provider.set_activation_policy('my_cleanroom', [ 
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:HASHED_EMAIL',  
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:REGION_CODE' ]);
Copy

模板链

使用以下命令创建和管理模板链。有关使用模板链的一般信息,请参阅 使用开发者 APIs 按顺序执行模板

provider.add_template_chain

描述:创建新的模板链。模板在添加到模板链之前必须存在。

实参: cleanroom_name(字符串)、template_chain_name(字符串)、templates(对象数组)

表示模板的 JSON 对象可以包含以下字段:

  • template_name(字符串)– 指定要添加到模板链的模板。模板必须已存在。

  • cache_results(布尔)– 确定模板的结果是否临时保存,以便模板链中的其他模板可以访问这些结果。要缓存结果,请指定 TRUE。

  • output_table_name(字符串)– 如果 cache_results = TRUE,则指定存储模板结果的 Snowflake 表的名称。

  • jinja_output_table_param(字符串)– 如果 cache_results = TRUE,则指定其他模板必须包括的 Jinja 参数的名称,以接受 output_table_name 中存储的结果。

  • cache_expiration_hours(整型)– 如果 cache_results = TRUE,则指定删除缓存中结果之前的小时数。当缓存过期时,那么下次执行模板链时,缓存会使用模板的结果刷新。

返回: success message(字符串)

示例

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

描述:查看 clean room 中当前激活的模板链。

实参: cleanroom_name(字符串)

返回: 添加的模板链(表)

示例

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

provider.view_template_chain_definition

描述:返回模板链的属性。

实参: cleanroom_name(字符串)、template_chain_name(字符串)

返回: 模板链定义(字符串)

示例

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

provider.clear_template_chain

描述:从 Clean Room 中移除指定模板链(用其名称表示)。

实参: cleanroom_name(字符串)、template_chain_name(字符串)

返回: success message(字符串)

示例

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

provider.clear_all_template_chains

描述:移除已添加到 Clean Room 的所有模板链。

实参: cleanroom_name(字符串)

返回: success message(字符串)

示例

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

作为 Clean Room 创建者运行分析

provider.submit_analysis_request

描述:提交分析请求,作为 Clean Room 提供商运行分析。此分析请求会传入 Clean Room,并根据使用者的安全策略进行检查。安全检查和差分隐私层允许进行分析后,分析会在 Clean Room 内执行,结果也会安全地存储在 Clean Room 内。

在允许提供商运行分析时,会在 Clean Room 中添加只有提供商才知道的加密密钥。该密钥用于对分析结果进行加密,然后再传输回提供商租户,并在那里使用安全密钥进行解密。这样会确保只有提供商可以看到提供商已请求的分析的结果。

实参: cleanroom_name(字符串)、consumer_account_locator(字符串)、template_name(字符串)、provider_tables(数组)、consumer_tables(数组)、analysis_arguments(对象)

返回: 请求 ID(字符串)

示例

call samooha_by_snowflake_local_db.provider.submit_analysis_request(
    $cleanroom_name, 
    '<CONSUMER_ACCOUNT>',
    'prod_overlap_analysis', 
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
    object_construct(       
      'dimensions', ['c.REGION_CODE'],        
      'measure_type', ['AVG'],           
      'measure_column', ['c.DAYS_ACTIVE']                                         
    ));

-- 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(字符串)、request_id(字符串)、consumer_account_locator(字符串)

返回: 状态(字符串)

示例

-- 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(字符串)、request_id(字符串)、consumer_account_locator(字符串)

返回: 分析结果(表)

示例

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

与使用者共享

使用以下命令,与使用者共享 Clean Room。

provider.add_consumers

描述:将使用者账户添加到 Clean Room。通过包含逗号分隔值的字符串参数添加单个或多个使用者账户定位器和账户名称。您还可以通过多次调用 provider.add_consumers 来添加账户。

可选择传入布尔标志,以指示是否应为此 Clean Room 启用差分隐私。默认情况下,所有 Clean Room 都未启用差分隐私。

实参: cleanroom_name(字符串)、consumer_account_locators(字符串)、consumer_account_names(字符串)、enable_differential_privacy(布尔,可选,默认值:FALSE)

返回: success message(字符串)

示例 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。 第二个账户是 locator=LEB88915,accountname=PM.CLEANROOMAWSUSWEST21。

provider.create_cleanroom_listing – 已弃用

注意

此命令现已弃用。 请使用 provider.create_or_update_cleanroom_listing

描述:配置 Clean Room 后,在 Snowflake Marketplace 上创建该 Clean Room 的专用列表,并与指定的协作者共享。

您可以使用账户 URL 的 orgname.account_name 格式来识别协作者。使用者可以按照 查找账户的组织和账户名称 (https://user-guide/admin-account-identifier#finding-the-organization-and-account-name-for-an-account) 中的说明查找此字符串。

备注

要使用此程序,您需要设置版本指令。请参阅 provider.set_default_release_directive,了解更多详细信息。

实参: cleanroom_name(字符串)、consumer_account_name(字符串)

返回: success message(字符串)

示例

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

provider.create_or_update_cleanroom_listing

描述:在 Snowflake Marketplace 上为 Clean Room 创建私密列表,并与指定的协作者共享。当新建 Clean Room 时,或者当更新现有 Clean Room 的策略、数据集、UI 或其他面向用户的更改时,都可以调用此命令。

备注

为了使用此过程,您必须先设置发布指令。请参阅 provider.set_default_release_directive,了解更多详细信息。

实参: cleanroom_name(字符串)

返回: success message(字符串)

示例

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

provider.enable_laf_for_cleanroom

描述:启用 Cross-Cloud Auto-Fulfillment,允许您在协作者的 Snowflake 账户与您自己的账户位于不同区域时与协作者共享 Clean Room。Cross-Cloud Auto-Fulfillment 也称为 Listing Auto-Fulfillment (LAF)。

备注

在执行此命令 之前,必须由具有 ACCOUNTADMIN 角色的 Snowflake 管理员在您的 Snowflake 账户中启用 Cross-Cloud Auto-Fulfillment。有关在 Snowflake 账户中启用 Cross-Cloud Auto-Fulfillment 的说明,请参阅 与不同区域的账户协作 (https://user-guide/user-guide/cleanrooms/getting-started#collaborate-with-accounts-in-different-regions)。

与其他区域的使用者协作会产生额外费用。有关这些费用的更多信息,请参阅 Cross-Cloud Auto-Fulfillment 费用

在为 Clean Room 启用 Cross-Cloud Auto-Fulfillment 后,您可以使用 provider.create_or_update_cleanroom_listing 命令照常将使用者添加到列表中。列表会根据需要自动复制到远程云和区域。

实参: cleanroom_name(字符串)

返回: success message(字符串)

示例

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

provider.view_cleanrooom_scan_status

描述:查看 DISTRIBUTION 设置为 EXTERNAL 的 Clean Room 的扫描状态。扫描需要标记为“APPROVED”,然后才能设置默认版本指令并与协作者共享 Clean Room。

实参: cleanroom_name(字符串)

返回: 扫描状态(字符串)

示例

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

用于将 Python 代码加载到 Clean Room 的函数

provider.load_python_into_cleanroom

描述机密地 将任意 Python 函数加载到 Clean Room。使用此 API 加载到 Clean Room 的任何代码都不对使用者可见。结果函数可在作为 Clean Room 的任何 SQL Jinja 模板内调用。

备注

此过程将 Python 代码作为现有版本的补丁添加到 Clean Room。这将重新触发安全扫描,并且在与协作者共享新版本之前,您可能需要等待扫描处于 APPROVED 状态。如果是这样,那么在使用新版本/补丁与提供商共享 Clean Room 之前,请调用 provider.set_default_release_directive。请参阅 Snowflake 原生应用程序文档,了解更多详细信息。

参数: cleanroom_name(字符串)、function_name(字符串)、arguments(数组)、packages(数组)、ret_type(字符串)、handler(字符串)、code(字符串)

返回: success message(字符串)

示例

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

Clean Room UI 命令

使用以下命令,在 Custom Analysis 选项卡下面,将通过自定义分析加载的 Clean Room 注册到 Snowflake Data Clean Room 的 Web 应用程序

provider.add_ui_form_customizations

描述: 在 Web 应用程序中为使用者定义 Clean Room 的 UI。至少,您必须在模板描述参数中为 display_namedescriptionmethodology 指定值。

实参:

  • template name(字符串):该 UI 适用的模板的名称。这不是使用 template_description.display_name 字段指定的用户可见的标题。

  • template description(字典):UI 中向用户显示的信息。包含以下字段:

    • display_name必填):显示 Web 应用程序中模板的名称。

    • description必填):模板的描述。

    • methodology必填):说明使用者应如何使用表单执行分析。

    • warehouse_hints(可选):向用户建议使用哪种类型的仓库来运行分析。这是一个具有以下字段的对象:

      • warehouse_size:请参阅 CREATE WAREHOUSE 中的 warehouse_size,了解有效值。

      • snowpark_optimized(布尔):是否使用 Snowpark 优化的仓库 来处理查询。对于大多数机器学习用例,Snowflake 建议 TRUE。

    • render_table_dropdowns:是否显示默认下拉菜单,让用户选择在查询中使用哪个提供商和/或使用者表。这是一个具有以下字段的对象:

      • render_consumer_table_dropdown:(默认 = TRUE)如果为 TRUE,则显示默认使用者表选择器。如果为 FALSE,则隐藏使用者表选择器。 模板可以使用 my_table 变量以列表形式访问所选值。

      • render_provider_table_dropdown:(默认 = TRUE)如果为 TRUE,则显示默认提供商表选择器。如果为 FALSE,则隐藏提供商表选择器。模板可以使用 source_table 变量以列表形式访问所选值。

  • customizations(字典):定义用户可以配置的输入字段。这是一个键/对象对的字典,每对表示一个用户可配置的 UI 元素。键是任意字符串名称,模板可以使用键来访问用户指定的值。 对象定义 UI 元素。该对象具有以下字段:

    • display_name必填):显示 UI 元素的名称

    • description必填):名称下显示的描述

    • methodology必填):说明使用者应如何使用表单执行分析。

    • type:UI 元素的类型。如果为该元素指定了 references,则省略该值(类型由您确定)。支持的值:

      • any(默认):常规文本输入字段

      • boolean:真/假选择器

      • integer:使用箭头更改数字

      • multiselect:从下拉菜单中选择多个项目

      • dropdown:从下拉列表中选择一个项目

      • date:日期选择器

    • default:该元素的默认值。

    • choices:dropdown 和 multiselect 类型的可用选项列表

    • infoMessage:将鼠标悬停在名称旁边的“i”图标上时显示的信息性悬停文本

    • size:元素大小。支持的值:XSSMLXL

    • required:指明元素是否必填。指定 TRUE 或 FALSE。

    • group:组名,用于对 UI 中的项目进行分组。对 UI 中应分组在一起的项目使用相同的组名。如果隐藏默认下拉列表,则可以使用自定义模板中的 {{ 源表 }}{{ my_table}} 特殊参数,然后定义自己的下拉列表,其中包含所需的表。有关在定义自定义模板时使用这些特殊变量的更多详细信息,请参阅 provider.add_custom_sql_template (https://user-guide/user-guide/cleanrooms/provider#provider-add-custom-sql-template)。

    • references:创建一个下拉列表,其中包含 Clean Room 中可用的表或列,而无需提前了解这些表或列或单独列出这些表或列。如果使用,请不要指定 type 值。支持以下字符串值:

      • PROVIDER_TABLES:创建一个下拉列表,列出用户可访问的 Clean Room 中的所有提供商表。

      • PROVIDER_JOIN_POLICY:从 provider_parent_table_field 指定的提供商表中创建可以联接的所有列的下拉列表。

      • PROVIDER_COLUMN_POLICY:使用 provider_parent_table_field 指定的提供商表中的列策略创建所有列的下拉列表。

      • CONSUMER_TABLES:创建一个下拉列表,列出用户可访问的 Clean Room 中的所有使用者表。

      • CONSUMER_COLUMNS:创建一个下拉列表,列出 consumer_parent_table_field 指定的使用者表中用户可以访问的所有列。您不应该在提供商运行的模板中使用使用者列引用,因为使用者可能会应用联接和列策略,这可能会导致在未遵守列的策略时查询失败。

      • CONSUMER_JOIN_POLICY:从 consumer_parent_table_field 指定的使用者表中创建可以联接的所有列的下拉列表。

      • CONSUMER_COLUMN_POLICY:使用 consumer_parent_table_field 指定的使用者表中的列策略创建所有列的下拉列表。

    • provider_parent_table_field:指定用户选择提供商表的 UI 元素 的名称(此处不提供表名本身)。仅当 references 设置为 PROVIDER_COLUMN_POLICYPROVIDER_JOIN_POLICY 时才使用。

    • consumer_parent_table_field:指定用户选择使用者表的 UI 元素 的名称(此处不提供表名本身)。仅当 references 设置为 CONSUMER_COLUMNSCONSUMER_JOIN_POLICYCONSUMER_COLUMN_POLICY 时才使用。

  • output_config(字典) 定义可选的输出规范。允许的字段:

    • measure_columns:用于指定图形输出的度量列。输出中显示的定量数据点。这些列包括允许进行详细数据分析的指标和维度。

    • default_output_type:显示结果的默认格式。如果数据格式正确,则用户通常可以更改 UI 中的显示格式。支持的类型:

      • TABLE:(默认)以表格形式显示数据。

      • BAR:以条形图形式显示数据,适合比较不同类别的数据。

      • LINE:以折线图形式显示数据,适合显示随时间变化的趋势或连续数据。

      • PIE:以饼状图显示数据,适合显示比例或百分比。

返回: success message(字符串)

示例:

-- Specify the display name, description, and warehouse, and hide the default table dropdowns. 
-- Define the following two fields in the UI:
--   A provider table selector that shows all provider tables. Chosen tables can be accessed by the template with the variable 'a_provider_table'
--     (This dropdown is equivalent to setting render_table_dropdowns.render_provider_table_dropdown:true)
--   A column selector for the tables chosen in 'a_provider_table'. Chosen columns can be accessed by the template with the variable 'a_provider_col'

call samooha_by_snowflake_local_db.provider.add_ui_form_customizations(
    $cleanroom_name,
    'prod_custom_template',
    {
        'display_name': 'Custom Analysis Template',
        'description': 'Use custom template to run a customized analysis.',
        'methodology': 'This custom template dynamically renders a form for you to fill out, which are then used to generate a customized analysis fitting your request.',
        'warehouse_hints': {
            'warehouse_size': 'xsmall',
            'snowpark_optimized': FALSE
        },
        'render_table_dropdowns': {
            'render_consumer_table_dropdown': false,
            'render_provider_table_dropdown': false
        },
        'activation_template_name': 'activation_my_template',
        'enabled_activations': ['consumer', 'provider']  
    },    
    {
        'a_provider_table': {
            'display_name': 'Provider table',
            'order': 3,
            'description': 'Provider table selection',
            'size': 'S',
            'group': 'Seed Audience Selection',
            'references': ['PROVIDER_TABLES'],
            'type': 'dropdown'
        },
        'a_provider_col': {
            'display_name': 'Provider column',
            'order': 4,
            'description': 'Which col do you want to count on',
            'size': 'S',
            'group': 'Seed Audience Selection',
            'references': ['PROVIDER_COLUMN_POLICY'],
            'provider_parent_table_field': 'a_provider_table',
            'type': 'dropdown'
        }
    },
    {
        'measure_columns': ['col1', 'col2'],
        'default_output_type': 'PIE'
    }
);
Copy

provider.set_cleanroom_ui_accessibility

描述:向所有使用提供商账户登录的用户显示或隐藏 Web 应用程序中的 Clean Room。

实参:

  • cleanroom_name(字符串) – Clean Room 的名称。

  • visibility_status(字符串) – 以下区分大小写的值之一:

    • HIDDEN – 对当前提供商账户中的所有用户隐藏 Web 应用程序中的 Clean Room。Clean Room 仍可通过 API 调用访问。

    • EDITABLE – 让 clean room 在 Web 应用程序中可见。

返回: success message(字符串)

示例

call samooha_by_snowflake_local_db.provider.set_cleanroom_ui_accessibility($cleanroom_name, 'HIDDEN');
Copy

provider.register_cleanroom_in_ui -- DEPRECATED

注意

此命令现已弃用。 您不再需要手动注册 Clean Room 模板以在 Web 应用程序中使用。

描述:注册 Clean Room,供使用者在 Web 应用程序中使用。Clean Room 由提供商使用开发者 APIs 创建和配置。然后,该命令会将其注册到 Web 应用程序中,供使用者安装、添加表并运行您添加的任何自定义分析,而无需使用开发者 APIs。他们完全通过 Web 应用程序的用户界面使用 Clean Room。

您可以多次调用该 API,将多个自定义模板添加到 Web 应用程序中。

实参: cleanroom_name(字符串)、template name(字符串)、consumer_account_locator(字符串)、user_email(字符串)

返回: success message(字符串)

示例:

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 -- DEPRECATED

注意

此命令现已弃用。 您不再需要手动注册 Clean Room 模板以在 Web 应用程序中使用。

描述:查看从账户提出的请求的列表,将 Clean Room 注册到 Web 应用程序。每个请求都有关联的 ID,可与 view_ui_registration_log 程序结合使用,以查看请求的状态。请求共享到后端,在此处处理请求,并将 Clean Room 添加到 Clean Room。

实参:

返回: success message(字符串)

示例:

call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
Copy

Clean Room 元数据 getter 命令

使用以下命令可显示 Clean Room 的相关属性。

provider.describe_cleanroom

描述:创建文本摘要,其中包含已添加到 Clean Room 的所有信息,包括模板、数据集和策略等。

实参: cleanroom_name(字符串)

返回: clean room 的详细描述字符串(表)

示例

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

provider.view_provider_datasets

描述:查看已添加到 Clean Room 的所有数据集。

实参: cleanroom_name(字符串)

返回: clean room 中的所有提供商数据集名称(表)

示例

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

provider.view_join_policy

描述:查看当前在 Clean Room 中激活的联接策略。

实参: cleanroom_name(字符串)

返回: 联接策略(表)

示例

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

provider.view_added_templates

描述:查看 Clean Room 中当前激活的模板。

实参: cleanroom_name(字符串)

返回: 添加的模板(表)

示例

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

provider.view_column_policy

描述:查看当前在 Clean Room 中激活的列策略。

实参: cleanroom_name(字符串)

返回: 列策略(表)

示例

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

provider.view_consumers

描述:查看共享 Clean Room 的使用者。

实参: cleanroom_name(字符串)

返回: 有权访问 Clean Room 的使用者账户(表)

示例

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

provider.view_cleanrooms

描述:查看最近创建的所有 Clean Room(按创建日期排序)。

实参:

返回: 按创建日期排序的所有现有 Clean Room(表)

示例

call samooha_by_snowflake_local_db.provider.view_cleanrooms();
Copy

provider.view_request_logs

描述:查看此 Clean Room 的使用者发送的请求日志。

实参: cleanroom_name(字符串)

返回: 针对 Clean Room 运行的查询的一系列日志(表)

示例

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

常规 helper 命令

使用以下命令一般有助于充分利用 Clean Room 功能和支持流程。

provider.grant_reference_usage

描述:允许向包含数据的上游数据库授予 Clean Room 的 reference_usage。

备注

此命令仅用于 Web 应用程序。

这比 register_db 中的授权有限得多。在添加从上游数据库引用数据的视图或 UDTFs 时,有必要使用该程序,但它不允许 SAMOOHA_APP_ROLE 角色查看实际表或在 Web 应用程序的下拉菜单中显示这些数据库。

该命令应在包含链接视图和 UDTFs 所用数据的数据库中调用。

实参: database_names(数组)

返回: success message(字符串)

示例

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

provider.revoke_reference_usage

描述:从 provider.grant_reference_usage 创建的引用数据库列表中移除数据库。

备注

此命令仅用于 Web 应用程序。

实参: database_names(数组)

返回: success message(字符串)

示例

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

provider.mount_request_logs_for_all_consumers

描述:让提供商能够访问 Clean Room 使用者返回给提供商的信息。

实参: cleanroom_name(字符串)

返回: success message(字符串)

示例

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 Room 的 Snowflake Native App。

实参:

返回: success message(字符串)

示例

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 Room 的 Snowflake Native App。

实参:

返回: success message(字符串)

示例

CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
Copy
语言: 中文