在 Snowflake Data Clean Rooms 中管理 Cross-Cloud Auto-Fulfillment

关于 Cross-Cloud Auto-Fulfillment

在默认的 Clean Room 环境中,Clean Room 只能与同一云区域中的账户共享。也就是说,提供商和使用者必须位于同一云区域中。

如果协作者的账户与您的账户分别位于不同的区域,且您想要与其协作,则必须为 Clean Room 环境和 Clean Room 启用 Cross-Cloud Auto-Fulfillment,如本页所示。

您可以通过运行 SELECT CURRENT_REGION(); 确定您自己的云区域

备注

Cross-Cloud Auto-Fulfillment 有时被称为 LAF,代表 列表自动履行

启用 Cross-Cloud Auto-Fulfillment

您可以使用 API 或 UI 启用 Cross-Cloud Auto-Fulfillment。但请注意 跨区域协作的局限性

先决条件

要为账户启用 Cross-Cloud Auto-Fulfillment,所有协作者的组织管理员必须先通过调用 SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT 在账户上启用该功能。

了解有关 自动履行管理自动履行权限 的更多信息。

在 UI 中启用 Cross-Cloud Auto-Fulfillment

Clean Room 管理员按照以下步骤在账户级别为所有新的和现有的 Clean Room 启用 Cross-Cloud Auto-Fulfillment:

  1. 使用您的管理员账户登录 Clean Room UI

  2. 浏览到 Admin > Snowflake Admin

  3. 开启 Cross-Cloud Auto-Fulfillment

  4. :emph:`在 UI 中创建或联接 Clean Room ` 时,提供商或使用者无需采取其他步骤。但是,如果您以后 :emph:`在 API 中创建或联接 Clean Room `,则必须遵循面向提供商和使用者的 API 说明。

在 API 中启用 Cross-Cloud Auto-Fulfillment

即使您已经在 UI 中启用了 Cross-Cloud Auto-Fulfillment,也可以按照这些说明在 API 中创建或安装 Clean Room。

账户管理员操作

要使用 API 为账户启用 Cross-Cloud Auto-Fulfillment,提供商和使用者账户中的管理员都必须使用 ACCOUNTADMIN 角色运行以下 SQL 代码。对于每个账户,仅需运行一次。

USE ROLE ACCOUNTADMIN;
-- Optionally check first to see if LAF is enabled on the account.
CALL samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();

-- If LAF is not enabled, enable it.
CALL samooha_by_snowflake_local_db.library.enable_laf_on_account();

提供商和使用者操作

为账户启用 Cross-Cloud Auto-Fulfillment 后,以下是在创建或安装 Clean Room 时启用 Cross-Cloud Auto-Fulfillment 的方法:

  1. 提供商 通过调用 provider.create_or_update_cleanroom_listing 以正常方式发布 Clean Room。

  2. 使用者 通过调用 consumer.install_cleanroom 安装 Clean Room。如果使用者与提供商位于不同的云区域,则 consumer.install_cleanroom 会失败并显示一条消息,提示正在安装 Cross-Cloud Auto-Fulfillment 副本。

  3. 使用者 继续调用 consumer.install_cleanroom 直至返回“成功”。安装只需几分钟时间。

    此时,使用者可以使用基本的 Clean Room 功能。要支持客户端自定义模板请求、提供商运行分析和提供商激活,请执行以下附加步骤:

  4. 提供商 持续调用 provider.mount_request_logs_for_all_consumers,直到过程报告成功。这意味着使用者与提供商之间的通信已启用。

