以重新共享者身份转发传入数据

作为重新共享者,您可以从提供商的列表获取数据,并将其共享给其他账户,既可以保持原始状态,也可以结合您自己的数据进行转换后再共享。本主题介绍如何重新共享传入数据。

先决条件

  • 提供商的列表必须将 resharing.enabled 设置为 true

  • 您必须在自己的数据库中创建安全视图。您不能直接修改导入的数据库。

  • 必须由同一角色创建共享并将其授予给列表。

限制

  • 重新共享只能通过列表启用。您无法重新共享 Direct Share 或应用程序。

  • 您无法将已导入的数据库或统一列表定位器 (ULLs) 中的数据对象直接附加到另一个共享中。要重新共享传入列表中的数据对象,您必须在数据库中创建安全视图。

  • 重新共享者只能重新共享允许重新共享的传入数据产品中的表、动态表和视图。

  • 重新共享的列表不支持灾难恢复。

重新共享工作流程

  1. 从提供商的列表中创建导入的数据库。

  2. 在您自己的数据库中创建一个安全视图,引用已导入数据库中的数据。

  3. 创建一个共享,并授予该共享对安全视图的 SELECT 权限。

  4. 使用共享创建新列表。

CREATE DATABASE imported_db FROM LISTING provider_listing;
CREATE DATABASE reshared_db;
CREATE SECURE VIEW reshared_db.public.reshared_view
  AS SELECT * FROM imported_db.public.provider_table;

CREATE SHARE my_reshare;
GRANT USAGE ON DATABASE reshared_db TO SHARE my_reshare;
GRANT USAGE ON SCHEMA reshared_db.public TO SHARE my_reshare;
GRANT SELECT ON VIEW reshared_db.public.reshared_view TO SHARE my_reshare;

备注

对于从重新共享列表创建的已导入数据库,无需授予 REFERENCE_USAGE 权限。

跨区域重新共享

备注

在为重新共享的列表启用自动履行功能之前,确保您理解 自动履行成本。Snowflake 还提供了多个视图来监控自动履行成本和使用情况。有关更多信息,请参阅 监控资源并查看成本

要向其他区域的使用者重新共享数据,必须启用列表自动履行。 auto-fulfillment 属性包括跨区域重新共享时必须指定的 warehouse 字段。在同一区域内重新共享时,可以省略此字段。

跨区域重新共享数据需要数据的本地副本,以便进一步向下游复制。Snowflake 会自动创建动态表来管理此操作。您指定的仓库用于创建和刷新这些动态表。

auto_fulfillment:
  warehouse: my_wh

您可以使用 SYSTEM$SHOW_DYNAMIC_TABLES_CREATED_FOR_RESHARING 系统函数,以查看为重新共享创建的动态表。

允许使用者进一步重新共享

如果您希望您的使用者进一步重新共享您创建的列表,请将您自己列表上的 resharing.enabled 设置为 true,以启用重新共享功能。有关将其配置为提供商的详细信息,请参阅 以提供商身份使用重新共享

故障排除

如果使用者收到错误“The listing has resharing restrictions that prevent access to the underlying data”,请与提供商合作解决问题。在以下情况下,可能会发生此错误:

  • 提供商将 enabled 设置为 false,从而禁用重新共享。

  • 提供商在与重新共享不兼容的基表上添加或更改治理策略或上下文函数。