O Amazon Redshift não permitirá mais a criação de funções definidas pelo usuário (UDFs) do Python a partir de 1.º de novembro de 2025. Se quiser usar UDFs do Python, você deve criá-las antes dessa data. As UDFs do Python existentes continuarão a funcionar normalmente. Para ter mais informações, consulte a publicação de blog
Limitações de dados aninhados (visualização)
Este tópico descreve as limitações referentes à leitura de dados aninhados com o Redshift Spectrum. Dados aninhados são dados que contêm campos aninhados. Campos aninhados são campos unidos como uma única entidade (por exemple, matrizes, structs ou objetos).
nota
As limitações marcadas (visualização prévia) na lista a seguir só se aplicam a clusters de visualização prévia criados nas regiões a seguir.
Leste dos EUA (Ohio) (us-east-2)
Leste dos EUA (Norte da Virgínia) (us-east-1)
Oeste dos EUA (Norte da Califórnia) (us-west-1)
Ásia Pacific (Tóquio) (ap-northeast-1)
Europa (Irlanda) (eu-west-1)
UE (Estocolmo) (eu-north-1)
Para obter informações sobre como configurar clusters de visualização, consulte Creating a preview cluster no Guia de gerenciamento do Amazon Redshift.
As limitações a seguir se aplicam à dados aninhados:
-
Um tipo
mapouarraypode conter outros tiposmapouarray, desde que as consultas emarraysoumapsaninhados não retornem valoresscalar. (visualização) -
O Amazon Redshift Spectrum só dá suporte a tipos de dados complexos como tabelas externas.
-
As colunas de resultado da subconsulta devem estar no nível superior. (visualização)
-
Se uma expressão
OUTER JOINrefere-se a uma tabela aninhada, pode consultar somente a tabela e seus arrays aninhados (e mapas). Se uma expressãoOUTER JOINnão refere-se a uma tabela aninhada, pode consultar qualquer número de tabelas não aninhadas. -
Se uma cláusula
FROMem uma subconsulta refere-se a uma tabela aninhada, não pode consultar de outra tabela. -
Se uma subconsulta depende de uma tabela aninhada referente a uma tabela pai, você só pode usar a tabela pai na cláusula
FROM. Você não pode usar o pai em nenhuma outra cláusula, como a cláusulaSELECTouWHERE. Por exemplo, a consulta a seguir não é executada porque a cláusulaSELECTda subconsulta se refere à tabela paic.SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(c.id) FROM c.phones p WHERE p LIKE '858%') > 1;A consulta a seguir funciona porque o pai
cé usado apenas na cláusulaFROMde uma subconsulta.SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(*) FROM c.phones p WHERE p LIKE '858%') > 1; -
Uma subconsulta que acessa dados aninhados em qualquer lugar, diferente da cláusula
FROMdeve retornar um valor único. As únicas exceções são os operadores(NOT) EXISTSem uma cláusulaWHERE. -
(NOT) INNão há suporte ao . -
A profundidade máxima de assentamento para todos os tipos aninhados é de 100. Essa restrição aplica-se a todos os formatos de arquivo (Parquet, ORC, Ion e JSON).
-
Subconsultas de agregação que acessam dados aninhadas podem se referir somente a
arraysemapsem sua cláusulaFROM, e não a uma tabela externa. -
Não há suporte para consultar as pseudocolunas de dados aninhados em uma tabela do Redshift Spectrum. Para obter mais informações, consulte Pseudocolunas.
-
Ao extrair dados das colunas de matriz ou mapa especificando-os em uma cláusula
FROM, você só poderá selecionar valores dessas colunas se os valores foremscalar. Por exemplo, ambas as consultas a seguir tentam elementosSELECTpor dentro de uma matriz. A consulta que selecionaarr.afunciona porquearr.aé um valorscalar. A segunda consulta não funciona porquearrayé uma matriz extraída des3.nested tablena cláusulaFROM. (visualização)SELECT array_column FROM s3.nested_table;array_column ----------------- [{"a":1},{"b":2}]SELECT arr.a FROM s3.nested_table t, t.array_column arr;arr.a ----- 1--This query fails to run. SELECT array FROM s3.nested_table tab, tab.array_column array;Você não pode usar uma matriz ou um mapa na cláusula
FROMque acompanha outra matriz ou mapa. Para selecionar matrizes ou outras estruturas complexas que estejam aninhadas dentro de outras matrizes, considere usar índices na instruçãoSELECT.