支持的动态表查询¶
动态表支持标准 SQL 表达式和 Snowflake 支持的函数,包括数学运算、字符串函数、日期函数等。本主题介绍动态表在增量和完全刷新模式下支持的表达式、构造、函数、运算符和子句。
如果查询使用增量刷新不支持的表达式、关键字、运算符或子句,则自动刷新流程将改为使用完全刷新,这可能会产生额外费用。
支持的数据类型¶
动态表支持所有 Snowflake SQL 数据类型,用于增量和完全刷新,但以下类型除外:
结构化数据类型。
地理空间数据类型(仅完全刷新)。
增量和完全刷新模式下支持的查询¶
关键字 |
增量刷新模式 |
完全刷新模式 |
---|---|---|
支持 |
支持 |
|
不支持 |
不支持 |
|
源表、视图、Snowflake 管理的 Apache Iceberg™ 表和其他动态表。 不支持 FROM 子句(例如 WHERE EXISTS)外部的子查询。 |
支持 |
|
支持 |
支持 |
|
支持。您可以在联接中指定任意数量的表,联接中所有表的更新都会反映在查询结果中。 |
支持 |
|
支持。您可以在联接中指定任意数量的表,联接中所有表的更新都会反映在查询结果中。 |
支持 |
|
LATERAL JOIN |
不支持。但是,您可以将 LATERAL 与 FLATTEN() 结合使用。例如: 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;
使用横向展平和增量刷新时,请注意以下行为:
|
支持。 |
OUTER-EQUI JOIN。 |
支持。您可以在联接中指定任意数量的表,联接中所有表的更新都会反映在查询结果中。 |
支持 |
[{LEFT | RIGHT | FULL }] OUTER JOIN |
不支持以下内容:
否则,您可以在外部联接中指定任意数量的表,联接中所有表的更新都会反映在查询结果中。 |
支持 |
不支持 |
支持 |
|
不支持 |
不支持 |
|
不支持 |
不支持 |
|
标量汇总 |
支持 |
支持 |
支持 |
||
:doc:`/sql-reference/operators-query`(UNION、MINUS、EXCEPT、INTERSECT) |
不支持 |
支持 |
序列。 |
不支持 |
不支持 |
所有 子查询运算符。 |
不支持 |
支持 |
支持 |
支持 |
|
用户定义函数 (UDFs) |
支持,但以下限制除外: |
支持 |
用户定义的表函数 (UDTFs) |
支持,但以下限制除外:
|
支持 |
支持具有在 SELECT 中有效的相同表达式的筛选器。 支持具有 CURRENT_TIMESTAMP、CURRENT_TIME 和 CURRENT_DATE 函数及其别名的筛选器。 |
支持。 支持具有 CURRENT_TIMESTAMP、CURRENT_TIME 和 CURRENT_DATE 函数及其别名的筛选器。 |
|
支持,但以下限制除外:
|
支持 |
|
支持 公用表表达式 (CTEs) 在子查询中使用支持增量刷新的功能。 不支持 WITH RECURSIVE。 |
支持 |
在增量和完全刷新模式下支持的非确定性函数¶
非确定性函数 |
增量刷新模式 |
完全刷新模式 |
---|---|---|
不支持 |
不支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
:doc:`/sql-reference/functions/current_date`(以及别名) |
支持 |
支持 |
不支持 |
支持 |
|
不支持 |
支持 |
|
:doc:`/sql-reference/functions/current_time`(以及别名) |
支持 |
支持 |
:doc:`/sql-reference/functions/current_timestamp`(以及别名) |
支持 |
支持 |
依赖 CURRENT_USER 的函数。 |
不支持。动态表刷新由一个特殊 SYSTEM 用户作为其所有者角色。 |
不支持。动态表刷新由一个特殊 SYSTEM 用户作为其所有者角色。 |
不支持 |
支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
支持 |
支持 |
|
支持 |
支持 |
|
支持 |
支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
不支持 |
支持 |
|
序列函数 (例如 |
不支持 |
支持 |
不支持 |
支持 |
|
VOLATILE 用户定义的函数 |
不支持 |
支持 |