Configurazioni di SUPER - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Configurazioni di SUPER

Puoi configurare i dati SUPER per scenari specifici. Nelle sezioni seguenti vengono forniti i dettagli sulla scelta e sull’applicazione delle configurazioni SUPER appropriate in base ai requisiti di formato dei dati.

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 e in lettere maiuscole e minuscole

Quando i nomi degli attributi JSON sono in maiuscolo o in lettere maiuscole e minuscole, devi essere in grado di navigare nelle strutture di tipo SUPER facendo distinzione tra maiuscolo e minuscolo. A tale scopo puoi impostare enable_case_sensitive_identifier su TRUE e racchiudere i nomi degli attributi in maiuscolo e in lettere maiuscole e minuscole con 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 mixed-case 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 mixed-case 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)

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 Funzione JSON_PARSE.

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