Usare il Catalogo Unity con le pipeline di Delta Live Tables

Importante

Il supporto per le Delta Live Tables nel Catalogo Unity è disponibile in anteprima pubblica.

Databricks consiglia di configurare le pipeline di tabelle live Delta con Unity Catalog.

Le pipeline configurate con Il catalogo Unity pubblicano tutte le viste materializzate definite e le tabelle di streaming nel catalogo e nello schema specificati. Le pipeline di Unity Catalog possono leggere da altre tabelle e volumi di Unity Catalog.

Per gestire le autorizzazioni per le tabelle create da una pipeline di Catalogo Unity, usare GRANT e REVOKE.

Nota

Questo articolo illustra le funzionalità per la modalità di pubblicazione predefinita corrente per le pipeline. I pipeline creati prima del 5 febbraio 2025 potrebbero utilizzare la legacy modalità di pubblicazione e lo schema virtuale LIVE. Consulta lo schema LIVE (legacy) .

Requisiti

Per creare tabelle di streaming e viste materializzate in uno schema di destinazione in Unity Catalog, è necessario disporre delle autorizzazioni seguenti per lo schema e il catalogo padre:

  • USE CATALOG privilegi nel catalogo di destinazione.
  • CREATE MATERIALIZED VIEW e USE SCHEMA privilegi nello schema di destinazione se la pipeline crea viste materializzate .
  • privilegi CREATE TABLE e USE SCHEMA sullo schema di destinazione se la pipeline crea tabelle di streaming .

Se la pipeline crea nuovi schemi, è necessario disporre di privilegi USE CATALOG e CREATE SCHEMA nel catalogo di destinazione.

Risorse di calcolo necessarie per eseguire una pipeline abilitata per il Catalogo Unity:

Il calcolo necessario per eseguire query sulle tabelle create da una pipeline di tabelle live Delta usando il catalogo Unity (incluse le tabelle di streaming e le viste materializzate) include uno dei seguenti elementi:

  • Warehouse SQL
  • Cluster in modalità di accesso condiviso in Databricks Runtime 13.3 LTS o versione successiva.
  • Cluster in modalità di accesso utente singolo (o "assegnato"), se il controllo di accesso con granularità fine è abilitato nel cluster utente singolo, ovvero il cluster è in esecuzione in Databricks Runtime 15.4 o versione successiva e l'ambiente di calcolo serverless è abilitato per l'area di lavoro. Per altre informazioni, vedere Controllo di accesso con granularità fine per il calcolo di un singolo utente.
  • Cluster in modalità di accesso assegnato per utente singolo dalla versione 13.3 LTS alla 15.3, solo se il proprietario della tabella esegue la query.

Si applicano limitazioni di calcolo aggiuntive. Vedere la sezione seguente.

Limitazioni

Di seguito sono riportate alcune limitazioni quando si usa il catalogo Unity con le tabelle live Delta:

  • Per impostazione predefinita, solo il proprietario della pipeline e gli amministratori dell'area di lavoro possono visualizzare i log del driver dal cluster che esegue una pipeline abilitata per Unity Catalog. Per consentire ad altri utenti di accedere ai log dei driver, vedere Consentire agli utenti non amministratori di visualizzare i log dei driver da una pipeline abilitata per Unity catalog.

  • Le pipeline esistenti che usano il metastore Hive non possono essere aggiornate per l'uso di Unity Catalog. Per eseguire la migrazione di una pipeline esistente che scrive nel metastore Hive, è necessario creare una nuova pipeline e inserire nuovamente i dati dalle origini dati. Consulta la creazione di una pipeline di Unity Catalog clonando una pipeline di metastore Hive.

  • Non è possibile creare una pipeline abilitata per il catalogo Unity in un'area di lavoro collegata a un metastore creato durante l'anteprima pubblica del catalogo Unity. Si veda Eseguire l'aggiornamento all'ereditarietà dei privilegi.

  • I JAR non sono supportati. Sono supportate solo le librerie Python di terze parti. Vedere Gestire le dipendenze Python per le pipeline di tabelle live Delta.

  • Le query DML (Data Manipulation Language) che modificano lo schema di una tabella di streaming non sono supportate.

  • Una vista materializzata creata in una pipeline Delta Live Tables non può essere usata come origine di streaming all'esterno di tale pipeline, ad esempio in un'altra pipeline o in un notebook a valle.

  • I dati per le viste materializzate e le tabelle di streaming vengono archiviati nella posizione di archiviazione all'interno dello schema contenitore. Se non si specifica un percorso di archiviazione dello schema, le tabelle vengono archiviate nel percorso di archiviazione del catalogo. Se non vengono specificati percorsi di archiviazione dello schema e del catalogo, le tabelle vengono archiviate nel percorso di archiviazione radice del metastore.

  • La scheda Esplora cataloghi Cronologia non mostra la cronologia per le viste materializzate.

  • La proprietà LOCATION non è supportata durante la definizione di una tabella.

  • Le pipeline abilitate per Unity Catalog non possono pubblicare nel metastore Hive.

  • Il supporto della funzione definita dall'utente Python è disponibile in anteprima pubblica.

  • Non è possibile usare Delta Sharing con una vista materializzata di Delta Live Tables o una tabella di streaming pubblicata in Unity Catalog.

  • Non è possibile usare la funzione con valori di tabella event_log in una pipeline o una query per accedere ai log eventi di più pipeline.

  • Non è possibile condividere una vista creata sulla funzione con valori di tabella event_log con altri utenti.

