Limitações conhecidas para tabelas dinâmicas¶
Este tópico descreve as limitações dos seguintes recursos de tabela dinâmica:
Limitações gerais¶
As seguintes limitações gerais se aplicam ao uso de tabelas dinâmicas:
Uma única conta pode conter no máximo 4.000 tabelas dinâmicas.
Na definição de uma tabela dinâmica:
Você não pode consultar mais de 100 tabelas.
Você não pode consultar mais de 100 tabelas dinâmicas.
Você não pode truncar dados de uma tabela dinâmica.
Você não pode criar uma tabela dinâmica temporária.
Quando você usa uma tabela dinâmica para ingerir dados compartilhados, a consulta não pode selecionar uma tabela dinâmica compartilhada ou uma exibição segura compartilhada que faça referência a uma tabela dinâmica upstream.
Você não pode usar funções secundárias com tabelas dinâmicas porque as atualizações de tabelas dinâmicas atuam como função de proprietário. Para obter mais informações, consulte Modelo de aplicação com funções primárias e secundárias.
Você não pode definir o parâmetro de objeto DATA_RETENTION_TIME_IN_DAYS em suas tabelas de origem como zero.
Você não pode usar SQL dinâmico (por exemplo, variáveis de sessão ou variáveis não vinculadas de blocos anônimos) na definição da tabela dinâmica.
Em uma definição de tabela dinâmica, blocos SELECT que leem de funções de tabela definidas pelo usuário (UDTF) devem especificar colunas explicitamente e não podem usar
*
.Tabelas dinâmicas podem ficar obsoletas se não forem atualizadas dentro do período MAX_DATA_EXTENSION_TIME_IN_DAYS das tabelas de entrada. Uma vez obsoletas, as tabelas dinâmicas devem ser recriadas para retomar as atualizações.
Tabelas dinâmicas atualmente não oferecem suporte ao rastreamento no Exibição ACCESS_HISTORY. Isso significa que consultas e operações realizadas em tabelas dinâmicas não são capturadas no ACCESS_HISTORY do Snowflake para fins de auditoria ou monitoramento.
Tipos de dados suportados¶
As tabelas dinâmicas oferecem suporte a todos os tipos de dados SQL do Snowflake para atualização incremental e completa, exceto:
Tipos de dados estruturados.
Tipos de dados geoespaciais (somente atualização completa).
Limitações nas construções de consulta¶
As construções a seguir não são suportadas atualmente na consulta para uma tabela dinâmica. Se você especificá-las na consulta, ocorrerá um erro:
Funções que dependem de CURRENT_USER. As atualizações da tabela dinâmica atuam como função de proprietário com um usuário SYSTEM especial.
Fontes que incluem tabelas de diretório, tabelas externas, fluxos e exibições materializadas.
Exibições em tabelas dinâmicas ou outros objetos sem suporte.
Funções de tabela definidas pelo usuário (UDTF) escritas em SQL.
Funções definidas pelo usuário (UDF) escritas em SQL que contêm uma subconsulta (por exemplo, uma instrução SELECT).
Construções PIVOT e UNPIVOT não são compatíveis com atualizações incrementais ou completas.
Os constructos SAMPLE / TABLESAMPLE não são compatíveis com atualizações incrementais ou completas de tabelas dinâmicas.
Suporte para interações entre recursos¶
As seguintes interações entre recursos não são suportadas:
Uso do Query Acceleration Service (QAS) para atualizações da tabela dinâmica.
Políticas de mascaramento com funções de banco de dados em tabelas compartilhadas.
As seguintes limitações se aplicam a interações entre recursos:
Tabelas dinâmicas e tabelas base que estão em grupos de failover diferentes causam falha na replicação.
Suporte para atualizações incrementais¶
Esta seção descreve as expressões, cláusulas e funções que atualmente não são suportadas para atualização incremental de tabela dinâmica. Se uma consulta usar isso, o processo de atualização automatizada usará uma atualização completa, que poderá consumir mais créditos. Consulte Como determinar se é usada uma atualização incremental ou completa.
Funções não determinísticas não são suportadas com atualizações incrementais, mas algumas funções não determinísticas são suportadas com atualizações completas.
Quando você cria uma tabela dinâmica, o valor padrão para o modo de atualização é AUTO
, que seleciona uma atualização incremental da tabela dinâmica. Se a instrução CREATE DYNAMIC TABLE não oferecer suporte à atualização incremental, a atualização completa é automaticamente escolhida como o modo de atualização.
Para determinar o modo de atualização mais adequado para seu caso de uso, experimente modos de atualização e recomendações automáticas. Para um comportamento consistente em todas as versões do Snowflake, defina explicitamente o modo de atualização em todas as tabelas dinâmicas. Por exemplo, se você quiser que suas tabelas dinâmicas sejam atualizadas apenas de forma incremental, você deve definir explicitamente o modo de atualização como INCREMENTAL
ao criá-las. Para obter mais informações, consulte Definição do modo de atualização para todas as tabelas dinâmicas de produção.
Para verificar o modo de atualização de suas tabelas dinâmicas, consulte Exibição do modo de atualização de tabela dinâmica.
Construções, operadores e funções não suportados¶
Atualmente, as tabelas dinâmicas não oferecem suporte a atualizações incrementais de alguns constructos, operadores e funções. Se você especificar o seguinte na consulta, a tabela dinâmica será atualizada por meio de uma atualização completa:
-
UNION, MINUS, EXCEPT, INTERSECT.
Os seguintes usos de UNION [ ALL ]:
UNION ALL de uma tabela e ela mesma ou um clone dela mesma.
UNION ALL entre um GROUP BY ou DISTINCT e outro GROUP BY ou DISTINCT.
Todos os operadores de subconsulta.
Os seguintes padrões de junção externa (esquerda, direita ou completa):
Junções externas onde ambos os lados são a mesma tabela.
Junções externas onde ambos os lados são uma subconsulta com cláusulas GROUP BY.
Junções externas com predicados de não igualdade.
Os seguintes usos das funções de janela:
Várias funções de janela na mesma definição de tabela dinâmica, onde as cláusulas PARTITION BY não são idênticas ou aparecem em blocos de consulta separados.
Usando as funções de janela PERCENT_RANK, DENSE_RANK, RANK com quadros de janela deslizantes.
Usando ANY_VALUE porque é uma função não determinística.
Os seguintes usos de funções definidas pelo usuário (UDF):
UDFs e UDTFs escritas em Python, Java, Scala ou Javascript e especificando o parâmetro VOLATILE.
SQL e UDFs que contêm subconsultas.
Junções LATERAL, exceto para usar LATERAL com FLATTEN().
Não é possível selecionar a coluna SEQ nivelada a partir de uma junção nivelada lateral. Para obter mais informações, consulte Consultas suportadas na atualização incremental.
Limitações adicionais com atualização incremental¶
Políticas de mascaramento e acesso a linhas¶
Políticas de mascaramento ou acesso a linhas em uma tabela dinâmica não afetam seu modo de atualização. Entretanto, as políticas aplicadas nas tabelas de origem podem afetar o modo de atualização:
A atualização incremental é possível se as políticas nas tabelas de origem usarem a função CURRENT_ROLE.
A atualização incremental não é aceita se as políticas nas tabelas de origem usarem quaisquer outras funções, exibições INFORMATION_SCHEMA ou consulta de uma tabela (por exemplo, uma pesquisa de tabela de mapeamento).
Replicação¶
As tabelas dinâmicas replicadas com atualização incremental são reinicializadas após o failover, antes que elas possam retomar a atualização incremental.
Para obter mais informações, consulte Replicação e tabelas dinâmicas.
Clonagem¶
Tabelas dinâmicas incrementais clonadas podem precisar ser reinicializadas durante a primeira atualização após serem criadas
Se uma tabela dinâmica for clonada de outra tabela dinâmica com tabelas base descartadas, o clone será suspenso e não poderá ser retomado ou atualizado.