Limitazioni relative ai dati annidati (anteprima) - Amazon Redshift

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)

Nota

Le limitazioni contrassegnate con "(anteprima)" nell'elenco seguente si applicano solo ai cluster di anteprima e ai gruppi di lavoro 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. Per informazioni sulla configurazione dei gruppi di lavoro di anteprima, consulta Creazione di un gruppo di lavoro di anteprima nella Guida alla gestione di Amazon Redshift.

Le seguenti limitazioni si applicano ai dati nidificati:

  • Un tipo array o map può contenere altri tipi array o map, purché le query su arrays o maps annidati non restituiscano valori scalar (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 JOIN si riferisce a una tabella nidificata, può fare riferimento solo a quella tabella e alle relative matrici (e mappe) nidificate. Se un'espressione OUTER JOIN non si riferisce a una tabella nidificata, può fare riferimento a qualsiasi numero di tabelle non nidificate.

  • Se una clausola FROM in 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 tipo SELECT o WHERE. Ad esempio, la seguente query non viene eseguita perché la clausola SELECT della query secondaria si riferisce alla tabella padre c.

    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 clausola FROM della 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 FROM deve restituire un unico valore. Fanno eccezione solo gli operatori (NOT) EXISTS in una clausola WHERE.

  • (NOT) IN non è 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 arrays e maps nella loro clausola FROM, 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 sono scalar. Ad esempio, le seguenti query tentano entrambe di eseguire SELECT per gli elementi dall'interno di una matrice. La query che seleziona arr.a riesce perché arr.a è un valore scalar. La seconda query non riesce perché array è una matrice estratta da s3.nested table nella clausola FROM (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 FROM che 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'istruzione SELECT.