Amazon Redshift non supporterà più la creazione di nuovi Python a UDFs partire dal 1° novembre 2025. Se vuoi usare Python UDFs, crea la UDFs data precedente a quella data. Python esistente UDFs continuerà a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
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 vengono specificati 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 VIEW
utilizza 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 VIEW
vede 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. Le operazioni automatiche in alcuni casi possono anche comportare il ricalcolo completo di una vista materializzata alla successiva esecuzione di un'operazione REFRESH. Ad esempio, un'operazione di eliminazione automatica del vuoto 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 che ne dipendono, in ordine di dipendenza: la base viene REFRESHed prima della vista in alto (ordinamento MVs topologico). MVs Ciò consente di aggiornare un insieme annidato di viste materializzate con un unico comando.
L'opzione RESTRICT (impostazione predefinita se non vengono specificati né RESTRICT né CASCADE) aggiorna solo la vista materializzata specificata.
Quando si utilizza l'opzione CASCADE, si applicano le seguenti regole:
-
Solo il proprietario della vista materializzata o un superutente 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 verrà interrotta.
La funzionalità di aggiornamento a cascata è supportata solo se MVs annidata su viste materializzate locali e in streaming. Le viste materializzate con altri tipi di sorgenti, come Spectrum o Data Sharing, non sono supportate in modalità a cascata. CASCADE esegue l'aggiornamento in un'unica transazione per tutte le unità annidate. MVs
Aggiornamento incrementale per le viste materializzate in un datashare
Amazon Redshift supporta l'aggiornamento automatico e incrementale per le viste materializzate in un datashare consumer quando le tabelle di base vengono 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 query secondaria e una funzione di aggregazione o una clausola GROUP BY è presente nella query.
-
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 utilizzando formati diversi da quelli sopra elencati. Per ulteriori informazioni, consulta Visualizzazioni materializzate su 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 products_mv
materializzata e tutte le viste materializzate dipendenti:
REFRESH MATERIALIZED VIEW products_mv CASCADE;