View a markdown version of this page

Viste materializzate archiviate come tabelle Apache Iceberg - Amazon Redshift

Amazon Redshift non supporterà più l'uso delle UDF di Python dopo il 30 giugno 2026. Inizieremo ad applicarlo gradualmente. Per ulteriori informazioni sulla fine del ciclo di vita di Python e sulle opzioni di migrazione, consulta il post sul blog pubblicato il 30 giugno 2025.

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

Viste materializzate archiviate come tabelle Apache Iceberg

Puoi creare viste materializzate che archiviano i dati come tabelle Apache Iceberg in Amazon S3 o Amazon S3 Table Bucket. A differenza delle viste materializzate standard di Amazon Redshift, che archiviano i dati internamente in Redshift Managed Storage (RMS), le viste materializzate di Iceberg sono archiviate come tabelle Iceberg standard e sono accessibili a qualsiasi motore di analisi che supporti il formato Iceberg, inclusi Apache Spark, Amazon Athena e Trino.

Le viste materializzate di Iceberg combinano l'ottimizzazione delle query e le funzionalità di aggiornamento incrementale di Amazon Redshift con il formato open table di Iceberg. Puoi creare, aggiornare ed eliminare le viste materializzate Iceberg utilizzando gli stessi comandi SQL delle viste materializzate standard, con l'aggiunta della clausola durante la creazione. USING ICEBERG

Le viste materializzate Iceberg sono supportate su cluster Redshift Serverless e provisioned con tipi di istanze RG. I tipi di istanze RA3 e DC2 non sono supportati.

Per informazioni sui comandi SQL utilizzati per creare e gestire le viste materializzate Iceberg, consultate i seguenti argomenti di comando:

Come funzionano le viste materializzate Iceberg

Quando crei una vista materializzata Iceberg, Amazon Redshift esegue le seguenti operazioni:

  1. Esegue la query di definizione e scrive i risultati come file di dati Parquet in Amazon S3.

  2. Registra la tabella nei metadati AWS Glue Data Catalog con Iceberg, rendendola individuabile da altri motori.

  3. Memorizza la definizione della vista materializzata e lo stato di aggiornamento per una gestione indipendente dal cluster. AWS Glue

Quando aggiorni una vista materializzata di Iceberg, Amazon Redshift confronta le istantanee Iceberg della tabella di origine corrente con le istantanee registrate all'ultimo aggiornamento. Se vengono rilevate modifiche, Amazon Redshift calcola e applica solo i dati modificati (aggiornamento incrementale) o esegue un ricalcolo completo.

Requisiti della tabella di origine

Le tabelle di origine per le viste materializzate di Iceberg devono soddisfare i seguenti requisiti:

  • Deve essere in formato Apache Iceberg. Non-Iceberg le tabelle (tabelle native di Amazon Redshift, tabelle esterne Hive o Parquet) non sono supportate come tabelle di origine.

  • Deve essere nella stessa area Regione AWS della vista materializzata.

  • È possibile fare riferimento utilizzando una notazione in tre parti (awsdatacatalog.database.table), la notazione di Amazon S3 Tables ("bucket@s3tablescatalog".database.table) o una notazione in due parti tramite uno schema esterno (). external_schema.table

Cross-engine interoperabilità

Le viste materializzate di Iceberg create da Amazon Redshift vengono visualizzate come tabelle Iceberg standard in. AWS Glue Data Catalog Altri motori di analisi possono leggerle utilizzando modelli di accesso alle tabelle Iceberg standard senza alcuna configurazione aggiuntiva.

Le restrizioni si applicano come segue:

  • Solo Amazon Redshift può aggiornare o eliminare le viste materializzate create da Amazon Redshift.

  • Le viste materializzate di Iceberg create da altri motori (come Apache Spark) possono essere interrogate da Amazon Redshift come tabelle di sola lettura, ma non possono essere aggiornate o eliminate da Amazon Redshift.

Aggiornamento incrementale

Amazon Redshift esegue l'aggiornamento incrementale quando la definizione della vista materializzata lo supporta. L'aggiornamento incrementale legge solo i dati modificati nelle tabelle di origine dall'ultimo aggiornamento e applica tali modifiche alla vista materializzata.

L'aggiornamento incrementale è supportato per le viste materializzate che utilizzano:

  • SELECT ... FROM ... WHERE ... GROUP BYcon le funzioni di aggregazione COUNT e SUM

  • Unioni interne tra le tabelle dei sorgenti di Iceberg

Amazon Redshift torna automaticamente all'aggiornamento completo quando:

  • La vista materializzata utilizza costrutti SQL non supportati per l'aggiornamento incrementale. Per ulteriori informazioni, consulta la sezione Limitazioni che segue e. Aggiornamento di una vista materializzata

  • Le istantanee della tabella di origine dell'ultimo aggiornamento sono scadute.

  • I dati delle viste materializzate sono stati modificati al di fuori di un'operazione di aggiornamento di Amazon Redshift.

