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 |
Supported Snowflake Cortex AI functions¶
Você pode usar Snowflake Cortex AI Functions (including LLM functions) na cláusula SELECT para tabelas dinâmicas no modo de atualização incremental. Aplicam-se as mesmas restrições de disponibilidade descritas em Cortex AI functions.
Cortex AI Functions let you add AI-powered insights directly to your dynamic tables, automatically analyzing data as it updates. For example, it can classify customer reviews, support tickets, or survey responses as positive/negative or assign categories.
In the following example, review_sentiment uses AI_FILTER to evaluate each review with an LLM. Cortex AI Functions combine
the prompt The reviewer enjoyed the restaurant with the actual review text. The output column enjoyed is the classification
generated using Cortex AI Functions based on the prompt, indicating whether the reviewer enjoyed the restaurant.
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;