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à.
Limitazioni relative ai dati annidati (anteprima)
Questo argomento descrive le limitazioni per la lettura di dati annidati con Redshift Spectrum. I dati nidificati sono dati che contengono campi nidificati. I campi nidificati sono campi che vengono uniti come un'unica entità, come matrici, strutture o oggetti.
Nota
Le limitazioni contrassegnate (anteprima) nell'elenco seguente si applicano solo ai cluster di anteprima creati nelle seguenti regioni.
Stati Uniti orientali (Ohio) (us-east-2)
Stati Uniti orientali (Virginia settentrionale) (us-east-1)
Stati Uniti occidentali (California settentrionale) (us-west-1)
Asia Pacifico (Tokyo) (ap-northeast-1)
Europa (Irlanda) (eu-west-1)
Europa (Stoccolma) (eu-north-1)
Per informazioni sulla configurazione di cluster di anteprima, consulta Creazione di un cluster di anteprima nella Guida alla gestione di Amazon Redshift.
Le seguenti limitazioni si applicano ai dati nidificati:
-
Un tipo
arrayomappuò contenere altri tipiarrayomap, purché le query suarraysomapsannidati non restituiscano valoriscalar(anteprima). -
Amazon Redshift Spectrum supporta i tipi di dati complessi solo come tabelle esterne.
-
Le colonne dei risultati delle query secondarie devono essere di primo livello (anteprima).
-
Se un'espressione
OUTER JOINsi riferisce a una tabella nidificata, può fare riferimento solo a quella tabella e alle relative matrici (e mappe) nidificate. Se un'espressioneOUTER JOINnon si riferisce a una tabella nidificata, può fare riferimento a qualsiasi numero di tabelle non nidificate. -
Se una clausola
FROMin una query secondaria si riferisce a una tabella nidificata, non può fare riferimento a nessun'altra tabella. -
Se una query secondaria dipende da una tabella nidificata che si riferisce a una tabella padre, la query secondaria può utilizzare la tabella padre solo nella clausola
FROM. Non puoi utilizzare l'elemento padre in un'altra clausola, ad esempio una di tipoSELECToWHERE. Ad esempio, la seguente query non viene eseguita perché la clausolaSELECTdella query secondaria si riferisce alla tabella padrec.SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(c.id) FROM c.phones p WHERE p LIKE '858%') > 1;La query riportata sotto viene eseguita perché l'elemento
cè utilizzato solo nella clausolaFROMdella query secondaria.SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(*) FROM c.phones p WHERE p LIKE '858%') > 1; -
Una query secondaria che accede ai dati nidificati non dalla clausola
FROMdeve restituire un unico valore. Fanno eccezione solo gli operatori(NOT) EXISTSin una clausolaWHERE. -
(NOT) INnon è supportato. -
La profondità di nidificazione massima per tutti i tipi nidificati è 100. Questa restrizione si applica a tutti i formati di file (Parquet, ORC, Ion e JSON).
-
Le query secondarie di aggregazione che accedono a dati nidificati possono fare riferimento solo ad
arraysemapsnella loro clausolaFROM, non a una tabella esterna. -
L'esecuzione di query sulle pseudocolonne di dati nidificati in una tabella di Redshift Spectrum non è supportata. Per ulteriori informazioni, consulta Pseudocolonne.
-
Quando si estraggono i dati da colonne di matrici o mappe specificate in una clausola
FROM, è possibile selezionare i valori dalle colonne solo se i valori sonoscalar. Ad esempio, le seguenti query tentano entrambe di eseguireSELECTper gli elementi dall'interno di una matrice. La query che selezionaarr.ariesce perchéarr.aè un valorescalar. La seconda query non riesce perchéarrayè una matrice estratta das3.nested tablenella clausolaFROM(anteprima).SELECT array_column FROM s3.nested_table;array_column ----------------- [{"a":1},{"b":2}]SELECT arr.a FROM s3.nested_table t, t.array_column arr;arr.a ----- 1--This query fails to run. SELECT array FROM s3.nested_table tab, tab.array_column array;Non è possibile utilizzare una matrice o una mappa nella clausola
FROMche a sua volta proviene da un'altra matrice o mappa. Per selezionare matrici o altre strutture complesse annidate all'interno di altre matrici, prendi in considerazione di usare gli indici nell'istruzioneSELECT.