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 |
Sem suporte |
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) |
Sem suporte |
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 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 |
---|---|---|
Sem suporte |
Sem suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
CURRENT_DATE (e aliases) |
Com suporte |
Com suporte |
Sem suporte |
Com suporte |
|
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. |
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Com suporte |
Com suporte |
|
Com suporte |
Com suporte |
|
Com suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Sem suporte |
Com suporte |
|
Funções de sequência (por exemplo, |
Sem suporte |
Com suporte |
Sem suporte |
Com suporte |
|
Funções definidas pelo usuário VOLATILE |
Sem suporte |
Com suporte |