Nota

I file sottostanti che supportano viste materializzate possono includere dati da tabelle upstream (incluse le possibili informazioni personali) che non vengono visualizzati nella definizione della vista materializzata. Questi dati vengono aggiunti automaticamente all'archivio sottostante per supportare l'aggiornamento incrementale delle viste materializzate.

Poiché i file sottostanti di una vista materializzata potrebbero rischiare di esporre dati da tabelle upstream non incluse nello schema della vista materializzata, Databricks consiglia di non condividere l'archiviazione sottostante con consumer downstream non attendibili.

Si supponga, ad esempio, che una definizione di vista materializzata includa una COUNT(DISTINCT field_a) clausola . Anche se la definizione della vista materializzata include solo la clausola di aggregazione COUNT DISTINCT, i file sottostanti conterranno un elenco dei valori effettivi di field_a.

È possibile utilizzare insieme le pipeline del metastore di Hive e quelle del catalogo di Unity?

L'area di lavoro può contenere pipeline che usano Unity Catalog e il metastore Hive legacy. Tuttavia, una singola pipeline non può scrivere nel metastore Hive e nel catalogo Unity. Le pipeline esistenti che scrivono nel metastore Hive non possono essere aggiornate per utilizzare il Catalogo Unity. Per eseguire la migrazione di una pipeline esistente che scrive nel metastore Hive, è necessario creare una nuova pipeline e inserire nuovamente i dati dalle origini dati. Consulta la creazione di una pipeline di Unity Catalog clonando una pipeline di metastore Hive.

Le pipeline esistenti che non usano Unity Catalog non sono interessate dalla creazione di nuove pipeline configurate con Unity Catalog. Queste pipeline continuano a rendere persistenti i dati nel metastore Hive usando il percorso di archiviazione configurato.

Se non specificato diversamente in questo documento, tutte le origini dati esistenti e la funzionalità Delta Live Tables sono supportate dalle pipeline che usano Unity Catalog. Sia le interfacce di Python che SQL sono supportate con le pipeline che usano Unity Catalog.

Modifiche alla funzionalità esistente

Quando le Tabelle Live Delta sono configurate per rendere persistenti i dati in Unity Catalog, il ciclo di vita della tabella viene gestito dalle Tabelle Live Delta della pipeline. Poiché la pipeline gestisce il ciclo di vita e le autorizzazioni della tabella:

  • Quando una tabella viene rimossa dalla definizione della pipeline Delta Live Tables, la corrispondente vista materializzata o voce della tabella di streaming viene rimossa da Unity Catalog al successivo aggiornamento della pipeline. I dati effettivi vengono conservati per un periodo in modo che possano essere recuperati se eliminati per errore. I dati possono essere recuperati aggiungendo nuovamente la vista materializzata o la tabella di streaming nella definizione della pipeline.
  • L'eliminazione della pipeline Delta Live Tables risulta nell'eliminazione di tutte le tabelle definite in quella pipeline. A causa di questa modifica, l'interfaccia utente di Delta Live Tables viene aggiornata per richiedere di confermare l'eliminazione di una pipeline.
  • Le tabelle di backup interne, incluse quelle usate per supportare APPLY CHANGES INTO, non sono direttamente accessibili dagli utenti.

