Condivisione delta (Databricks SQL)

La condivisione delta è un protocollo aperto per la condivisione dei dati sicura con altre organizzazioni indipendentemente dalle piattaforme di calcolo usate. Può condividere raccolte di tabelle in un metastore di Unity Catalog in tempo reale senza copiarle, in modo che i destinatari dei dati possano iniziare immediatamente a lavorare con la versione più recente dei dati condivisi.

Sono disponibili tre componenti per La condivisione delta:

  • Provider

    Un provider è un'entità che ha reso disponibili i dati per la condivisione.

  • Condivisioni

    Una condivisione definisce un raggruppamento logico per le tabelle che si intende condividere.

  • Destinatari

    Un destinatario identifica un'organizzazione con cui si vuole condividere qualsiasi numero di condivisioni.

Per una guida dettagliata sull'uso della condivisione Delta, vedere Condivisione delta gestita da Azure Databricks

Provider

Un provider di dati è un oggetto che rappresenta l'organizzazione nel mondo reale che condivide i dati. Un provider contiene condivisioni che contengono ulteriormente i dati condivisi. Dopo aver aggiunto un provider come destinatari , è possibile

Esempio

-- 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

Condivisioni

Una condivisione è un'istanza di un contenitore creata con il comando CREATE SHARE . Dopo aver creato è possibile registrare in modo iterativo una raccolta di tabelle esistenti definite all'interno del metastore usando il comando ALTER SHARE . È possibile registrare le tabelle con il nome originale, qualificato dallo schema originale o fornire nomi esposti alternativi.

È necessario essere un amministratore o un account di metastore per creare, modificare e rilasciare condivisioni.

Esempio

-- 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)

Destinatari

Un destinatario è un oggetto creato usando CREATE RECIPIENT per rappresentare un'organizzazione che si vuole consentire le condivisioni di accesso. Quando si crea un destinatario Databricks SQL genera un collegamento di attivazione che è possibile inviare all'organizzazione. Per recuperare il collegamento di attivazione dopo la creazione si usa DESCRIBE RECIPIENT.

Dopo aver creato un destinatario, è possibile concedere SELECT privilegi alle condivisioni preferite usando GRANT ON SHARE.

È necessario essere un amministratore di metastore per creare destinatari, eliminare destinatari e concedere l'accesso alle condivisioni.

Esempio

-- 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;