Configurazioni di SUPER - 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à.

Configurazioni di SUPER

Notare le seguenti considerazioni relative alle configurazioni SUPER quando si utilizza il tipo di dati SUPER di Amazon Redshift e PartiQL.

Modalità permissiva e rigorosa per SUPER

Quando si esegue una query sui dati SUPER, l'espressione del percorso potrebbe non corrispondere alla struttura di dati SUPER effettiva. Se si prova ad accedere a un membro inesistente di un oggetto o di un elemento di un array, Amazon Redshift restituisce un valore NULL se la query viene eseguita nella modalità permissiva di default. Se si esegue la query in modalità rigorosa, Amazon Redshift restituisce un errore. I seguenti parametri di sessione possono essere impostati per attivare o disattivare la modalità permissiva.

Nell'esempio seguente vengono utilizzati i parametri di sessione per abilitare la modalità permissiva.

SET navigate_super_null_on_error=ON; --default lax mode for navigation SET cast_super_null_on_error=ON; --default lax mode for casting SET parse_super_null_on_error=OFF; --default strict mode for ingestion

Accesso ai campi JSON con nomi di campi o attributi in maiuscolo o maiuscolo e minuscolo

Quando i nomi degli attributi JSON sono in maiuscolo o in lettere maiuscole e minuscole, è necessario essere in grado di navigare nelle strutture di tipo SUPER facendo distinzione tra maiuscole e minuscole. Per farlo, puoi configurare enable_case_sensitive_identifier su TRUE e racchiudere i nomi degli attributi in maiuscolo e in lettere maiuscole e minuscole con virgolette doppie. Puoi anche configurare enable_case_sensitive_super_attribute su TRUE. In questo caso, puoi utilizzare nomi di attributi in maiuscolo e in maiuscolo e minuscolo nelle query senza racchiuderli tra virgolette doppie.

Nell'esempio seguente viene mostrato come impostare enable_case_sensitive_identifier per eseguire query sui dati.

SET enable_case_sensitive_identifier to TRUE; -- Accessing JSON attribute names with uppercase and mixedcase names SELECT json_table.data."ITEMS"."Name", json_table.data."price" FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; Name | price ------+------- "TV" | 345 (1 row) RESET enable_case_sensitive_identifier; -- After resetting the above configuration, the following query accessing JSON attribute names with uppercase and mixedcase names should return null (if in lax mode). SELECT json_table.data."ITEMS"."Name", json_table.data."price" FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; name | price ------+------- | 345 (1 row)

Nell'esempio seguente viene mostrato come impostare enable_case_sensitive_super_attribute per eseguire query sui dati.

SET enable_case_sensitive_super_attribute to TRUE; -- Accessing JSON attribute names with uppercase and mixedcase names SELECT json_table.data.ITEMS.Name, json_table.data.price FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; name | price -----+------- "TV" | 345 (1 row) RESET enable_case_sensitive_super_attribute; -- After resetting enable_case_sensitive_super_attribute, the query now returns NULL for ITEMS.Name (if in lax mode). SELECT json_table.data.ITEMS.Name, json_table.data.price FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; name | price -----+------- | 345 (1 row)

Opzioni di analisi per SUPER

Quando si utilizza la funzione JSON_PARSE per analizzare le stringhe JSON in valori SUPER, si applicano alcune restrizioni:

  • Lo stesso nome di attributo non può essere visualizzato nello stesso oggetto, ma può essere visualizzato in un oggetto annidato. L'opzione di configurazione json_parse_dedup_attributes consente a JSON_PARSE di mantenere solo l'ultima occorrenza di attributi duplicati anziché restituire un errore.

  • I valori di stringa non possono superare la dimensione massima varchar del sistema di 65535 byte. L'opzione di configurazione json_parse_truncate_strings consente a JSON_PARSE() di troncare automaticamente le stringhe più lunghe di questo limite senza restituire un errore. Questo comportamento influisce solo sui valori di stringa e non sui nomi degli attributi.

Per ulteriori informazioni sull'utilizzo della funzione JSON_PARSE, consulta JSONPARSEfunzione _.

Gli esempi seguenti mostrano come configurare l'opzione di configurazione json_parse_dedup_attributes per il comportamento di default di restituire un errore per gli attributi duplicati.

SET json_parse_dedup_attributes=OFF; --default behavior of returning error instead of de-duplicating attributes

Gli esempi seguenti mostrano come impostare l'opzione di configurazione json_parse_truncate_strings per il comportamento di default di restituire un errore per le stringhe più lunghe di questo limite.

SET json_parse_truncate_strings=OFF; --default behavior of returning error instead of truncating strings