Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Ogni volta che viene eseguito un aggiornamento pianificato per le viste lake materializzate, Fabric determina la strategia migliore da usare, ovvero nessun aggiornamento, incrementale o completo, in base alle modifiche apportate ai dati di origine. Questo comportamento è denominato aggiornamento ottimale e consente di mantenere aggiornate le viste lake materializzate riducendo al minimo i costi di calcolo e l'ora di aggiornamento.
Questo articolo illustra il funzionamento dell'aggiornamento ottimale, le operazioni di ogni strategia e come passare alla modalità di aggiornamento completa quando necessario.
Annotazioni
L'aggiornamento ottimale non è supportato negli scenari seguenti:
- Definizioni di PySpark: l'aggiornamento ottimale si applica solo agli MLV definiti con Spark SQL. I MLV definiti da PySpark utilizzano sempre il refresh completo.
- Tabelle di origine non Delta: viste del lago materializzate che utilizzano tabelle non Delta come sorgente eseguono sempre un aggiornamento completo. Le strategie incrementali e senza aggiornamento richiedono origini di tabella Delta.
Vantaggi dell'aggiornamento ottimale
Analizzando i commit differenziali nelle tabelle di origine, l'aggiornamento ottimale può prendere decisioni intelligenti su come elaborare i dati. Se possibile, ciò può comportare:
- Costo inferiore: vengono usate meno risorse di calcolo e archiviazione quando Fabric rileva che i dati di origine non sono stati modificati e ignorano completamente l'aggiornamento. Non si applicano costi aggiuntivi per l'aggiornamento ottimale: vengono fatturati in base all'utilizzo del calcolo durante le operazioni di aggiornamento.
- Miglioramento dell'efficienza: cicli di aggiornamento più veloci quando è necessario elaborare solo i dati modificati, consentendo di ottenere informazioni più aggiornate.
- Risparmio di tempo: riduzione della durata dell'aggiornamento quando viene applicata l'elaborazione incrementale anziché ricompilare il set di dati completo.
Strategie di aggiornamento ottimali
Nella tabella seguente vengono descritte le strategie di aggiornamento che possono essere selezionate in modo ottimale:
| Politica di aggiornamento | Description |
|---|---|
| Nessun aggiornamento | Se non vengono rilevati nuovi commit delta nelle tabelle di origine, Fabric ignora completamente l'aggiornamento, evitando un calcolo non necessario. |
| Aggiornamento incrementale | Elabora solo i dati modificati quando vengono rilevati nuovi delta commit nelle tabelle di origine. |
| Aggiornamento completo | Ricompila l'intera vista lake materializzata dal set di dati di origine completo. Questa strategia viene usata quando vengono rilevate espressioni non supportate, quando le modifiche non possono essere elaborate in modo incrementale o quando il set di dati di origine è sufficientemente piccolo che una ricomputazione completa è più veloce rispetto all'elaborazione incrementale. |
Importante
L'aggiornamento incrementale richiede la proprietà CDF (Delta Change Data Feed) (delta.enableChangeDataFeed=true) in tutte le tabelle di origine a cui viene fatto riferimento nella definizione materializzata della vista Lake. Senza CDF abilitato, l'aggiornamento ottimale può scegliere solo tra nessun aggiornamento e aggiornamento completo. Per altre informazioni, vedere Abilitare l'aggiornamento incrementale.
Configurare un aggiornamento ottimale
L'opzione di attivazione ottimale offre strategie senza aggiornamento e con aggiornamento completo senza alcuna configurazione aggiuntiva. Per sbloccare la strategia di aggiornamento incrementale, è anche necessario abilitare il feed di dati delle modifiche nelle tabelle di origine.
Attivare la modalità di aggiornamento ottimale
Per impostazione predefinita, la modalità di aggiornamento ottimale è abilitata per una derivazione materializzata della vista lake. Se non è abilitata, seguire questa procedura per attivarla:
Vai alla tua lakehouse e seleziona Viste materializzate del lake.
Selezionare Gestisci e quindi selezionare l'interruttore Aggiornamento ottimale per attivarlo.
Abilitare l'aggiornamento incrementale
Per usare l'aggiornamento incrementale, è necessario abilitare la proprietà CDF (Delta Change Data Feed) in tutte le tabelle di origine o nelle viste del lago materializzate a cui si fa riferimento nella definizione delle viste materializzate del lago. CDF consente a Fabric di leggere solo le righe modificate dopo l'ultimo aggiornamento, invece di rielaborare il set di dati completo.
Senza CDF abilitato, l'aggiornamento ottimale può scegliere solo tra nessun aggiornamento e aggiornamento completo.
L'aggiornamento incrementale è supportato per i dati solo accodati. Se i dati di origine includono eliminazioni o aggiornamenti, Fabric esegue un aggiornamento completo.
Annotazioni
Abilitare il CDF nelle tabelle di origine non ha alcun effetto misurabile sulle prestazioni o sulla capacità di archiviazione per i carichi di lavoro di sola aggiunta, che è lo scenario supportato dall'aggiornamento incrementale. CDF è una proprietà di tabella standard di Delta Lake da cui anche altre funzionalità di Fabric possono trarre vantaggio. Per ulteriori informazioni su come funziona il CDF, consultare Change Data Feed di Delta Lake.
È possibile abilitare CDF in fase di creazione includendo TBLPROPERTIES nell'istruzione CREATE :
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT
o.order_id,
o.order_date,
o.product_id,
p.product_name,
o.quantity,
p.price,
o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id
Per le tabelle di origine esistenti, usare ALTER TABLE per abilitare CDF:
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Ad esempio, per abilitare CDF in entrambe le tabelle di origine dalla guida introduttiva:
ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Costrutti SQL supportati dall'aggiornamento incrementale
L'aggiornamento incrementale funziona quando la definizione di vista lake materializzata usa solo i costrutti SQL descritti qui. Se la query include costrutti non supportati, ad esempio funzioni finestra o funzioni non deterministiche, Fabric aggiorna comunque i dati, ma esegue il fallback a un aggiornamento completo.
| Costrutto SQL | Osservazione |
|---|---|
| Selezionare l'espressione | Sono supportate funzioni ed espressioni predefinite deterministiche. Non supportato per l'aggiornamento incrementale: funzioni di aggregazione (SUM(), COUNT(), AVG()MIN(), MAX(), , STDDEV()e così via), GROUP BY, DISTINCTfunzioni finestra e funzioni non deterministiche, ad rand()esempio , uuid()current_timestamp(). |
| FROM | Supporta tabelle Delta e viste lake materializzate. Le sottoquery e le CTE funzionano se usano solo le clausole supportate. |
| WHERE | Sono supportate solo le funzioni predefinite deterministiche. |
| INNER JOIN (associazione interna) | Supportato. |
| LEFT OUTER JOIN/LEFT SEMI JOIN | Supportato. L'aggiornamento incrementale funziona solo se la tabella sul lato destro rimane invariata durante il ciclo di aggiornamento. Qualsiasi modifica alla tabella sul lato destro attiva un aggiornamento completo. |
| UNION ALL | Supportato. |
| WITH | Espressioni di tabella comuni se usano solo clausole supportate. |
| Sottoquery nelle espressioni | Le sottoquery all'interno di espressioni SELECT o WHERE , ad esempio sottoquery scalari o EXISTS, attivano un aggiornamento completo se una tabella a cui si fa riferimento ha modifiche. |
| Vincoli relativi alla qualità dei dati | Nei vincoli sono supportate solo le funzioni predefinite deterministiche. |
Annotazioni
L'uso di costrutti non supportati non impedisce di creare una vista materializzata del lago. Significa solo che Fabric usa un aggiornamento completo anziché un aggiornamento incrementale.
Aggiornamento completo
L'aggiornamento ottimale passa automaticamente all'aggiornamento completo quando necessario, quindi di solito non è necessario forzare l'aggiornamento. Tuttavia, esistono casi in cui potrebbe essere necessario attivare manualmente un aggiornamento completo, ad esempio per risolvere i problemi relativi ai risultati imprevisti o per rielaborare i dati dopo una correzione.
Eseguire un aggiornamento completo monouso con SQL
Per forzare un aggiornamento completo di una vista materializzata del lago specifica, eseguire il comando seguente:
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
Annotazioni
Se il nome dell'area di lavoro contiene spazi, racchiudilo tra apici inversi: `My Workspace`.lakehouse.schema.view_name
Disattivare l'aggiornamento ottimale
Se si vuole che ogni esecuzione pianificata esegua un aggiornamento completo, è possibile disattivare l'interruttore di aggiornamento ottimale. In questo modo vengono disabilitate sia la strategia "no-refresh" che quella "incrementale"; ogni esecuzione ricompila l'intero set di dati, anche se i dati di origine non sono stati modificati.
Vai alla tua lakehouse e seleziona Viste materializzate del lake.
Fare clic su Gestisci e disattivare l'interruttore Aggiornamento ottimale .