Consultas compatíveis para tabelas dinâmicas

As tabelas dinâmicas são compatíveis com as expressões SQL padrão e com as funções compatíveis com o Snowflake, incluindo operações matemáticas, funções de cadeia de caracteres, funções de data etc. Este tópico descreve as expressões, construções, funções, operadores e cláusulas compatíveis com as tabelas dinâmicas nos modos de atualização incremental e completa.

Se uma consulta usar expressões, palavras-chave, operadores ou cláusulas que não sejam compatíveis com a atualização incremental, o processo de atualização automatizada usará uma atualização completa, o que pode acarretar um custo adicional.

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

Consultas compatíveis nos modos de atualização incremental e completa

Palavra-chave

Modo de atualização incremental

Modo de atualização total

DISTINCT

Com suporte

Com suporte

Funções externas

Sem suporte

Sem suporte

FROM

Tabelas de origem, exibições, tabelas gerenciadas pelo Snowflake Apache Iceberg™ e outras tabelas dinâmicas.

Subconsultas fora das cláusulas FROM (por exemplo, WHERE EXISTS) não são suportadas.

Com suporte

GROUP BY

Com suporte

Com suporte

CROSS JOIN

Compatível. Você pode especificar qualquer número de tabelas na junção e as atualizações em todas as tabelas na junção serão refletidas nos resultados da consulta.

Com suporte

INNER JOIN

Compatível. Você pode especificar qualquer número de tabelas na junção e as atualizações em todas as tabelas na junção serão refletidas nos resultados da consulta.

Com suporte

LATERAL JOIN

Sem suporte. No entanto, você pode usar LATERAL com FLATTEN(). Por exemplo:

CREATE TABLE persons
 AS
  SELECT column1 AS id, parse_json(column2) AS entity
  FROM values
   (12712555,
   '{ name:  { first: "John", last: "Smith"},
     contact: [
     { business:[
       { type: "phone", content:"555-1234" },
       { type: "email", content:"j.smith@example.com" } ] } ] }'),
   (98127771,
    '{ name:  { first: "Jane", last: "Doe"},
     contact: [
     { business:[
       { type: "phone", content:"555-1236" },
       { type: "email", content:"j.doe@example.com" } ] } ] }');
Copy
CREATE DYNAMIC TABLE my_dynamic_table
 TARGET_LAG = DOWNSTREAM
 WAREHOUSE = mywh
 AS
  SELECT p.id, f.value, f.path
  FROM persons p,
  LATERAL FLATTEN(input => p.entity) f;
Copy

Observe o seguinte comportamento ao usar o nivelamento lateral com atualização incremental:

  • Não há suporte para a seleção da coluna SEQ de nivelamento em uma junção de nivelamento lateral.

  • Ao usar o parâmetro AUTO, o Snowflake normalmente escolhe a atualização incremental para consultas com junções de nivelamento lateral, a menos que seja impedido por outras limitações.

Compatível.

OUTER-EQUI JOIN.

Compatível. Você pode especificar qualquer número de tabelas na junção e as atualizações em todas as tabelas na junção serão refletidas nos resultados da consulta.

Com suporte

[{LEFT | RIGHT | FULL }] OUTER JOIN

O seguinte não é aceito:

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

Caso contrário, você pode especificar qualquer número de tabelas em uma junção externa, e as atualizações de todas as tabelas na junção são refletidas nos resultados da consulta.

Com suporte

Funções de ML ou LLM

Sem suporte

Com suporte

PIVOT e UNPIVOT

Sem suporte

Sem suporte

SAMPLE / TABLESAMPLE

Sem suporte

Sem suporte

Agregados escalares

Com suporte

Com suporte

SELECT

Expressões, incluindo aquelas que usam funções internas determinísticas e funções imutáveis definidas pelo usuário.

Com suporte

Operadores de conjuntos (UNION, MINUS, EXCEPT, INTERSECT)

