Funzione LOWER_ATTRIBUTE_NAMES - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. 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à.

Funzione LOWER_ATTRIBUTE_NAMES

Converte tutti i nomi degli attributi applicabili in un valore SUPER in minuscolo, utilizzando la stessa routine di conversione in maiuscolo e minuscolo di Funzione LOWER. LOWER_ATTRIBUTE_NAMES supporta i caratteri multibyte UTF-8, fino a un massimo di quattro byte per carattere.

Per convertire i nomi degli attributi SUPER in maiuscolo, utilizza Funzione UPPER_ATTRIBUTE_NAMES.

Sintassi

LOWER_ATTRIBUTE_NAMES(super_expression)

Arguments (Argomenti)

super_expression

Un’espressione SUPER.

Tipo restituito

SUPER

Note per l’utilizzo

In Amazon Redshift, gli identificatori di colonna tradizionalmente non fanno distinzione tra maiuscole e minuscole e vengono convertiti in lettere minuscole. Se importi dati in formati che fanno distinzione tra maiuscole e minuscole come JSON, questi potrebbero contenere nomi di attributi in maiuscolo e minuscolo.

Analizza l’esempio seguente.

CREATE TABLE t1 (s) AS SELECT JSON_PARSE('{"AttributeName": "Value"}'); SELECT s.AttributeName FROM t1; attributename ------------- NULL SELECT s."AttributeName" FROM t1; attributename ------------- NULL

Amazon Redshift restituisce NULL per entrambe le query. Per eseguire query su AttributeName, utilizza LOWER_ATTRIBUTE_NAMES per convertire i nomi degli attributi dei dati in minuscolo. Analizza l’esempio seguente.

CREATE TABLE t2 (s) AS SELECT LOWER_ATTRIBUTE_NAMES(s) FROM t1; SELECT s.attributename FROM t2; attributename ------------- "Value" SELECT s.AttributeName FROM t2; attributename ------------- "Value" SELECT s."attributename" FROM t2; attributename ------------- "Value" SELECT s."AttributeName" FROM t2; attributename ------------- "Value"

Un’opzione correlata per l’utilizzo di nomi di attributi di oggetti con maiuscole e minuscole è l’opzione di configurazione enable_case_sensitive_super_attribute, che consente ad Amazon Redshift di riconoscere il maiuscolo e il minuscolo nei nomi degli attributi SUPER. Questa può essere una soluzione alternativa all’utilizzo di LOWER_ATTRIBUTE_NAMES. Per ulteriori informazioni su enable_case_sensitive_super_attribute, consulta enable_case_sensitive_super_attribute.

Esempi

Conversione dei nomi degli attributi SUPER in minuscolo

L’esempio seguente utilizza LOWER_ATTRIBUTE_NAMES per convertire i nomi degli attributi di tutti i valori SUPER in una tabella.

-- Create a table and insert several SUPER values. CREATE TABLE t (i INT, s SUPER); INSERT INTO t VALUES (1, NULL), (2, 'A'::SUPER), (3, JSON_PARSE('{"AttributeName": "B"}')), (4, JSON_PARSE( '[{"Subobject": {"C": "C"}, "Subarray": [{"D": "D"}, "E"] }]')); -- Convert all attribute names to lowercase. UPDATE t SET s = LOWER_ATTRIBUTE_NAMES(s); SELECT i, s FROM t ORDER BY i; i | s ---+-------------------------------------------------- 1 | NULL 2 | "A" 3 | {"attributename":"B"} 4 | [{"subobject":{"c":"C"},"subarray":[{"d":"D"}, "E"]}]

Osserva come funziona LOWER_ATTRIBUTE_NAMES.

  • I valori NULL e i valori SUPER scalari, come "A", sono invariati.

  • In un oggetto SUPER, tutti i nomi degli attributi vengono convertiti in minuscolo, ma i valori degli attributi, ad esempio "B", rimangono invariati.

  • LOWER_ATTRIBUTE_NAMES si applica in modo ricorsivo a qualsiasi oggetto SUPER annidato all’interno di un array SUPER o all’interno di un altro oggetto.

Utilizzo di LOWER_ATTRIBUTE_NAMES per un oggetto SUPER con nomi di attributi duplicati

Se un oggetto SUPER contiene attributi i cui nomi differiscono solo nel maiuscolo o nel minuscolo, LOWER_ATTRIBUTE_NAMES restituisce un errore. Analizza l’esempio seguente.

SELECT LOWER_ATTRIBUTE_NAMES(JSON_PARSE('{"A": "A", "a": "a"}')); error: Invalid input code: 8001 context: SUPER value has duplicate attributes after case conversion.