

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Limitações de dados aninhados (visualização)
<a name="nested-data-restrictions"></a>

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](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#cluster-preview) no *Guia de gerenciamento do Amazon Redshift*. 

As limitações a seguir se aplicam à dados aninhados:
+ Um tipo `map` ou `array` pode conter outros tipos `map` ou `array`, desde que as consultas em `arrays` ou `maps` aninhados não retornem valores `scalar`. (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 JOIN` refere-se a uma tabela aninhada, pode consultar somente a tabela e seus arrays aninhados (e mapas). Se uma expressão `OUTER JOIN` não refere-se a uma tabela aninhada, pode consultar qualquer número de tabelas não aninhadas.
+ Se uma cláusula `FROM` em 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áusula `SELECT` ou `WHERE`. Por exemplo, a consulta a seguir não é executada porque a cláusula `SELECT` da subconsulta se refere à tabela pai `c`. 

  ```
  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áusula `FROM` de 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 `FROM` deve retornar um valor único. As únicas exceções são os operadores `(NOT) EXISTS` em uma cláusula `WHERE`.
+ `(NOT) IN`Nã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 `arrays` e `maps` em sua cláusula `FROM`, 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](c-spectrum-external-tables.md#c-spectrum-external-tables-pseudocolumns). 
+ 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 forem `scalar`. Por exemplo, ambas as consultas a seguir tentam elementos `SELECT` por dentro de uma matriz. A consulta que seleciona `arr.a` funciona porque `arr.a` é um valor `scalar`. A segunda consulta não funciona porque `array` é uma matriz extraída de `s3.nested table` na cláusula `FROM`. (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 `FROM` que acompanha outra matriz ou mapa. Para selecionar matrizes ou outras estruturas complexas que estejam aninhadas dentro de outras matrizes, considere usar índices na instrução `SELECT`.