使用动态表共享数据¶
动态表是可共享的对象。要共享动态表,数据共享提供商要将动态表上的权限授予共享,从而供数据共享使用者使用。
如何使用动态表共享数据¶
要与其他 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。
创建动态表以引入共享数据¶
当您使用动态表引入共享数据时,查询不能从共享动态表或引用上游动态表的共享安全视图中选择。
要创建动态表以引入共享数据,请执行以下操作:
确保您具有 正确的权限,并从共享中创建数据库并授予其权限。
CREATE DATABASE my_shared_db FROM SHARE provider_account.share1;
Copy为共享数据库 授予权限。
创建共享动态表。
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
。有关更多信息,请参阅 启用更改跟踪。