View a markdown version of this page

Limitações - Amazon Redshift

O Amazon Redshift deixará de oferecer suporte ao uso de UDFs em Python após 30 de junho de 2026. Começaremos a aplicar essa alteração em fases. Consulte mais informações sobre os detalhes do fim da vida útil do Python e as opções de migração na publicação do blog publicada em 30 de junho de 2025.

Limitações

Com o Amazon Redshift, é possível trabalhar com o tipo de dados SUPER para armazenar e consultar dados semiestruturados, como JSON, Avro ou Ion. As limitações do tipo de dados SUPER estão relacionadas aos limites e restrições existentes quando se usa esse tipo de dados no Amazon Redshift. As seções a seguir apresentam detalhes sobre as limitações específicas do tipo de dados SUPER, como tamanho máximo, níveis de aninhamento e tipos de dados compatíveis no conjunto de dados semiestruturados.

  • 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.

  • A profundidade máxima de aninhamento para matrizes e estruturas do tipo de dados SUPER é 1.000.

  • Qualquer string literal armazenada em um único objeto SUPER é limitada a 16 milhões de bytes.

  • Caso contrário, um valor individual dentro de um objeto SUPER é limitado ao comprimento máximo do tipo do Amazon Redshift correspondente.

  • Ao usar o comando COPY para carregar dados em uma coluna SUPER a partir de um formato baseado em linhas (TEXT, CSV, JSON, AVRO), toda a linha deve caber no buffer do scanner do COPY, que é de 64 MB por padrão. O limite de 64 MB do scanner não se aplica a formatos colunares (PARQUET, ORC). Em todos os casos, cada objeto SUPER está limitado a 16 MB, independentemente do formato de origem.

  • A opção TRUNCATECOLUMNS do comando COPY, quando compatível, aplica-se apenas a colunas VARCHAR e não trunca valores de cadeia de caracteres em colunas SUPER.

  • 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.

  • Não é possível realizar o desaninhamento nem a remoção dinâmica de objetos em colunas SUPER produzidas por uma expressão de tabela comum (CTE) recursiva (WITH RECURSIVE). Para ter mais informações sobre CTEs recursivas, consulte Expressões de tabela comuns recursivas.

  • 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)
  • 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.