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à.
Comandi SQL
Le tabelle Apache Iceberg in Amazon Redshift offrono un modo efficace per gestire set di dati analitici di grandi dimensioni nel tuo data lake. Queste tabelle supportano le transazioni ACID, l'evoluzione degli schemi e le funzionalità di viaggio nel tempo, mantenendo al contempo prestazioni elevate per i carichi di lavoro di analisi. Utilizzando le tabelle Apache Iceberg, è possibile organizzare e partizionare in modo efficiente i dati, controllare i formati e la compressione dei file e integrarsi perfettamente con altri servizi. AWS
È possibile creare tabelle Iceberg partizionate e non partizionate utilizzando i comandi and. CREATE TABLE
... USING ICEBERG CREATE TABLE ... USING ICEBERG AS SELECT È possibile fare riferimento alle tabelle Iceberg utilizzando una notazione dello schema esterna () o una notazione in tre parti (). external_schema.table_name "catalog_name".database_name.table_name Gli esempi in questa sezione illustrano entrambi i metodi.
Dopo aver creato una tabella, è possibile aggiungere dati utilizzando INSERT i comandi standard. Tieni presente che, sebbene Amazon Redshift funzioni con molti tipi di dati Iceberg, potrebbe essere necessario convertire alcuni formati di dati quando inserisci informazioni.
Puoi visualizzare le tabelle Iceberg usando il comando. SHOW TABLES Se vuoi rimuovere una tabella daAWS Glue Data Catalog, puoi usare il DROP TABLE comando. Nota che questo rimuove solo la registrazione della tabella. I dati effettivi rimarranno in archiviazione finché non li elimini separatamente.
Tutte le altre istruzioni SQL, comeDELETE,UPDATE, e MERGEALTER TABLE, non sono ancora supportate nelle tabelle Iceberg.
Le seguenti sezioni illustrano la sintassi SQL per creare, inserire e gestire tabelle Iceberg in Amazon Redshift.
CREATE TABLE
CREATE TABLE [IF NOT EXISTS]<external_schema>.<table_name>( column_name data_type [, ...] ) USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression_value>')]
Puoi anche usare una notazione in tre parti per i bucket di tabelle S3:
CREATE TABLE "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name>( column_name data_type [, ...] ) USING ICEBERG [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression_value>')]
Nota che deve essere un nome di schema esterno esistente in cui verrà creata la tabella esterna. Per ulteriori informazioni su come creare e gestire schemi esterni, consulta CREATE EXTERNAL SCHEMA nella documentazione di Amazon Redshift.<external_schema>
La LOCATION clausola definisce la posizione della tabella per questa tabella Iceberg appena creata. Per le tabelle Amazon S3, LOCATION non può essere specificato poiché la posizione della tabella è determinata dal catalogo delle tabelle Amazon S3 (). s3tablescatalog
In tutti gli altri casi, LOCATION è obbligatorio e deve essere una posizione vuota, il che significa che non ci sono oggetti Amazon S3 esistenti che condividono lo stesso bucket e lo stesso prefisso. Tieni presente che la regione del bucket Amazon S3 deve trovarsi nella stessa regione del cluster Amazon Redshift.
Tuttavia, AWS fornisce un metodo per replicare i dati dalle tabelle Iceberg archiviate in una AWS Glue Data Catalog in una Regione AWS diversaRegione AWS, che consente di replicare la scrittura in una regione diversa. Per ulteriori informazioni, consulta Replicare i dati in modo incrociato. Regioni AWS
PARTITIONED BYdefinisce la partizione della tabella Iceberg. Amazon Redshift supporta tutte le trasformazioni di partizione Iceberg v2 ad eccezione di. void Ecco l'elenco delle trasformazioni supportate:
-
identità
-
secchio [N]
-
troncare [W]
-
anno
-
mese
-
giorno
-
ora
Per le definizioni complete di queste trasformazioni e dei tipi di dati compatibili, consulta Partition Transforms
Supporta il partizionamento a più livelli. PARTITIONED BY Ad esempio, puoi esegui il seguente comando:
CREATE TABLE ... USING ICEBERG LOCATION ... PARTITIONED BY (bucket(16, id), year(ship_date));
Tuttavia, Amazon Redshift non supporta l'utilizzo di una singola colonna in più di una trasformazione. Ad esempio, la seguente sintassi non è supportata:
CREATE TABLE ... USING ICEBERG LOCATION ... PARTITIONED BY (bucket(16, ship_date), year(ship_date));
La TABLE PROPERTIES clausola definisce le proprietà aggiuntive della tabella per questa tabella Iceberg. L'unica proprietà della tabella che supportiamo è quella compression_type che definisce la compressione predefinita dei file di dati di Parquet. Se questo non è specificato, snappy viene utilizzato come codec di compressione. I valori possibili per compression_type sono:zstd,brotli, gzipsnappy, euncompressed.
Nota
CREATE TABLE ... LIKE ...non è supportato per le tabelle Iceberg. Inoltre, le tabelle Iceberg non supportano i vincoli di colonna e gli attributi di colonna come fa la tabella RMS.
In alternativa, puoi creare e popolare una tabella Iceberg con un'unica operazione utilizzando: CREATE TABLE AS SELECT
CREATE TABLE AS SELECT
CREATE TABLE<external_schema>.<table_name>[( column_name[, ...] )] USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression-value>')] AS SELECT query
Puoi anche usare la notazione in tre parti per creare tabelle nei cataloghi montati automaticamente:
CREATE TABLE "<catalog_name>".<database_name>.<table_name>[( column_name[, ...] )] USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression-value>')] AS SELECT query
È simile all'CREATE TABLEistruzione, tranne per il fatto che CREATE è seguita da un'SELECTistruzione per popolare la tabella con i risultati della query. SELECT
La CREATE TABLE clausola qui non consente più di specificare i tipi di dati poiché i tipi di dati delle colonne verranno decisi SELECT dalla query.
Se la SELECT query fallisce per qualsiasi motivo, questa avrà esito negativo e la tabella Iceberg non verrà creata.
Puoi visualizzare la struttura delle tue tabelle Iceberg usando: SHOW
TABLE
SHOW TABLE
SHOW TABLE<external_schema>.<table_name>
Puoi anche usare la notazione in tre parti con cataloghi montati automaticamente:
SHOW TABLE "<catalog_name>".<database_name>.<table_name>
SHOW TABLEvisualizza l'CREATE TABLEistruzione per la tabella Iceberg. Il comando mostrerà i risultati appropriati in base al tipo di tabella. Di seguito è riportato un esempio dell'SHOW TABLEoutput per la tabella Iceberg:
CREATE TABLE my_schema.items (id int, price decimal(5, 2)) USING ICEBERG LOCATION 's3://my_s3_bucket/items/' PARTITIONED BY (bucket(16, id)) TABLE PROPERTIES ('compression_type'='snappy')
Nota
Per le tabelle Amazon S3, poiché la posizione della tabella è gestita dal catalogo di tabelle Amazon S3, LOCATION la clausola verrà omessa nei risultati. SHOW TABLE
Dopo aver creato le tabelle, puoi aggiungere dati utilizzando: INSERT INTO
INSERT INTO
INSERT INTO<external_schema>.<table_name>[(column_name [, ...])] VALUES (...) INSERT INTO<external_schema>.<table_name>[(column_name [, ...])] (SELECT query) -- Using three-part notation for S3 table buckets: INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name>[(column_name [, ...])] VALUES (...) INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name>[(column_name [, ...])] (SELECT query)
È possibile creare INSERT INTO una tabella Iceberg utilizzando la sintassi precedente. Se viene utilizzata una VALUES clausola, si forniscono i valori per le colonne elencate da column_name o per tutte le colonne se viene omessa column_name una parte.
Quando i dati vengono inseriti in una tabella partizionata, le nuove righe vengono distribuite in base alla specifica di partizione predefinita. Se per qualsiasi motivo la SELECT query fallisce, la query avrà esito negativo e nessun dato verrà inserito nella tabella Iceberg.
È possibile accedere a INSERT INTO una tabella Iceberg non creata da Amazon Redshift. Tuttavia, ci sono alcune limitazioni:
-
La tabella deve essere una tabella Iceberg v2.
-
La tabella deve utilizzare Parquet come formato dati predefinito.
-
La tabella non deve avere la compressione dei metadati impostata su True.
-
La tabella non deve essere abilitata Write-Audit-Publish (WAP).
Per rimuovere una tabella Iceberg dal catalogo, usa il DROP TABLE comando:
DROP TABLE
DROP TABLE<external_schema>.<table_name>
Puoi anche usare la notazione in tre parti con cataloghi montati automaticamente:
DROP TABLE "<catalog_name>.<database_name>.<table_name>
L'eliminazione di una tabella Iceberg è un'operazione che riguarda solo i metadati. Rimuove la voce della tabella da AWS Glue Data Catalog un catalogo di tabelle Amazon S3, se si tratta di una tabella Amazon S3. Amazon Redshift non pulisce o elimina alcun file di dati o file di metadati esistente sotto la posizione della tabella. Puoi utilizzare le funzionalità delle tabelle AWS Glue Amazon S3 per rimuovere file orfani. PerAWS Glue, consulta Eliminazione di file orfani. Per le tabelle Amazon S3, consulta Manutenzione delle tabelle.