使用动态表共享数据

动态表是可共享的对象。要共享动态表,数据共享提供商要将动态表上的权限授予共享,从而供数据共享使用者使用。

如何使用动态表共享数据

要与其他 Snowflake 账户共享动态表,您可以将动态表添加到共享或应用程序包。

  • 要与您所在区域的账户共享动态表,您可以使用 Direct Share。有关更多信息,请参阅 Snowflake 中的数据共享与协作

  • 要与其他区域的账户共享动态表,请将共享或应用程序包作为数据产品添加到列表中,并设置 Cross-Cloud Auto-Fulfillment。有关更多信息,请参阅 创建和发布列表

数据共享提供商可选择在单个动态表上授予 SELECT 权限,也可选择在数据库中所有动态表上授予 SELECT 权限,如以下示例所示。

GRANT SELECT ON ALL DYNAMIC TABLES IN SCHEMA mydb.public TO SHARE share1;

GRANT SELECT ON DYNAMIC TABLE mydb.public TO SHARE share1;
Copy

有关更多详细信息,请参阅 GRANT <privilege> ... SHARE

创建动态表以引入共享数据

当您使用动态表引入共享数据时,查询不能从共享动态表或引用上游动态表的共享安全视图中选择。

要创建动态表以引入共享数据,请执行以下操作:

  1. 确保您具有 正确的权限,并从共享中创建数据库并授予其权限。

    CREATE DATABASE my_shared_db FROM SHARE provider_account.share1;
    
    Copy
  2. 为共享数据库 授予权限

  3. 创建共享动态表。

CREATE OR REPLACE DYNAMIC TABLE my_dynamic_table
  TARGET_LAG = '1 day'
  WAREHOUSE = mywh
  AS
    SELECT * FROM my_shared_db.public.mydb;
Copy

备注

必须对动态表使用的所有基础对象启用变更跟踪。要使用动态表引入共享数据,数据共享提供商需要在共享对象上启用 change_tracking。有关更多信息,请参阅 启用更改跟踪

语言: 中文