完整设置代码示例:

  1. 提供商: 提供商以标准方式创建、共享和发布 Clean Room。

    USE WAREHOUSE APP_WH;
    USE ROLE SAMOOHA_APP_ROLE;
    
    SET cleanroom_name = 'LAF example';
    SET consumer_locator = '<CONSUMER_LOCATOR>';
    SET consumer_account_name = '<CONSUMER_DATA_SHARING_ACCOUNT_ID>';
    
    CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.cleanroom_init($cleanroom_name);
    
    CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.set_default_release_directive(
      $cleanroom_name,
      'V1_0', '0');
    
    CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.add_consumers(
      $cleanroom_name,
      $consumer_locator,
      $consumer_account_name);
    
    CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.create_or_update_cleanroom_listing($cleanroom_name);
    
  2. 使用者: 使用者安装 Clean Room。

    USE WAREHOUSE APP_WH;
    USE ROLE SAMOOHA_APP_ROLE;
    
    SET cleanroom_name = 'LAF example';
    SET provider_locator = '<PROVIDER_LOCATOR>';
    
    -- Initial call starts the process and returns a cross-cloud/region replication failure.
    -- Continue to call this procedure until it returns a success message.
    CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.install_cleanroom(
      $cleanroom_name,
      $provider_locator);
    
    -- Continue with standard clean room configuration and use.
    -- The consumer can run analyses, but client custom templates, provider run, and provider analysis
    -- aren't supported until the provider takes the action shown in the next step.
    ...
    
  3. 提供商: 使用者安装 Clean Room 后,提供商必须挂载请求共享,以在提供商与使用者之间启用基于请求的操作。基于请求的操作包括运行分析的提供商请求,以及向 Clean Room 添加模板的使用者请求。

    -- Call mount_request_logs_for_all_consumers until it reports success.
    provider.mount_request_logs_for_all_consumers($cleanroom_name);
    

    此时可以使用完整的提供商/使用者功能。

跨区域账户的刷新频率

当提供者和使用者位于不同的云区域时,请求和数据会受制于复制频率设置。

从提供商到使用者的请求和数据

这包括提供商向使用者发出的所有数据和请求,例如创建或更新 Clean Room、更改提供商数据、权限请求(例如提供商运行分析)以及请求审批(例如使用者模板)。

您可以通过调用 set_laf_dcr_refresh_schedule 将提供商的刷新率更改为使用者。

数据

默认刷新率

提供商 Clean Room 数据,例如以下内容:

  • 提供商数据集

  • 提供商运行的请求

  • Clean Room 策略

  • 提供商 Clean Room 元数据

  • 2025 年 7 月 24 日之后创建的 Clean Room:30 分钟

  • 较旧的 Clean Room:默认为您的 :ref:`账户的复制刷新计划 <label-listing_auto_fulfillment_replication_refresh_schedule>`(如果未设置,则为 24 小时)。

从使用者到提供商的请求和数据

下表显示了使用者向提供商发送的数据和请求的默认刷新率:

您可以为每个 Clean Room 控制使用者到提供商的刷新率

数据

默认刷新率

请求、审批和变更,例如:

  • 对提供商的请求(例如添加模板的请求)

  • 对提供商的批准(例如批准提供商运行的分析)

  • 对关联使用者数据的更改。

  • 提供商运行的请求的状态和结果。

  • 2025 年 7 月 24 日之后创建的 Clean Room:10 分钟

  • 较旧的 Clean Room:1 小时

提供商激活数据:

  • 2025 年 7 月 24 日之后创建的 Clean Room:10 分钟

  • 较旧的 Clean Room:15 分钟

与跨区域协作相关的成本

如果协作者在不同的区域,则需要支付额外费用。有关这些成本如何产生的更多信息,请参阅 自动履行成本

对跨区域协作的限制

跨区域协作存在以下限制:

  • 在使用 Clean Room UI 时,您可以与 同一 UI 网关区域 中的其他 UI 用户启用跨区域协作。例如,位于 AWS US 东部(俄亥俄州)的账户可以与 AWS US 西部(俄勒冈州)地区的账户共享,因为他们有相同的 UI 网关区域,即 AwS US 东部(弗吉尼亚北部)。位于 AWS US 东部(俄亥俄州)的账户无法与位于 AWS 加拿大的账户协作,因为它们不共享网关区域。但是,在使用 API 时,任何账户都可以配置为跨区域协作。

  • 提供商不能在 Clean Room 中使用差分隐私。

  • 协作者无法在 Clean Room 中关联外部表和 Iceberg 表。

  • 使用者无法运行多提供商分析。

  • 在跨云协作场景中,一个账户不能同时充当提供商和使用者,因为可能会发生复制类型冲突。

  • 请参阅 启用跨区域协作时的其他注意事项