Scrivere Tabelle nel Catalogo Unity da una pipeline di Delta Live Tables

Per scrivere le tabelle in Unity Catalog, è necessario configurare la pipeline per usarla tramite l'area di lavoro. Quando si creare una pipeline, selezionare catalogo Unity in Opzioni di archiviazione, selezionare un catalogo nel menu a discesa Catalogo e selezionare uno schema esistente o immettere il nome per un nuovo schema nel menu a discesa schema di destinazione. Per informazioni sui cataloghi di Unity Catalog, vedere Che cosa sono i cataloghi in Azure Databricks?. Per informazioni sugli schemi in Unity Catalog, vedere Che cosa sono gli schemi in Azure Databricks?.

Inserire dati in una pipeline del catalogo Unity

La pipeline configurata per l'uso di Unity Catalog può leggere i dati da:

  • Tabelle gestite ed esterne di Unity Catalog, viste, viste materializzate e tabelle di streaming.
  • Tabelle e viste metastore Hive.
  • Caricatore automatico usando la funzione read_files() per leggere da posizioni esterne del catalogo Unity.
  • Apache Kafka e AmazonPartizionis.

Di seguito sono riportati esempi di lettura da tabelle del metastore di Unity e Hive.

Inserimento batch da una tabella del catalogo Unity

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.read.table("my_catalog.my_schema.table")

Trasmettere le modifiche da una tabella del catalogo Unity

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  STREAM(my_catalog.my_schema.table1);

Python

@dlt.table
def table_name():
  return spark.readStream.table("my_catalog.my_schema.table")

Inserire dati dal metastore Hive

Una pipeline che usa Unity Catalog può leggere i dati dalle tabelle del metastore Hive usando il catalogo hive_metastore:

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.read.table("hive_metastore.some_schema.table")

Inserire dati dal caricatore automatico

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  read_files(
    <path-to-uc-external-location>,
    "json"
  )

Python

@dlt.table(table_properties={"quality": "bronze"})
def table_name():
  return (
     spark.readStream.format("cloudFiles")
     .option("cloudFiles.format", "json")
     .load(f"{path_to_uc_external_location}")
 )

Condividere viste materializzate

Per impostazione predefinita, solo il proprietario della pipeline dispone dell'autorizzazione per eseguire query sui set di dati creati dalla pipeline. È possibile concedere ad altri utenti la possibilità di eseguire query su una tabella usando istruzioni GRANT ed è possibile revocare l'accesso alle query usando istruzioni REVOKE. Per ulteriori informazioni sui privilegi nel Catalogo Unity, vedere Gestire i privilegi nel Catalogo Unity.

Concedi SELECT su una tabella

GRANT SELECT ON TABLE
  my_catalog.my_schema.table_name
TO
  `user@databricks.com`

Revoca il permesso di selezione su una tabella

REVOKE SELECT ON TABLE
  my_catalog.my_schema.table_name
FROM
  `user@databricks.com`

Concedere la creazione di una tabella o creare privilegi di visualizzazione materializzati

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Visualizzare la derivazione per una pipeline

La tracciabilità delle tabelle in una pipeline di Delta Live Tables è visibile in Esplora catalogo. L'interfaccia utente di lineage di Catalog Explorer mostra le tabelle a monte e a valle per le viste materializzate o le tabelle di streaming in una pipeline abilitata per Unity Catalog. Per ulteriori informazioni sul lineage di Unity Catalog, vedere Acquisire e visualizzare il lineage dei dati utilizzando Unity Catalog.

Per una vista materializzata o una tabella di streaming in una pipeline di Delta Live Tables abilitata per Unity Catalog, l'interfaccia utente di lineage dell'Esplora Cataloghi collegherà anche alla pipeline che ha generato la vista materializzata o la tabella di streaming se la pipeline è accessibile dall'area di lavoro corrente.

Aggiungere, modificare o eliminare dati in una tabella di streaming

È possibile usare istruzioni DML (Data Manipulation Language), incluse le istruzioni insert, update, delete e merge, per modificare le tabelle Stream pubblicate su Unity Catalog. Il supporto per le query DML sulle tabelle di streaming consente casi d'uso come l'aggiornamento delle tabelle per la conformità al Regolamento generale sulla protezione dei dati (GDPR).

