Configuraciones SUPER - Amazon Redshift

Configuraciones SUPER

Tenga en cuenta las siguientes consideraciones acerca de las configuraciones SUPER cuando utilice el tipo de datos SUPER de Amazon Redshift y PartiQL.

Modos laxo y estricto de SUPER

Cuando consulta datos SUPER, la expresión de ruta puede no concordar con la estructura real de los datos SUPER. Si intenta acceder a un miembro inexistente de un objeto o un elemento de una matriz, Amazon Redshift devuelve un valor NULL cuando la consulta se ejecuta en el modo laxo predeterminado. Si ejecuta la consulta en el modo estricto, Amazon Redshift devuelve un error. Los siguientes parámetros de sesión se pueden configurar para activar o desactivar el modo laxo.

En el siguiente ejemplo, se utilizan parámetros de sesión para habilitar el modo laxo.

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

Acceso a campos JSON con nombres de campo o atributos en mayúsculas y con mayúsculas y minúsculas combinadas

Cuando los nombres de los atributos JSON están en mayúsculas o en mayúsculas y minúsculas combinadas, debe poder navegar por las estructuras de tipo SUPER con distinción entre mayúsculas y minúsculas. Para ello, puede configurar enable_case_sensitive_identifier en TRUE e incluir entre comillas dobles los nombres de atributo en mayúsculas y en mayúsculas y minúsculas combinadas. También puede configurar enable_case_sensitive_super_attribute en TRUE. En este caso, puede utilizar nombres de atributo en mayúsculas y en mayúsculas y minúsculas combinadas en las consultas sin incluirlos entre comillas dobles.

En el siguiente ejemplo, se ilustra cómo establecer enable_case_sensitive_identifier para consultar datos.

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)

En el siguiente ejemplo, se ilustra cómo establecer enable_case_sensitive_super_attribute para consultar datos.

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)

Opciones de análisis de SUPER

Cuando utiliza la función JSON_PARSE para analizar cadenas JSON en valores SUPER, se aplican determinadas restricciones:

  • El mismo nombre de atributo no puede aparecer en el mismo objeto, pero puede aparecer en un objeto anidado. La opción de configuración json_parse_dedup_attributes permite a JSON_PARSE conservar solo la última aparición de atributos duplicados en lugar de devolver un error.

  • Los valores de cadena no pueden superar el tamaño varchar máximo del sistema de 65535 bytes. La opción de configuración json_parse_truncate_strings permite a JSON_PARSE() truncar automáticamente cadenas que superan este límite sin devolver un error. Este comportamiento solo afecta a los valores de cadena y no a los nombres de atributos.

Para obtener más información acerca de la función ‎JSON_PARSE, consulte Función JSON_PARSE.

En el siguiente ejemplo se muestra cómo configurar la opción json_parse_dedup_attributes al comportamiento predeterminado de devolver un error para atributos duplicados.

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

En el siguiente ejemplo se muestra cómo configurar la opción json_parse_truncate_strings para el comportamiento predeterminado de devolver un error para cadenas que ya no tienen este límite.

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