Snowflake Data Clean Room:提供商 API 参考指南¶
本指南介绍允许提供商创建、配置和共享 Clean Room 的 开发者 APIs。所有函数都位于以下架构内:
samooha_by_snowflake_local_db.provider
设置环境¶
在利用开发者 APIs 使用 Snowflake Data Clean Room 之前,请执行以下命令来设置 Snowflake 环境。如果您没有 SAMOOHA_APP_ROLE 角色,请联系账户管理员。
use role samooha_app_role;
use warehouse app_wh;
为 Clean Room 创建名称。Clean Room 名称 只能包含字母数字字符。除空格和下划线外,Clean Room 名称不能包含任何特殊字符。
set cleanroom_name = 'Test Cleanroom 1'; -- This must only have alphanumeric characters.
创建 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;
备注
分布 可以是 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');
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>;
输入: cleanroom_name(字符串), version(字符串), patch(字符串)
输出: success message(字符串)
示例:
call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
provider.drop_cleanroom¶
描述:创建者可以删除现有的 Clean Room。此命令会完全删除 Clean Room,这意味着已安装 Clean Room 的使用者无法再访问或使用它。
输入: cleanroom_name(字符串)
输出: success message(字符串)
示例:
call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
添加数据集和创建策略¶
使用以下命令为 Clean Room 添加数据和设置策略。
provider.link_datasets¶
描述:将 Snowflake 表链接到 Clean Room。该过程在 Clean Room 内创建表的安全视图,自动使 Clean Room 可以访问表,从而无需制作表副本。
输入: cleanroom_name(字符串), tables_list(数组)
输出: success message(字符串)
示例:
call samooha_by_snowflake_local_db.provider.link_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE_NAV2.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE_NAV2.DEMO.EXPOSURES']);
备注
在将视图链接到 Clean Room 之前,具有 ACCOUNTADMIN 角色的用户必须在 Snowflake 中执行以下语句:
grant reference_usage on database <DB NAME> to share in application package samooha_cleanroom_<cleanroom_name>;
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']);
模板¶
使用以下命令添加此 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']);
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');
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');
provider.clear_all_templates¶
描述:移除已添加到 Clean Room 的所有模板。一旦调用此命令,就需要再次添加模板。
输入: cleanroom_name(字符串)
输出: success message(字符串)
示例:
call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
provider.set_column_policy¶
描述:设置使用者可以对数据中的哪些列进行操作。只有在添加模板后才可调用此函数。这也是模板的一个函数,因此输入的形式必须是 template_name:full_table_name:column_name
。请注意,列策略是 仅替换,因此如果再次调用该函数,先前设置的列策略将被当前策略完全替换。
不应在电子邮件地址等标识列上调用列策略 API。它只能用于聚合列和分组依据列。
请注意,进行检查的方式是解析为查找任何未经授权的列而要对数据运行的 SQL 查询。使用这些检查可能无法找出含有通配符的查询,因此,设计分析模板时仍应慎重。
默认情况下,会对 SQL Jinja 实参(名为 dimensions 或 measure_columns)进行检查。确保使用这些标签来启用此检查。
另外,您还可以使用 SQL Jinja 模板中的 join_policy 和 column_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']);
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 模版中,所有列名必须称为 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(字符串), 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 %};
$$);
配置分析运行者¶
使用以下命令配置谁可以在 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>']);
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>']);
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>']);
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>']);
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)
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)
作为 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';
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>'
);
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>'
);
用于将 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)
$$
);
Clean Room UI 注册方法¶
使用以下命令,在 Custom Analysis 选项卡下面,将通过自定义分析加载的 Clean Room 注册到 Snowflake Data Clean Room 的 Web 应用程序。
provider.add_ui_form_customizations¶
**描述:**为您希望在 Web 应用程序中为使用者注册的 Clean Room 的 UI 表单添加自定义。您必须至少为 display_name
、description
和 methodology
指定值。
允许的自定义如下:
type
:以下 UI 元素之一:boolean
:真/假选择器integer
:使用箭头更改数字multiselect
:从下拉菜单中选择多个项目dropdown
:从下拉菜单中选择 1 个项目any
:常规文本输入字段
choices
:dropdown 和 multiselect 类型的可用选项列表default
:任何默认值display_name
(必填):显示 UI 元素的名称description
(必填):名称下显示的描述methodology
(必填):说明使用者应如何使用表单执行分析。infoMessage
:将鼠标悬停在名称旁边的“i”图标上时显示的信息消息size
:选择元素大小,介于XS
、S
、M
、L
、XL
之间required
:指明元素是否必填。指定TRUE
或FALSE
。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'
}
)
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>)
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();
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);
provider.view_provider_datasets¶
描述:查看已添加到 Clean Room 的所有数据集。
输入: cleanroom_name(字符串)
输出: Clean Room 中的所有提供商数据集名称(表)
示例:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.view_join_policy¶
描述:查看当前在 Clean Room 中激活的联接策略。
输入: cleanroom_name(字符串)
输出: 联接策略(表)
示例:
call samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
provider.view_added_templates¶
描述:查看 Clean Room 中当前激活的模板。
输入: cleanroom_name(字符串)
输出: 添加的模板(表)
示例:
call samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
provider.view_column_policy¶
描述:查看当前在 Clean Room 中激活的列策略。
输入: cleanroom_name(字符串)
输出: 列策略(表)
示例:
call samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
provider.view_consumers¶
描述:查看共享 Clean Room 的使用者。
输入: cleanroom_name(字符串)
输出: 有权访问 Clean Room 的使用者账户(表)
示例:
call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
provider.view_cleanrooms¶
描述:查看最近创建的所有 Clean Room(按创建日期排序)。
输入:
输出: 按创建日期排序的所有现有 Clean Room(表)
示例:
call samooha_by_snowflake_local_db.provider.view_cleanrooms();
provider.view_request_logs¶
描述:查看此 Clean Room 的使用者发送的请求日志。
输入: cleanroom_name(字符串)
输出: 针对 Clean Room 运行的查询的一系列日志(表)
示例:
call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
常规 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');
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');
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>']);
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>']);
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']);