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  | 
|---|---|---|
Com suporte  | 
Com suporte  | 
|
Sem suporte  | 
Sem suporte  | 
|
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  | 
|
Com suporte  | 
Com suporte  | 
|
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  | 
|
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" } ] } ] }');
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;
Observe o seguinte comportamento ao usar o nivelamento lateral com atualização incremental: 
  | 
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: 
 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  | 
Com suporte na cláusula SELECT.  | 
Com suporte  | 
|
Sem suporte  | 
Sem suporte  | 
|
Sem suporte  | 
Sem suporte  | 
|
Agregados escalares  | 
Com suporte  | 
Com suporte  | 
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)  | 
Não compatível, exceto para UNION. Na atualização incremental, o operador de conjunto UNION funciona como a combinação dos operadores UNION ALL e SELECT DISTINCT.  | 
Com suporte  | 
Sem suporte  | 
Sem suporte  | 
|
Todos os operadores de subconsulta.  | 
Sem suporte  | 
Com suporte  | 
Com suporte  | 
Com suporte  | 
|
Compatível, exceto pelas seguintes limitações: 
  | 
Com suporte  | 
|
Compatível, exceto pelas seguintes limitações: 
  | 
Com suporte  | 
|
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.  | 
|
Compatível, exceto pelas seguintes limitações: 
  | 
Com suporte  | 
|
Expressões de tabela comuns (CTEs) que usam recursos compatíveis com a atualização incremental na subconsulta são aceitas. WITH RECURSIVE não é compatível.  | 
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  | 
|---|---|---|
Sem suporte  | 
Sem suporte  | 
|
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Sem suporte  | 
Com suporte  | 
|
CURRENT_DATE (e aliases)  | 
Aceito apenas como parte de uma cláusula WHERE/HAVING/QUALIFY.  | 
Aceito apenas como parte de uma cláusula WHERE/HAVING/QUALIFY.  | 
Sem suporte  | 
Com suporte  | 
|
Sem suporte  | 
Com suporte  | 
|
CURRENT_TIME (e aliases)  | 
Aceito apenas como parte de uma cláusula WHERE/HAVING/QUALIFY.  | 
Aceito apenas como parte de uma cláusula WHERE/HAVING/QUALIFY.  | 
CURRENT_TIMESTAMP (e aliases)  | 
Aceito apenas como parte de uma cláusula WHERE/HAVING/QUALIFY.  | 
Aceito apenas como parte de uma cláusula WHERE/HAVING/QUALIFY.  | 
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.  | 
Sem suporte  | 
Com suporte  | 
|
Com suporte  | 
Com suporte  | 
|
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Com suporte  | 
Com suporte  | 
|
Com suporte  | 
Com suporte  | 
|
Com suporte  | 
Com suporte  | 
|
Com suporte  | 
Com suporte  | 
|
Com suporte  | 
Com suporte  | 
|
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Funções de sequência (por exemplo,   | 
Sem suporte  | 
Com suporte  | 
Com suporte na cláusula SELECT  | 
Com suporte  | 
|
Funções definidas pelo usuário VOLATILE  | 
Sem suporte  | 
Com suporte  | 
Funções do Snowflake Cortex AISQL compatíveis¶
Você pode usar Snowflake Cortex AISQL (incluindo as funções LLM) na cláusula SELECT para tabelas dinâmicas no modo de atualização incremental. Aplicam-se as mesmas restrições de disponibilidade descritas em Funções AISQL.
O Cortex AISQL permite adicionar insights baseados em AI diretamente às suas tabelas dinâmicas, analisando os dados automaticamente à medida que são atualizados. Por exemplo, ele pode classificar avaliações de clientes, tíquetes de suporte ou respostas de pesquisas como positivas/negativas ou atribuir categorias.
No exemplo a seguir, review_sentiment usa AI_FILTER para avaliar cada avaliação com um LLM. O Cortex AISQL combina o prompt The reviewer enjoyed the restaurant com o texto da avaliação real. A coluna de saída enjoyed é a classificação gerada usando o Cortex AISQL com base no prompt, indicando se o avaliador gostou do restaurante.
CREATE OR REPLACE TABLE reviews AS
  SELECT 'Wow... Loved this place.' AS review
  UNION ALL
  SELECT 'The pizza is not good.' AS review;
CREATE OR REPLACE DYNAMIC TABLE review_sentiment
  TARGET_LAG = DOWNSTREAM
  WAREHOUSE = mywh
  REFRESH_MODE = INCREMENTAL
  AS
    SELECT review, AI_FILTER(CONCAT('The reviewer enjoyed the restaurant', review), {'model': 'llama3.1-70b'}) AS enjoyed FROM reviews;