Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del 1 de noviembre de 2025. Si desea utilizar las UDF de Python, créelas antes de esa fecha. Las UDF de Python existentes seguirán funcionando con normalidad. Para obtener más información, consulte la publicación del blog
Función LOWER_ATTRIBUTE_NAMES
Convierte todos los nombres de atributos aplicables de un valor SUPER a minúsculas, con la misma rutina de conversión de mayúsculas y minúsculas que Función LOWER. LOWER_ATTRIBUTE_NAMES admite caracteres multibyte UTF-8 de hasta un máximo de cuatro bytes por carácter.
Para convertir los nombres del atributo SUPER a mayúsculas, use Función UPPER_ATTRIBUTE_NAMES.
Sintaxis
LOWER_ATTRIBUTE_NAMES(super_expression)
Argumentos
- super_expression
-
Una expresión SUPER.
Tipo de retorno
SUPER
Notas de uso
En Amazon Redshift, los identificadores de columna tradicionalmente no distinguen entre mayúsculas y minúsculas y se convierten a minúsculas. Si ingiere datos de formatos de datos que distinguen mayúsculas de minúsculas, como JSON, es posible que los datos contengan nombres de atributos con mayúsculas y minúsculas.
Considere el siguiente ejemplo.
CREATE TABLE t1 (s) AS SELECT JSON_PARSE('{"AttributeName": "Value"}'); SELECT s.AttributeName FROM t1;attributename ------------- NULLSELECT s."AttributeName" FROM t1;attributename ------------- NULL
Amazon Redshift devuelve un valor NULL para ambas consultas. Para realizar consultas de AttributeName, utilice LOWER_ATTRIBUTE_NAMES para convertir los nombres de los atributos de los datos a minúsculas. Considere el siguiente ejemplo.
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"
Una opción relacionada para trabajar con nombres de atributos de objetos en mayúsculas y minúsculas es la opción de configuración enable_case_sensitive_super_attribute, que permite a Amazon Redshift reconocer mayúsculas y minúsculas en los nombres de atributo SUPER. Esta puede ser una solución alternativa al uso de LOWER_ATTRIBUTE_NAMES. Para obtener más información sobre enable_case_sensitive_super_attribute, diríjase a enable_case_sensitive_super_attribute.
Ejemplos
Conversión de los nombres de los atributos SUPER a minúsculas
En el siguiente ejemplo, se utiliza LOWER_ATTRIBUTE_NAMES para convertir los nombres de los atributos de todos los valores SUPER de una tabla.
-- 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"]}]
Observe cómo funciona LOWER_ATTRIBUTE_NAMES.
Los valores NULL y los valores escalares SUPER como
"A"permanecen inalterados.En un objeto SUPER, todos los nombres de los atributos se cambian a minúsculas, pero los valores de los atributos, como
"B", permanecen inalterados.LOWER_ATTRIBUTE_NAMES se aplica de forma recursiva a cualquier objeto SUPER que esté anidado dentro de una matriz SUPER o dentro de otro objeto.
Uso de LOWER_ATTRIBUTE_NAMES en un objeto SUPER con nombres de atributos duplicados
Si un objeto SUPER contiene atributos cuyos nombres solo difieren en las mayúsculas y minúsculas, LOWER_ATTRIBUTE_NAMES generará un error. Considere el siguiente ejemplo.
SELECT LOWER_ATTRIBUTE_NAMES(JSON_PARSE('{"A": "A", "a": "a"}'));error: Invalid input code: 8001 context: SUPER value has duplicate attributes after case conversion.