Provider-run analysis¶
默认的 Clean Room 配置仅允许用户在 Clean Room 中进行分析。不过,提供商可以请求使用者允许在特定 Clean Room 中利用使用者数据运行模板。可使用 Clean Room UI 或代码启用和运行由提供商运行的分析。
支持的模板¶
由提供商运行的分析可在给定 Clean Room 的模板级别上启用。以下模板支持由提供商运行的分析:
重叠与分段分析
SQL 查询(仅限 UI)
自定义模板(仅限 API)
账单详情¶
使用者在 Clean Room 中进行任何由提供商运行的分析均需计费。为避免因提供商的分析而产生额外费用,使用者必须卸载 Clean Room。
使用者可以通过执行以下查询来估算提供商在过去 N 天内使用的 Credit,并将之前的天数指定为负数:
-- Estimate the number of credits consumed in the past 5 days.
SELECT * FROM TABLE(SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.PRA_CONSUMPTION_UDTF(-5));
实现由提供商运行的分析¶
在 Clean Room UI 中对在 Clean Room 中运行查询的权限进行管理,方法是在 Clean Room 配置流程中的 Share clean room 面板中使用 Enable run analysis & query 切换开关。要启用或禁用由提供商运行的分析,Clean Room 提供商可在该面板中启用自己账户旁边的切换开关。创建 Clean Room 后不能更改此切换开关;如果要更改特定账户在已发布的 Clean Room 中运行查询的权限,必须删除该 Clean Room 并创建新的 Clean Room。
以下是在新 Clean Room 中启用由提供商运行的分析的步骤:
提供商使用 支持的模板 之一创建并配置 Clean Room。
在 Clean Room 配置的 Share Clean Room 步骤中,切换您账户旁边的 Enable run analysis & query,使您能够在此 Clean Room 中运行支持提供商分析的模板。
当使用者加入 Clean Room 时,他们会在加入前收到警告,告知他们该 Clean Room 已启用由提供商运行的分析。
用户会对 Clean Room 中的所有模板(包括任何支持提供商分析的模板)进行正常配置。如果使用者不想让提供商运行特定模板,可以省略该模板所需的详细信息。请注意,支持提供商分析的模板也支持使用者分析。
使用者加入并配置了 Clean Room 后,提供商 和 使用者 都可以通过正常的分析流程在 Clean Room 中运行模板。
由提供商运行的分析权限授予后不可撤销。要停止由提供商运行的分析,唯一的方法就是提供商或使用者删除 Clean Room。
通过进行相应 API 调用,提供商可在 Clean Room 中启用和禁用由提供商运行的分析和由使用者运行的分析。但是,每当在现有的 Clean Room 中对由提供商运行的分析设置进行更改时,所有使用者必须重新安装 Clean Room 才能使更改生效。由于很难强制所有协作者重新安装 Clean Room,因此提供商在更改分析权限时删除已发布的共享 Clean Room,然后再创建一个具有所需权限的新 Clean Room,这样做更为可靠。
以下是创建新的 Clean Room 的一般流程,该 Clean Room 允许由提供商运行的分析:
提供商
以标准方式创建和配置 Clean Room、数据和策略。
以标准方式添加使用者。
通过调用
provider.enable_provider_run_analysis
,为 Clean Room 中的特定使用者账户启用由提供商运行的分析。必须在向 Clean Room 中添加使用者之后,但在使用者安装 Clean Room 之前,调用此过程。每个使用者账户都必须单独批准这一请求,否则其数据将无法在 Clean Room 中用于由提供商运行的分析。发布 Clean Room。
让使用者知晓 Clean Room 已发布、Clean Room 的名称以及您想在 Clean Room 中运行的模板。
使用者
安装 Clean Room,链接数据,并以标准方式设置联接和列策略。
通过调用
consumer.enable_templates_for_provider_run
,允许对 Clean Room 中的特定模板进行提供商分析。重要的是,要在配置联接和列策略 之后 调用此过程;如果先启用此功能,在设置这些策略之前,提供商将能够对 所有 列进行联接和投影。通常情况下,提供商会让您知道,您需要在 Clean Room 中批准由提供商运行的分析,但您也可以通过调用library.is_provider_run_enabled
来检查是否需要这项功能。告知提供商您已经安装了 Clean Room,并批准了由提供商运行的分析。
提供商
在使用者安装了 Clean Room 后,通过调用
provider.mount_request_logs_for_all_consumers
,使您的分析能够访问使用者数据。如果以后有新的使用者账户安装 Clean Room,而您又想在此模板中使用他们的数据,则必须重新运行此过程才能访问这些数据。使用模板名称、表名和模板实参,通过调用
provider.submit_analysis_request
运行分析。保存响应 ID,这是检查分析状态和结果所必需的。通过调用
provider.check_analysis_status
来查看分析状态。当状态报告为COMPLETED
时,调用provider.get_analysis_result
来获取分析结果。
小技巧
如果为 Clean Room 更改了由提供商运行的分析设置,则必须卸载然后重新安装 Clean Room 才能使更改生效。
安装并运行代码示例
您可以下载并安装完整的 Clean Room 运行示例,该示例可启用并运行由供应商运行的分析。要运行此示例,需要在同一组织和云托管区域内拥有两个 Snowflake 账户,并安装了 Clean Room 环境。
在提供商和使用者账户中安装 Notebook。要上传 Notebook,请执行以下操作:
在 Snowsight 中导航到 Projects » Notebooks。
选择 + Notebook » Import .ipynb file。
选择您下载的 .ipynb 文件。
根据需要命名文件,并选择数据库和架构。
保留默认仓库
APP_WH
。选择 Create。
在提供商账户中打开 Notebook,并完成提供商部分,以创建 Clean Room。
在使用者账户中打开 Notebook,并完成使用者部分,以安装和配置 Clean Room 并运行模板。
小技巧
以下过程管理哪一方可以在 Clean Room 环境中运行分析: