Función OBJECT_TRANSFORM - Amazon Redshift

Función OBJECT_TRANSFORM

Transforma un objeto SUPER.

Sintaxis

OBJECT_TRANSFORM( input [KEEP path1, ...] [SET path1, value1, ..., ... ] )

Argumentos

input

Expresión que se convierte en un objeto de tipo SUPER.

KEEP

Todos los valores de path especificados en esta cláusula se conservan y se trasladan al objeto de salida.

Esta cláusula es opcional.

path1, path2, ...

Literales de cadena constantes, en formato de componentes de ruta entre comillas dobles delimitados por puntos. Por ejemplo, '"a"."b"."c"' es un valor válido. Esto se aplica al parámetro path de las cláusulas KEEP y SET.

SET

Pares de path y value para modificar una ruta existente o añadir una nueva y establecer el valor de esa ruta en el objeto de salida.

Esta cláusula es opcional.

value1, value2, ...

Expresiones que se resuelven en valores de tipo SUPER. Tenga en cuenta que los tipos numérico, de texto y booleano se pueden resolver en SUPER.

Tipo de retorno

SUPER

Notas de uso

OBJECT_TRANSFORM devuelve un objeto de tipo SUPER que contiene los valores de ruta input que se han especificado en KEEP y los pares de path y value que se han especificado en SET.

Si tanto KEEP como SET están vacíos, OBJECT_TRANSFORM devuelve input.

Si input no es un object de tipo SUPER, OBJECT_TRANSFORM devuelve input, independientemente de los valores KEEP o SET.

Ejemplo

En el siguiente ejemplo se transforma un objeto SUPER en otro objeto SUPER.

CREATE TABLE employees ( col_person SUPER ); INSERT INTO employees VALUES ( json_parse(' { "name": { "first": "John", "last": "Doe" }, "age": 25, "ssn": "111-22-3333", "company": "Company Inc.", "country": "U.S." } ') ), ( json_parse(' { "name": { "first": "Jane", "last": "Appleseed" }, "age": 34, "ssn": "444-55-7777", "company": "Organization Org.", "country": "Ukraine" } ') ) ; SELECT OBJECT_TRANSFORM( col_person KEEP '"name"."first"', '"age"', '"company"', '"country"' SET '"name"."first"', UPPER(col_person.name.first::TEXT), '"age"', col_person.age + 5, '"company"', 'Amazon' ) AS col_person_transformed FROM employees; --This result is formatted for ease of reading. col_person_transformed ------------------------------------------------------------- { "name": { "first": "JOHN" }, "age": 30, "company": "Amazon", "country": "U.S." } { "name": { "first": "JANE" }, "age": 39, "company": "Amazon", "country": "Ukraine" }