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 的 分布,指定这是仅打算在组织内部共享的测试 Clean Room (INTERNAL),还是打算在外部与其他组织共享的生产 Clean Room (EXTERNAL)。

如果未指定分布,则默认为 INTERNAL。

您可以使用以下语句将 INTERNAL Clean Room 改为 EXTERNAL Clean Room:

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

备注

分布 可以是 EXTERNAL 或 INTERNAL。如果 Clean Room 被标记为 EXTERNAL 分布,Snowflake 需要先进行自动安全扫描,然后才能与协作者共享。请参阅 provider.set_default_release_directive,了解更多详细信息。

输入: cleanroom_name(字符串), distribution(字符串)

输出: 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.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_NAV2.DEMO.CUSTOMERS:EMAIL', 'SAMOOHA_SAMPLE_DATABASE_NAV2.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(字符串)

输出: The template definition(字符串)

示例

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_NAV2.DEMO.CUSTOMERS:STATUS',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAV2.DEMO.CUSTOMERS:AGE_BAND',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAV2.DEMO.CUSTOMERS:DAYS_ACTIVE',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAV2.DEMO.EXPOSURES:CAMPAIGN']);
Copy

provider.add_custom_sql_template

描述:将自定义 SQL Jinja 模板添加到 Clean Room。这样的话,使用者就可以调用模板了。

请注意,该过程会覆盖之前的同名模板。如果要编辑现有模板,您通过此函数指定相同的模板名称即可。

在 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 模板中的实参是否符合联接和列策略:

  • 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(字符串), template(字符串), differential_privacy_sensitivity(浮点数)

输出: success 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

配置分析运行者

使用以下命令配置谁可以在 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

作为 Clean Room 创建者运行分析

provider.submit_analysis_request

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

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

输入: cleanroom_name(字符串), consumer_account_locator(字符串), template_name(字符串), consumer_tables(数组), provider_tables(数组), analysis_arguments(对象)

** 输出:** requestID(字符串)

示例

call samooha_by_snowflake_local_db.provider.submit_analysis_request(
    $cleanroom_name, 
    '<CONSUMER_ACCOUNT>',
    'prod_overlap_analysis', 
    ['SAMOOHA_SAMPLE_DATABASE_NAV2.demo.customers'], 
    ['SAMOOHA_SAMPLE_DATABASE_NAV2.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(字符串)

输出: status(字符串)

示例

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

输出: analysis results(表)

示例

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 的单独调用传递到 provider.add_consumers 函数中。

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

输入: cleanroom_name(字符串), consumer_account_locator(字符串), consumer_account_name(字符串), enable_differential_privacy(布尔值,可选,默认:FALSE)

输出: success message(字符串)

示例

call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, <CONSUMER ACCOUNT LOCATOR>, <CONSUMER ACCOUNT NAME>);
Copy

provider.create_cleanroom_listing

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

您可以使用账户 URL 的 orgname.account_name 格式来识别协作者。使用者可以按照 查找账户的组织和账户名称 中的说明查找此字符串。

备注

要使用此程序,您需要设置版本指令。请参阅 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.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 的说明,请参阅 与不同区域的账户协作

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

在为 Clean Room 启用 Cross-Cloud Auto-Fulfillment 后,您可以使用 provider.create_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(字符串)

输出: scan status(字符串)

示例

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 指定值。

允许的自定义如下:

  • type:以下 UI 元素之一:

    • boolean:真/假选择器

    • integer:使用箭头更改数字

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

    • dropdown:从下拉菜单中选择 1 个项目

    • any:常规文本输入字段

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

  • default:任何默认值

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

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

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

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

  • size:选择元素大小,介于 XSSMLXL 之间

  • required:指明元素是否必填。指定 TRUEFALSE

  • group:为多个元素设置相同的值,以便在 UI 表单中将它们划分到一起

  • warehouse_hints:可选的自定义,用于控制使用者账户使用哪种 仓库 来运行分析。例如,对于大多数机器学习用例,Snowflake 建议指定一个 Snowpark 优化型仓库。有关 warehouse_size 的有效值,请参阅 CREATE WAREHOUSE

输入: template name(字符串), template_description(字典), customizations(字典), output_config(字典)

输出: success message(字符串)

示例:

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
        }
    },    
    {
        'dimensions': {
            'display_name': 'Dimensions',
            'choices': ['STATUS', 'AGE', 'REGION_CODE', 'DAYS_ACTIVE'],
            'type': 'multiselect',
            'description': 'What dimensions do you want to train on?',
            'infoMessage': 'We recommend selecting all features for maximal signal.',
            'size': 'M'
        }
    },
    {
        'measure_columns': ['col1', 'col2'],
        'default_output_type': 'PIE'
    }
)
Copy

provider.register_cleanroom_in_ui

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

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

描述:查看从账户提出的请求的列表,将 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.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.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

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

library.register_table

描述:与 register_db 类似,但在表级运行。可以传入表示完全限定表名的数组或字符串,并通过运行 grant select 语句向 SAMOOHA_APP_ROLE 授予权限,使用户能够将表链接到 Clean Room 中。

输入: table_name(数组)

输出: success message(字符串)

示例

call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE_NAV2.DEMO.CUSTOMERS']);
Copy
语言: 中文