CREATE SHARE
功能概述
数据分享像共享文档的只读链接——提供方授权后,消费方实时读取原始数据,无需复制,提供方数据更新后消费方立即可见。
CREATE SHARE
CREATE SHARE
语句用于创建一个 SHARE 对象,以便将数据共享给其他 Lakehouse 实例(账号)。创建的 SHARE 对象类型(
kind
kind
属性)为
OUTBOUND
OUTBOUND
,表示向外提供数据。
创建 SHARE 后,需要通过
GRANT TO SHARE
GRANT TO SHARE
将表或视图添加到 SHARE,再通过
ALTER SHARE ADD INSTANCE
ALTER SHARE ADD INSTANCE
指定共享的目标实例。
语法
CREATE SHARE [ IF NOT EXISTS ] share_name [ COMMENT 'comment' ];
参数说明
| 参数 | 是否必填 | 说明 |
|---|
share_name
share_name | 是 | SHARE 的名称,在同一 account 下必须唯一 |
IF NOT EXISTS
IF NOT EXISTS | 否 | 若 SHARE 已存在则跳过,不报错 |
COMMENT 'comment'
COMMENT 'comment' | 否 | 对该 SHARE 的描述性注释 |
share_name 命名规则:
- 支持字母、下划线和数字,不允许特殊字符和空格
- 仅支持字母和下划线开头,字母自动转为小写
- 长度为 1–255 字节
- 在同一 account 下必须唯一
使用示例
示例 1:创建基本 SHARE
CREATE SHARE share_demo;
示例 2:创建带注释的 SHARE
CREATE SHARE IF NOT EXISTS doc_test_share COMMENT '文档测试用 share';
示例 3:创建 SHARE 并添加表
创建 SHARE 后,使用
GRANT TO SHARE
GRANT TO SHARE
将表添加进来:
-- 步骤 1:创建 SHARE
CREATE SHARE IF NOT EXISTS sales_share;
-- 步骤 2:将表添加到 SHARE(同时授予 SELECT 和元数据查看权限)
GRANT SELECT, READ METADATA ON TABLE sales_schema.orders TO SHARE sales_share;
-- 步骤 3:查看 SHARE 中已授权的对象
SHOW GRANTS TO SHARE sales_share;
SHOW GRANTS TO SHARE
SHOW GRANTS TO SHARE
返回示例:
+--------------+------------+-----------+----------+---------------------------------+------------+--------------+--------------+--------------+-------------------------+
| granted_type | privilege | conditions| granted_on | object_name | granted_to | grantee_name | grantor_name | grant_option | granted_time |
+--------------+------------+-----------+----------+---------------------------------+------------+--------------+--------------+--------------+-------------------------+
| PRIVILEGE | READ METADATA | | SCHEMA | quick_start.sales_schema | SHARE | sales_share | qiliang | false | 2026-05-19 22:56:42.377 |
| PRIVILEGE | SELECT TABLE | | TABLE | quick_start.sales_schema.orders | SHARE | sales_share | qiliang | false | 2026-05-19 22:56:42.377 |
| PRIVILEGE | READ METADATA | | TABLE | quick_start.sales_schema.orders | SHARE | sales_share | qiliang | false | 2026-05-19 22:56:42.377 |
+--------------+------------+-----------+----------+---------------------------------+------------+--------------+--------------+--------------+-------------------------+
示例 4:查看所有 OUTBOUND SHARE
SHOW SHARES WHERE KIND = 'OUTBOUND';
返回示例(部分):
+------------+----------+-------------------+--------------------+-------+-------------+---------+
| share_name | provider | provider_instance | provider_workspace | scope | to_instance | kind |
+------------+----------+-------------------+--------------------+-------+-------------+---------+
| sales_share| tyhfosmf | f8866243 | quick_start | PRIVATE| | OUTBOUND|
+------------+----------+-------------------+--------------------+-------+-------------+---------+
注意事项
- 创建 SHARE 后,必须通过
GRANT TO SHARE
GRANT TO SHARE
添加表或视图,SHARE 才包含可共享的数据。
- 必须通过
ALTER SHARE ADD INSTANCE
ALTER SHARE ADD INSTANCE
指定消费方实例,对方才能访问该 SHARE。
- 一个 SHARE 可以包含多个表和视图,也可以共享给多个目标实例。
消费方操作流程
提供方完成授权并通过
ALTER SHARE ADD INSTANCE
ALTER SHARE ADD INSTANCE
将消费方实例加入 SHARE 后,消费方在自己的 Lakehouse 实例中按以下步骤访问共享数据:
步骤 1:查看可用的 INBOUND SHARE
SHOW SHARES WHERE KIND = 'INBOUND';
步骤 2:查看 SHARE 包含的对象
DESC SHARE <share_name>;
步骤 3:在本地 Schema 中挂载 SHARE
CREATE SCHEMA <local_schema_name> FROM SHARE <provider_instance_id>.<share_name>;
provider_instance_id
provider_instance_id
为提供方实例 ID,可在
SHOW SHARES
SHOW SHARES
返回结果的
provider_instance
provider_instance
列中获取。
步骤 4:直接查询共享表
SELECT * FROM <local_schema_name>.<table_name>;
挂载后,共享表与本地表的查询方式完全相同,且始终反映提供方的最新数据。
相关语句
相关指南
- 跨实例数据共享:数据共享的完整流程,含创建 SHARE、授权、目标实例消费数据的端到端示例
相关指南
- 跨实例数据共享:数据共享的完整流程,含创建 SHARE、授权、目标实例消费数据的端到端示例