Aggiornamento simultaneo

Più cluster o gruppi di lavoro Amazon Redshift possono tentare di aggiornare contemporaneamente la stessa vista materializzata di Iceberg. Amazon Redshift utilizza il controllo ottimistico della concorrenza (OCC) tramite il meccanismo AWS Glue Data Catalog di aggiornamento condizionale per garantire che venga eseguito un solo aggiornamento. Se viene rilevato un aggiornamento simultaneo, Amazon Redshift verifica se la vista materializzata è ancora obsoleta. Se un altro cluster ha già completato l'aggiornamento, l'operazione viene interrotta.

Compattazione e manutenzione delle tabelle

Per le viste materializzate Iceberg archiviate in Amazon S3 Table Bucket, Amazon S3 Tables gestisce automaticamente la compattazione e l'ottimizzazione dei file di dati. Non è richiesta alcuna azione da parte dell'utente.

Per le viste materializzate archiviate in bucket Amazon S3 generici (specificati tramite il parametro)LOCATION, Amazon Redshift non esegue la compattazione. Nel tempo, l'aggiornamento incrementale produce molti file di dati di piccole dimensioni che possono ridurre le prestazioni di lettura. Per mantenere le prestazioni di lettura, utilizzate le seguenti pratiche consigliate:

  • Esegui la compattazione regolarmente utilizzando uno strumento esterno come la procedura di Apache Spark. rewrite_data_files

  • Configura la scadenza delle istantanee Iceberg per limitare la crescita dello storage rispetto alle istantanee storiche.

Per le tabelle di origine, configura la conservazione delle istantanee in modo che superi l'intervallo di aggiornamento previsto. Quando gli snapshot della tabella di origine scadono prima dell'aggiornamento successivo, Amazon Redshift non è più in grado di calcolare un delta incrementale e torna all'aggiornamento completo.

Considerazioni relative alla sicurezza

Permissions

Sono richieste le seguenti autorizzazioni:

  • CREATE — Il chiamante necessita dell'autorizzazione CREATE TABLE nel database di destinazione. AWS Glue Il ruolo IAM associato allo schema esterno (il ruolo MV definer) deve disporre dell'autorizzazione SELECT su tutte le tabelle di origine, concessa tramite AWS Lake Formation le nostre politiche di risorse. AWS Glue

  • REFRESH: il chiamante necessita dell'autorizzazione ALTER sulla vista materializzata. Il ruolo MV definer (registrato al momento della creazione) deve disporre dell'autorizzazione SELECT su tutte le tabelle di origine.

  • DROP: il chiamante necessita dell'autorizzazione DROP sulla vista materializzata.

  • QUERY: il chiamante necessita dell'autorizzazione SELECT sulla vista materializzata, concessa tramite AWS Lake Formation le nostre politiche in materia di risorse. AWS Glue

Per informazioni sulla creazione di ruoli IAM per Amazon Redshift e sulla concessione delle AWS Lake Formation autorizzazioni, consulta. Nozioni di base su Amazon Redshift Spectrum Per verificare che il ruolo IAM disponga delle autorizzazioni richieste sulle tabelle di origine, utilizza la AWS Lake Formation console o l'API. GetEffectivePermissionsForPath Per verificare che il AWS Glue database di destinazione esista e che il ruolo abbia accesso, utilizza l'GetDatabaseAPI.

L'esempio seguente verifica che il ruolo IAM disponga dell'autorizzazione SELECT su una tabella di origine tramite AWS Lake Formation:

aws lakeformation list-permissions \ --principal DataLakePrincipalIdentifier=arn:aws:iam::123456789012:role/myspectrum_role \ --resource '{"Table":{"DatabaseName":"mydb","Name":"orders"}}'

L'esempio seguente verifica che il AWS Glue database di destinazione esista e sia accessibile:

aws glue get-database --name mydb

Visibilità della cronologia delle istantanee

Le viste materializzate di Iceberg archiviano i dati come tabelle Iceberg standard con cronologia completa delle istantanee. Un lettore con accesso ai file Iceberg sottostanti può confrontare istantanee successive per osservare quali righe sono state aggiunte o rimosse tra un aggiornamento e l'altro.

Per le viste materializzate aggregate (quelle con funzioni GROUP BY e aggregate), il delta visibile è limitato alle modifiche dei valori aggregati, non alle singole righe della tabella di origine. Per le viste materializzate non aggregate, il delta corrisponde alle righe specifiche che sono cambiate nell'output delle viste materializzate.

Questo comportamento è inerente al formato di tabella Iceberg. Qualsiasi tabella Iceberg sottoposta a scritture incrementali espone la stessa proprietà.

