Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
REFRESH MATERIALIZED VIEW
Aggiorna una vista materializzata
Quando crei una vista materializzata, il suo contenuto riflette lo stato della tabella o delle tabelle del database sottostante in quel momento. I dati nella vista materializzata rimangono invariati, anche quando le applicazioni apportano modifiche ai dati nelle tabelle sottostanti.
Per aggiornare i dati in una vista materializzata, è possibile usare l'istruzione REFRESH MATERIALIZED
VIEW in qualsiasi momento. Eseguendo questa istruzione, Amazon Redshift identifica le modifiche apportate nella tabella o nelle tabelle di base e quindi applica tali modifiche alla vista materializzata.
Per ulteriori informazioni sulle viste materializzate, consultare Viste materializzate in Amazon Redshift.
Sintassi
REFRESH MATERIALIZED VIEW mv_name [ RESTRICT | CASCADE ]
Parametri
- mv_name
-
Il nome della vista materializzata da aggiornare.
- RESTRICT
-
Parola chiave facoltativa. Aggiorna la vista materializzata specificata ma non le viste materializzate dipendenti. L’impostazione predefinita se non viene specificato né RESTRICT né CASCADE.
- CASCADE
-
Parola chiave facoltativa. Aggiorna la vista materializzata specificata e tutte le viste materializzate dipendenti.
Note per l’utilizzo
Solo il proprietario di una vista materializzata può eseguire un'operazione REFRESH MATERIALIZED
VIEW su tale vista materializzata. Inoltre, il proprietario deve disporre del privilegio SELECT sulle tabelle di base sottostanti per eseguire correttamente il comando REFRESH
MATERIALIZED VIEW.
Il comando REFRESH MATERIALIZED VIEW viene eseguito come transazione propria. La semantica delle transazioni Amazon Redshift viene seguita per determinare quali dati dalle tabelle di base sono visibili al comando REFRESH o quando le modifiche apportate dal comando REFRESH sono rese visibili ad altre transazioni in esecuzione in Amazon Redshift.
-
Nel caso di viste materializzate incrementali,
REFRESH MATERIALIZED VIEWutilizza solo le righe delle tabelle di base per le quali è già stato eseguito il commit. Pertanto, se l'operazione di aggiornamento viene eseguita dopo un'istruzione DML (Data Manipolation Language) nella stessa transazione, le modifiche di tale istruzione DML non sono visibili per l'aggiornamento. -
Per un aggiornamento completo di una vista materializzata,
REFRESH MATERIALIZED VIEWvede tutte le righe della tabella di base visibili alla transazione di aggiornamento, in base alla semantica delle transazioni Amazon Redshift usuale. -
A seconda del tipo di argomento di input, Amazon Redshift supporta ancora l'aggiornamento incrementale per le viste materializzate per le seguenti funzioni con tipi di argomenti di input specifici: DATE (timestamp), DATE_PART (data, ora, intervallo, time-tz), DATE_TRUNC (timestamp, intervallo).
-
L'aggiornamento incrementale è supportato in una vista materializzata in cui la tabella di base si trova in un'unità di condivisione dati.
Alcune operazioni in Amazon Redshift interagiscono con le viste materializzate. Alcune di queste operazioni potrebbero forzare un'operazione REFRESH MATERIALIZED VIEW per ricalcolare completamente la vista materializzata, anche se la query che definisce la vista materializzata utilizza solo le funzionalità SQL idonee per l'aggiornamento incrementale. Ad esempio:
-
Le operazioni vacuum in background potrebbero essere bloccate se le viste materializzate non vengono aggiornate. Dopo un periodo di soglia definito internamente, è possibile eseguire l'operazione di vacuum. Con l'operazione vacuum, tutte le viste materializzate dipendenti vengono contrassegnate come da rielaborare al successivo aggiornamento (anche se sono di tipo incrementale). Per informazioni su VACUUM, vedere VACUUM. Per ulteriori informazioni sugli eventi e le modifiche allo stato, consultare STL_MV_STATE.
-
Alcune operazioni avviate dall'utente sulle tabelle di base impongono che una vista materializzata venga rielaborata completamente alla successiva esecuzione dell'operazione REFRESH. Esempi di tali operazioni sono un VACUUM richiamato manualmente, un ridimensionamento classico, un'operazione ALTER DISTKEY, un'operazione ALTER SORTKEY e un'operazione di troncatura. In alcuni casi le operazioni automatiche possono anche comportare il ricalcolo completo di una vista materializzata alla successiva esecuzione di un’operazione REFRESH. Ad esempio, un’operazione di eliminazione del vacuum automatico può causare un ricalcolo completo. Per ulteriori informazioni sugli eventi e le modifiche allo stato, consultare STL_MV_STATE.
Aggiornamento a cascata
L’opzione CASCADE aggiorna la vista materializzata specificata e tutte le viste materializzate dipendenti, in ordine di dipendenza: le viste materializzate di base vengono aggiornate prima delle viste materializzate in primo piano (ordinamento topologico). Ciò consente di aggiornare un insieme annidato di viste materializzate con un unico comando.
L’opzione RESTRICT (impostazione predefinita se non viene specificato né RESTRICT né CASCADE) aggiorna solo la vista materializzata specificata.
Quando utilizzi l’opzione CASCADE, si applicano le seguenti regole:
-
Solo il proprietario della vista materializzata o un utente con privilegi avanzati può eseguire il comando
REFRESH MATERIALIZED VIEW ... CASCADE. -
Se una qualsiasi delle viste materializzate nella cascata non può essere aggiornata, l’intera operazione a cascata viene interrotta.
La funzionalità di aggiornamento a cascata è supportata solo per le viste materializzate annidate su viste materializzate locali e in streaming. Le viste materializzate con altri tipi di sorgenti, come Spectrum o Condivisione dei dati, non sono supportate in modalità a cascata. CASCADE esegue l’aggiornamento in un’unica transazione per tutte le viste materializzate annidate.
Aggiornamento incrementale per le viste materializzate in un’unità di condivisione dati
Amazon Redshift supporta l’aggiornamento automatico e incrementale per le viste materializzate in un’unità di condivisione dati del consumer quando le tabelle di base sono condivise. L’aggiornamento incrementale è un’operazione in cui Amazon Redshift identifica le modifiche nella tabella o nelle tabelle di base avvenute dopo l’aggiornamento precedente e aggiorna solo i record corrispondenti nella vista materializzata. Per ulteriori informazioni su questo comportamento, consulta CREATE MATERIALIZED VIEW.
Limitazioni per l'aggiornamento incrementale
Amazon Redshift attualmente non supporta l'aggiornamento incrementale per le viste materializzate definite con una query utilizzando uno dei seguenti elementi SQL:
-
OUTER JOIN (RIGHT, LEFT o FULL).
-
Operazioni insiemistiche: UNION, INTERSECT, EXCEPT, MINUS
-
UNION ALL quando si verifica in una sottoquery e una funzione di aggregazione o una clausola GROUP BY è presente nella query o la vista materializzata di destinazione contiene una chiave di ordinamento.
-
Le funzioni di aggregazione MEDIAN, PERCENTILE_CONT, MAX, MIN, LISTAGG, STDDEV_SAMP, STDDEV_POP, APPROXIMATE COUNT, APPROXIMATE PERCENTILE e le funzioni di aggregazione bitwise.
Nota
Sono supportate le funzioni di aggregazione COUNT, SUM, MIN, MAX e AVG.
-
Funzioni di aggregazione di tipo DISTINCT, come DISTINCT COUNT, DISTINCT SUM, ecc.
-
Funzioni finestra
-
Query che utilizza tabelle temporanee per l'ottimizzazione delle query, ad esempio l'ottimizzazione delle espressioni secondarie comuni.
-
Sottoquery
-
Tabelle esterne che fanno riferimento ai seguenti formati nella query che definisce la vista materializzata.
-
Delta Lake
-
Hudi
L’aggiornamento incrementale è supportato per le viste materializzate definite con formati diversi da quelli precedenti. Per ulteriori informazioni, consulta Viste materializzate per le tabelle di data lake esterne in Amazon Redshift Spectrum.
-
-
Funzioni mutabili, come le funzioni data-ora, funzioni RANDOM e funzioni definite dall'utente non stabili.
-
Per le limitazioni relative all’aggiornamento incrementale per le integrazioni Zero-ETL, consulta Considerazioni sull’utilizzo di integrazioni Zero-ETL con Amazon Redshift.
-
Accesso alle tabelle da più di un database.
Per ulteriori informazioni sulle limitazioni della vista materializzata, incluso l'effetto di operazioni in background come VACUUM sulle operazioni di aggiornamento della vista materializzata, consulta Note per l’utilizzo.
Esempi
Nell'esempio seguente viene eseguito l'aggiornamento della vista materializzata tickets_mv.
REFRESH MATERIALIZED VIEW tickets_mv;
L’esempio seguente aggiorna la vista materializzata products_mv e tutte le viste materializzate dipendenti:
REFRESH MATERIALIZED VIEW products_mv CASCADE;