Limitaciones - Amazon Redshift

Limitaciones

Con Amazon Redshift, puede trabajar con el tipo de datos SUPER para almacenar y consultar datos semiestructurados como JSON, Avro o Ion. Las limitaciones de los tipos de datos SUPER se refieren a las restricciones y los límites cuando se utiliza este tipo de datos en Amazon Redshift. En las siguientes secciones se proporcionan detalles sobre las limitaciones específicas del tipo de datos SUPER, como el tamaño máximo, los niveles de anidación y los tipos de datos admitidos en los datos semiestructurados.

  • No se pueden definir columnas SUPER como clave de distribución ni de ordenación.

  • Un objeto SUPER individual puede almacenar hasta 16 MB de datos.

  • Un valor individual dentro de un objeto SUPER se limita a la longitud máxima del tipo de Amazon Redshift correspondiente. Por ejemplo, un único valor de cadena cargado en SUPER se limita a la longitud máxima de VARCHAR de 65 535 bytes.

  • No se pueden realizar operaciones parciales de actualización ni transformación en las columnas SUPER.

  • No se puede usar el tipo de datos SUPER ni su alias en uniones correctas ni uniones externas completas.

  • El tipo de datos SUPER no admite XML como formato de serialización entrante ni saliente.

  • En la cláusula FROM de una subconsulta (correlacionada o no) que referencia una variable de tabla para eliminar el anidamiento, la consulta solo puede hacer referencia a su tabla principal y no a otras tablas.

  • Limitaciones de conversión

    Los valores SUPER se pueden convertir en otros tipos de datos y a partir de otros tipos de datos, con las siguientes excepciones:

    • Amazon Redshift no diferencia entre números enteros y decimales de la escala 0.

    • Si la escala no es cero, el tipo de datos SUPER tiene el mismo comportamiento que otros tipos de datos de Amazon Redshift, excepto que Amazon Redshift convierte los errores relacionados con el tipo SUPER en valores nulos, como se muestra en el siguiente ejemplo.

      SELECT 5::bool; bool ------- True (1 row) SELECT 5::decimal::bool; ERROR: cannot cast type numeric to boolean SELECT 5::super::bool; bool ------- True (1 row) SELECT 5.0::bool; ERROR: cannot cast type numeric to boolean SELECT 5.0::super::bool; bool ------- (1 row)
    • Amazon Redshift no convierte los tipos de fecha y hora en tipo de datos SUPER. Amazon Redshift solo puede convertir el tipo de datos SUPER en tipos de datos de fecha y hora, como se muestra en el siguiente ejemplo.

      SELECT o.o_orderdate FROM customer_orders_lineitem c,c.c_orders o; order_date ------------------ "2001-09-08" (1 row) SELECT JSON_TYPEOF(o.o_orderdate) FROM customer_orders_lineitem c,c.c_orders o; json_typeof ----------------- string (1 row) SELECT o.o_orderdate::date FROM customer_orders_lineitem c,c.c_orders o; order_date ---------------- 2001-09-08 (1 row) --date/time cannot be cast to super SELECT '2019-09-09'::date::super; ERROR: cannot cast type date to super
    • La conversión de valores no escalares (objeto y matriz) en cadenas devuelve el valor NULL. Para serializar correctamente estos valores no escalares, no los convierta. En su lugar, utilice json_serialize para convertir los valores no escalares. La función json_serialize devuelve un varchar. Por lo general, no es necesario convertir valores no escalares en varchar, ya que Amazon Redshift lleva a cabo serializaciones de forma implícita, como se muestra en el primer ejemplo siguiente.

      SELECT r_nations FROM region_nations WHERE r_regionkey=300; r_nations ---------------- [1,"abc",null] (1 row) SELECT r_nations::varchar FROM region_nations WHERE r_regionkey=300; r_nations ------------- (1 row) SELECT JSON_SERIALIZE(r_nations) FROM region_nations WHERE r_regionkey=300; json_serialize ----------------- [1,"abc",null] (1 row)
    • En el caso de las bases de datos que no distinguen mayúsculas de minúsculas, Amazon Redshift no admite el tipo de datos SUPER. En el caso de las columnas que no distinguen mayúsculas de minúsculas, Amazon Redshift no las convierte en el tipo SUPER. Por lo tanto, Amazon Redshift no admite que las columnas SUPER interactúen con columnas que no distinguen mayúsculas de minúsculas y que desencadenan la conversión.

  • Amazon Redshift no admite las funciones volátiles, como RANDOM ( ) o TIMEOFDAY ( ), en las subconsultas que eliminan el anidamiento de una tabla externa o un lado izquierdo (LHS) de funciones IN con dichas subconsultas.