Sem suporte

Com suporte

Sequências

Sem suporte

Sem suporte

Todos os operadores de subconsulta.

Sem suporte

Com suporte

UNION ALL

Com suporte

Com suporte

Funções definidas pelo usuário (UDFs)

Compatível, exceto pelas seguintes limitações:

  • UDFs escritas em Python, Java, Scala ou Javascript que especificam o parâmetro VOLATILE não são compatíveis.

  • UDFs escritas em SQL que contenham subconsultas não são compatíveis (por exemplo, uma instrução SELECT).

  • Substituir uma UDF IMMUTABLE enquanto ela está em uso por uma tabela dinâmica que usa atualização incremental resulta em falhas de atualização.

  • Não há suporte para a importação de UDFs de um estágio externo.

Com suporte

Funções de tabela definidas pelo usuário (UDTFs)

Compatível, exceto pelas seguintes limitações:

  • UDTFs escritas em SQL não são compatíveis.

  • Os blocos SELECT que leem a partir de UDTFs devem especificar explicitamente as colunas e não podem usar *.

Com suporte

WHERE / HAVING / QUALIFY

Há suporte para filtros com as mesmas expressões que são válidas em SELECT.

Há suporte para filtros com as funções CURRENT_TIMESTAMP, CURRENT_TIME e CURRENT_DATE e seus aliases.

Compatível.

Há suporte para filtros com as funções CURRENT_TIMESTAMP, CURRENT_TIME e CURRENT_DATE e seus aliases.

Funções de janela

Compatível, exceto pelas seguintes limitações:

  • Não há suporte para várias funções de janela na mesma definição de tabela dinâmica, em que as cláusulas PARTITION BY não são idênticas ou aparecem em blocos de consulta separados.

  • Não há suporte para o uso das funções de janela PERCENT_RANK, DENSE_RANK e RANK com quadros de janela deslizantes.

  • O uso de ANY_VALUE não é compatível, pois se trata de uma função não determinística.

Com suporte

WITH

Expressões de tabela comuns (CTEs) que usam recursos compatíveis com atualização incremental na subconsulta.

Com suporte

Suporte a funções não determinísticas nos modos de atualização incremental e total

Função não determinística

Modo de atualização incremental

Modo de atualização total

ANY_VALUE

Sem suporte

Sem suporte

CLASSIFY_TEXT (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

COMPLETE (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

CURRENT_ACCOUNT

Sem suporte

Com suporte

CURRENT_DATE (e aliases)

Com suporte

Com suporte

CURRENT_REGION

Sem suporte

Com suporte

CURRENT_ROLE

Sem suporte

Com suporte

CURRENT_TIME (e aliases)

Com suporte

Com suporte

CURRENT_TIMESTAMP (e aliases)

Com suporte

Com suporte

Funções que dependem de CURRENT_USER.

Sem suporte. As atualizações da tabela dinâmica atuam como função de proprietário com um usuário SYSTEM especial.

Sem suporte. As atualizações da tabela dinâmica atuam como função de proprietário com um usuário SYSTEM especial.

CURRENT_WAREHOUSE

Sem suporte

Com suporte

DENSE_RANK

Sem suporte

Com suporte

EMBED_TEXT_768 (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

EMBED_TEXT_1024 (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

EXTRACT_ANSWER (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

FINETUNE (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

FIRST_VALUE

Com suporte

Com suporte

LAST_VALUE

Com suporte

Com suporte

NTH_VALUE

Com suporte

Com suporte

RANK

Sem suporte

Com suporte

ROW_NUMBER

Sem suporte

Com suporte

SENTIMENT (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

Funções de sequência (por exemplo, SEQ1, SEQ2)

Sem suporte

Com suporte

TRANSLATE (SNOWFLAKE.CORTEX)

Sem suporte

Com suporte

Funções definidas pelo usuário VOLATILE

Sem suporte

Com suporte