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.
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çãojson_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.