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;