Delta Sharing (Databricks SQL)

差異共用是一種開放通訊協定,可與其他組織安全共用資料,無論其使用何種運算平臺。 它可以即時共用 Unity 目錄中繼存放區中的資料表集合,而不需要複製它們,以便資料收件者可以立即開始使用最新版本的共用資料。

差異共用有三個元件:

  • 提供者

    提供者是讓資料可供共用的實體。

  • 共用

    共用會定義您要共用之資料表的邏輯群組。

  • 收件者

    收件者會識別您想要共用任意數目共用的組織。

如需如何使用差異共用的詳細指南,請參閱 Azure Databricks 管理的 Delta 共用

提供者

資料提供者是物件,代表共用資料的實際組織。 提供者包含進一步包含共用資料的共用。 一旦提供者將您新增為 收件者 ,您就可以

需要:SQL 倉儲 2022.30 版或更高版本。 此版本可在預覽通道中使用。

範例

-- Change the data provider name locally.
> ALTER PROVIDER `Center for Disease Control` RENAME TO cdc;

-- List the shares the provider has granted you access too.
> SHOW SHARES IN PROVIDER cdc;
 vaccinedata

-- Make the share accessible locally as a catalog.
> CREATE CATALOG cdcdata USING cdc.vaccinedata;

-- Use the data.
> USE CATALOG cdcdata;
> SELECT COUNT(*) FROM information_schema.tables;
  10

共用

共用是使用 CREATE SHARE 命令具現化的容器。 建立之後,您可以使用 ALTER SHARE 命令,反復註冊中繼存放區內定義的現有資料表集合。 您可以在其原始名稱下註冊資料表、依其原始架構限定,或提供替代的公開名稱。

您必須是中繼存放區管理員或帳戶管理員,才能建立、改變和卸載共用。

範例

-- Create share `customer_share` only if share with same name doesn't exist, with a comment.
> CREATE SHARE IF NOT EXISTS customer_share COMMENT 'This is customer share';

-- Add 2 tables to the share.
-- Expose my_schema.tab1 a different name.
-- Expose only two partitions of other_schema.tab2
> ALTER SHARE customer_share ADD TABLE my_schema.tab1 AS their_schema.tab1;
> ALTER SHARE customer_share ADD TABLE other_schema.tab2 PARTITION (c1 = 5), (c1 = 7);

-- List the content of the share
> SHOW ALL IN SHARE customer_share;
  name              type  shared_object           added_at                     added_by                   comment partitions
  ----------------- ----  ---------------------- ---------------------------- -------------------------- ------- -----------------
  other_schema.tab2 TABLE main.other_schema.tab2 2022-01-01T00:00:01.000+0000 alwaysworks@databricks.com NULL
  their_schema.tab1 TABLE main.myschema.tab2     2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com NULL   (c1 = 5), (c1 = 7)

收件者

收件者是您使用 CREATE RECIPIENT 建立的物件,代表您想要允許存取共用的組織。 當您建立收件者 Databricks SQL 時,會產生一個啟用連結,您可以傳送至組織。 若要在建立之後擷取啟用連結,請使用 DESCRIBE RECIPIENT

建立收件者之後,您可以使用GRANT ON SHARE來授與 SELECT 所選共用的許可權。

您必須是中繼存放區管理員,才能建立收件者、卸載收件者,以及授與共享的存取權。

範例

-- Create a recipient.
> CREATE RECIPIENT IF NOT EXISTS other_org COMMENT 'other.org';

-- Retrieve the activation link to send to other.org
> DESCRIBE RECIPIENT other_org;
  name      created_at                   created_by                 comment   activation_link active_token_id                      active_token_expiration_time rotated_token_id rotated_token_expiration_time
  --------- ---------------------------- -------------------------- --------- --------------- ------------------------------------ ---------------------------- ---------------- -----------------------------
  other_org 2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com other.org https://....    0160c81f-5262-40bb-9b03-3ee12e6d98d7 9999-12-31T23:59:59.999+0000 NULL              NULL

-- Choose shares that other.org has access to
> GRANT SELECT ON SHARE customer_share TO RECIPIENT other_org;