Nota

  • Le istruzioni DML che modificano lo schema di tabella di una tabella di streaming non sono supportate. Assicurarsi che le istruzioni DML non tentino di evolvere lo schema della tabella.
  • Le istruzioni DML che aggiornano una tabella di streaming possono essere eseguite solo in un cluster unity catalog condiviso o in un sql warehouse usando Databricks Runtime 13.3 LTS e versioni successive.
  • Poiché lo streaming richiede origini dati a solo accodamento, se l'elaborazione necessita di eseguire lo streaming da una tabella di origine in streaming con modifiche (ad esempio, mediante istruzioni DML), impostare il flag skipChangeCommits durante la lettura della tabella di origine in streaming. Quando viene impostata skipChangeCommits, le transazioni che eliminano o modificano i record nella tabella di origine vengono ignorate. Se l'elaborazione non richiede una tabella di streaming, è possibile utilizzare una vista materializzata (che non ha la restrizione di solo accodamento) come tabella di destinazione.

Di seguito sono riportati esempi di istruzioni DML per modificare i record in una tabella di streaming.

Eliminare record con un ID specifico:

DELETE FROM my_streaming_table WHERE id = 123;

Aggiornare i record con un ID specifico:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;

Pubblicare tabelle con filtri di riga e maschere di colonna

Importante

Questa funzionalità è disponibile in anteprima pubblica.

Filtri di riga consente di specificare una funzione che viene applicata come filtro ogni volta che un'analisi di tabella recupera righe. Questi filtri assicurano che le query successive restituiscano solo righe per le quali il predicato di filtro restituisce TRUE.

Le maschere di colonna consentono di mascherare i valori di una colonna ogni volta che una tabella esegue una scansione delle righe. Le query future per tale colonna restituiscono il risultato della funzione valutata anziché il valore originale della colonna. Per altre informazioni sull'uso di filtri di riga e maschere di colonna, vedere Filtrare i dati delle tabelle sensibili usando filtri di riga e maschere di colonna.

Gestione dei filtri di riga e delle maschere di colonna

I filtri di riga e le maschere di colonna nelle viste materializzate e nelle tabelle di streaming devono essere aggiunti, aggiornati o eliminati tramite l'istruzione CREATE OR REFRESH.

Per una sintassi dettagliata sulla definizione di tabelle con filtri di riga e maschere di colonna, vedere informazioni di riferimento sul linguaggio SQL delle tabelle live Delta e informazioni di riferimento sul linguaggio Python per le tabelle live Delta.

Comportamento

Di seguito sono riportati dettagli importanti quando si usano filtri di riga o maschere di colonna nelle pipeline di tabelle live Delta:

  • Aggiorna come proprietario: Quando un aggiornamento della pipeline rinfresca una vista materializzata o una tabella di streaming, le funzioni di filtro di riga e mascheramento di colonna vengono eseguite con i diritti del proprietario della pipeline. Ciò significa che l'aggiornamento della tabella usa il contesto di sicurezza dell'utente che ha creato la pipeline. Le funzioni che controllano il contesto utente (ad esempio CURRENT_USER e IS_MEMBER) vengono valutate usando il contesto utente del proprietario della pipeline.
  • query: quando si esegue una query su una vista materializzata o una tabella di streaming, le funzioni che controllano il contesto utente (ad esempio CURRENT_USER e IS_MEMBER) vengono valutate usando il contesto utente del chiamante. Questo approccio applica controlli di accesso e sicurezza dei dati specifici dell'utente in base al contesto dell'utente corrente.
  • Quando si creano viste materializzate sulle tabelle di origine che contengono filtri di riga e maschere di colonna, l'aggiornamento della vista materializzata è sempre un aggiornamento completo. Un aggiornamento completo elabora tutti i dati disponibili nell'origine con le definizioni più recenti. Questo processo verifica che i criteri di sicurezza nelle tabelle di origine vengano valutati e applicati con i dati e le definizioni più up-to-date.

Osservabilità

Usare DESCRIBE EXTENDED, INFORMATION_SCHEMAo Esplora cataloghi per esaminare i filtri di riga e le maschere di colonna esistenti applicabili a una vista materializzata specifica o a una tabella di streaming. Questa funzionalità consente agli utenti di controllare ed esaminare le misure di accesso e protezione dei dati nelle viste materializzate e nelle tabelle di streaming.