Per mitigare questo comportamento:

  • Usa AWS Lake Formation le autorizzazioni o le policy dei bucket di Amazon S3 per controllare chi può accedere ai file di dati Iceberg sottostanti della vista materializzata.

  • Per le viste materializzate contenenti dati sensibili in cui la cronologia delle modifiche non dovrebbe essere osservabile, definisci la vista materializzata con costrutti SQL che impongono l'aggiornamento completo (come DISTINCT). L'aggiornamento completo sostituisce tutti i dati in ogni istantanea, rendendo impossibile determinare quali righe specifiche sono state modificate.

  • Configura la scadenza delle istantanee di Iceberg per limitare la finestra delle modifiche osservabili. Con Amazon S3 Table Buckets, la manutenzione gestita gestisce automaticamente il ciclo di vita degli snapshot.

  • Usa Amazon S3 Table Bucket, che forniscono un controllo integrato degli accessi a livello di tabella.

Monitoraggio

Aggiorna la cronologia

Le operazioni di aggiornamento eseguite dal cluster locale vengono registrate su. SVL_MV_REFRESH_STATUS Interroga questa vista per verificare la tempistica e lo stato dell'aggiornamento e se l'aggiornamento è stato incrementale o completo.

SELECT mv_name, starttime, endtime, status FROM svl_mv_refresh_status WHERE mv_name = 'daily_revenue' ORDER BY starttime DESC LIMIT 10;

Si noti che questa visualizzazione di sistema registra solo gli aggiornamenti eseguiti dal cluster locale. Se più cluster aggiornano la stessa vista materializzata di Iceberg, le tabelle di sistema di ogni cluster mostrano solo la propria cronologia degli aggiornamenti.

Alla scoperta delle viste materializzate di Iceberg

Usa il SHOW TABLES comando per trovare le viste materializzate di Iceberg. Le viste materializzate di Iceberg appaiono con e. table_type = 'EXTERNAL TABLE' table_subtype = 'ICEBERG MATERIALIZED VIEW' SHOW TABLES funziona su tutti i percorsi del catalogo (schemi esterni e tabelle Amazon S3). awsdatacatalog

SHOW TABLES FROM SCHEMA awsdatacatalog.mydb LIKE '%';

Puoi anche utilizzarle SVV_EXTERNAL_TABLES per trovare le viste materializzate di Iceberg nei tuoi schemi esterni, dove vengono visualizzate con: tabletype = 'EXTERNAL TABLE'

SELECT schemaname, tablename, location FROM svv_external_tables WHERE tabletype = 'EXTERNAL TABLE';
Nota

SVV_EXTERNAL_TABLES enumera le viste materializzate di Iceberg solo per schemi esterni. Le viste materializzate di Iceberg a cui si accede tramite i awsdatacatalog cataloghi di Amazon S3 Tables non sono enumerate da SVV_EXTERNAL_TABLES; usa SHOW TABLES per scoprirle.

STV_MV_INFOnon include le viste materializzate di Iceberg.

Limitazioni

Non è possibile definire una vista materializzata Iceberg che faccia riferimento o includa uno dei seguenti elementi:

  • Non-Iceberg tabelle di origine (tabelle native di Amazon Redshift, tabelle esterne Hive, Parquet, Delta Lake o Hudi)

  • Tabelle di origine che utilizzano il formato Iceberg versione 3

  • User-defined funzioni (UDF) o aggregati definiti dall'utente

  • Funzioni mutabili (GETDATE, RANDOM, CURRENT_TIMESTAMP e funzioni simili)

  • Clausole ORDER BY, LIMIT o OFFSET

  • Identificatori maiuscoli nei nomi di tabelle, nei nomi di colonne o negli alias

  • Tabelle di origine in un altro account o Regione AWS

  • AWS Lake Formation tabelle filtrate (controllo degli accessi a grana fine)

I seguenti costrutti SQL sono consentiti nella definizione della vista materializzata, ma forzano l'aggiornamento completo anziché l'aggiornamento incrementale:

  • DISTINCT

  • Connessioni esterne (SINISTRA, DESTRA, COMPLETA)

  • Funzioni finestra

  • Sottoquery

  • Operazioni del set

  • SET DI RAGGRUPPAMENTO, ROLLUP, CUBO

  • Funzioni aggregate diverse da COUNT e SUM

  • COUNT (DISTINTO), SUM (DISTINTO)

Limitazioni aggiuntive:

  • La riscrittura automatica delle query per utilizzare le viste materializzate non è supportata per le viste materializzate Iceberg.

  • Le viste materializzate automatizzate non sono supportate per le viste materializzate Iceberg.

  • L'aggiornamento automatico non è supportato per le viste materializzate Iceberg. È necessario aggiornarle manualmente utilizzando. REFRESH MATERIALIZED VIEW

  • Le viste materializzate Iceberg sono supportate solo su cluster Redshift Serverless e con provisioning con tipi di istanze RG. I tipi di istanze RA3 e DC2 non sono supportati.

  • Fine-grained il controllo degli accessi (FGAC) non è supportato sulle viste materializzate di Iceberg.

  • L'aggiornamento CASCADE non è supportato per le viste materializzate Iceberg.

  • Le viste materializzate Iceberg non possono essere create o aggiornate se è impostata su. enable_case_sensitive_identifier true