Limitações - Amazon Redshift

Limitações

Ao usar o tipo de dado SUPER, considere as seguintes limitações:

  • Você não pode definir colunas SUPER como uma distribuição ou chave de classificação.

  • Um objeto SUPER individual pode armazenar até 16 MB de dados.

  • Um valor individual dentro de um objeto SUPER é limitado ao comprimento máximo do tipo do Amazon Redshift correspondente. Por exemplo, um único valor de string carregado para SUPER é limitado ao comprimento máximo de VARCHAR de 65535 bytes.

  • Você não pode executar operações de atualização parcial ou transformação em colunas SUPER.

  • Você não pode usar o tipo de dados SUPER e seu alias em junções à direita ou junções externas completas.

  • O tipo de dados SUPER não suporta XML como formato de serialização de entrada ou saída.

  • Na cláusula FROM de uma subconsulta (que está correlacionada ou não) que faz referência a uma variável de tabela para desaninhamento, a consulta só pode se referir à sua tabela pai e não a outras tabelas.

  • Limitações de conversão

    Os valores SUPER podem ser convertidos de e para outros tipos de dados, com as seguintes exceções:

    • O Amazon Redshift não diferencia inteiros e decimais da escala 0.

    • Se a escala não for zero, o tipo de dados SUPER terá o mesmo comportamento de outros tipos de dados do Amazon Redshift, exceto que o Amazon Redshift converte erros relacionados ao Super-em nulo, conforme mostrado no exemplo a seguir.

      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)
    • O Amazon Redshift não converte os tipos de data e hora para o tipo de dados SUPER. O Amazon Redshift só pode converter os tipos de dados de data e hora do tipo de dados SUPER, conforme mostrado no exemplo a seguir.

      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
    • Converter de valores não escalares (objeto e array) para string retorna NULL. Para serializar adequadamente esses valores não escalares, não os converta. Em seu lugar, use json_serialize para converter valores não escalares. A função json_serialize retorna um varchar. Normalmente, você não precisa converter valores não escalares para o varchar, pois o Amazon Redshift serializa implicitamente, conforme mostrado no primeiro exemplo a seguir.

      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)
    • Para bancos de dados que não diferenciam maiúsculas e minúsculas, o Amazon Redshift não oferece suporte ao tipo de dados Para colunas que não diferenciam maiúsculas e minúsculas, o Amazon Redshift não as converte no tipo SUPER. Assim, o Amazon Redshift não suporta colunas SUPER interagindo com colunas que não diferenciam maiúsculas e minúsculas que acionam a conversão

  • O Amazon Redshift não oferece suporte a funções voláteis, como RANDOF () ou TIMEOFDAY (), em subconsultas que unnest uma tabela externa ou um lado esquerdo (LHS) de funções IN com tais subconsultas.