Snowflake 交互式表和交互式仓库

概述

Snowflake 交互式表和交互式仓库是 Snowflake 对象的特殊类型,针对低延迟、高并发工作负载进行了优化。它们共同实现了诸如实时仪表板、数据驱动型 APIs 以及为高并发工作负载提供服务等用例。

交互式仓库

一种仓库,针对低延迟、交互式工作负载进行了优化。仓库包含一个查询引擎,该引擎针对低延迟、高并发查询进行了优化。

交互式表

一种 Snowflake 表,针对低延迟、高并发工作负载进行了优化,可与交互式仓库配合使用,并可与标准 Snowflake 仓库一起使用。通过交互式仓库查询这些表,可获得最佳性能提升。

显示用户如何使用交互式仓库和交互式表的图表。

交互式表的用例

实时仪表板

提供仪表板查询,以低延迟、高并发性为数千个用户请求提供支持。对于需要某些聚合和灵活性的服务用例特别有用。

数据驱动型 APIs

提供数据驱动型 APIs 的服务需要可预测的一致性延迟,包含重复的查询形状。

警报和代理 AI 工作负载

适用于可观测性及 AI 智能体工作负载,这些负载可能会产生不可预测的查询峰值,且对单次查询成本有极低的要求。

开始使用交互式表

要开始使用交互式表,请完成以下步骤序列:

  1. 使用标准仓库创建交互式表。有关更多信息,请参阅 创建交互式表

  2. 创建交互式仓库。有关更多信息,请参阅 创建交互式仓库

  3. 恢复交互式仓库。有关更多信息,请参阅 恢复和暂停交互式仓库

  4. 将交互式表添加到交互式仓库。有关更多信息,请参阅 将交互式表添加到交互式仓库

  5. 开始通过交互式仓库查询交互式表。有关更多信息,请参阅 查询交互式表

使用交互式表和交互式仓库

以下过程说明如何创建和管理使用交互式表运行查询所需的所有对象。首次尝试此功能时,请按以下顺序执行这些过程。

创建交互式表

表创建遵循标准 CTAS (CREATE TABLE AS SELECT) 语法,并附加了 INTERACTIVE 关键字来定义表类型。

CREATE INTERACTIVE TABLE 命令还需要 CLUSTER BY 子句。在 CLUSTER BY 子句中指定一列或多列,以匹配对时间要求最高的查询中的 WHERE 子句。您在 CLUSTER BY 子句中指定的列可以显著影响对交互式表的查询性能。因此,请谨慎选择群集列。有关选择最佳群集列的更多信息,请参阅 群集密钥和聚类表

备注

您可以使用标准仓库运行 CREATE INTERACTIVE TABLE 命令。您仅在后续步骤中使用交互式仓库来查询交互式表。

使用以下命令创建一个交互式表,其中包含与标准表相同的列和数据。CLUSTER BY 子句引用源表中名为 id 的列。

CREATE INTERACTIVE TABLE
  IF NOT EXISTS orders
  CLUSTER BY (id)
AS
  SELECT * FROM demoSource;

为交互式表指定自动刷新

要使交互式表使用其他表中的数据自动刷新,请指定带有时间间隔的 TARGET_LAG 子句。当指定 TARGET_LAG 时,您还必须指定 WAREHOUSE 子句以及 Snowflake 用于常规维护刷新操作的标准仓库名称。

您还可以选择指定 INITIALIZATION_WAREHOUSE 以在单独的仓库上运行初始刷新。初始刷新通常比维护刷新处理更多数据。在许多情况下,您可以使用较大的仓库(如 XL)进行初始刷新,而使用较小的仓库(如 S)进行后续维护刷新。

通过 TARGET_LAG 子句的时间间隔,您能以秒、分钟、小时或天数为单位指定最大滞后:

TARGET_LAG = '<num> { seconds | minutes | hours | days }'

如果未指定单位,则数字表示秒。最小值为 60 秒或 1 分钟。

例如,以下 CREATE INTERACTIVE TABLE 语句定义一个交互式表,该表滞后于指定的源表不超过 20 分钟,使用较大的仓库进行初始刷新,并使用较小的仓库进行持续的维护刷新:

CREATE INTERACTIVE TABLE my_dynamic_interactive_table
  CLUSTER BY (c1, c2)
  TARGET_LAG = '20 minutes'
  WAREHOUSE = s_maintenance_wh
  INITIALIZATION_WAREHOUSE = xl_initial_wh
AS SELECT c1, SUM(c2) FROM my_source_table GROUP BY c1;

有关选择相应滞后时间以平衡成本和数据新鲜度的更多信息,请参阅 How Snowflake schedules refreshes。有关使用单独仓库进行初始刷新和维护刷新的指南,请参阅 调整仓库配置。类似的注意事项也适用于交互式表和动态表。

您还可以通过运行以下命令手动触发动态交互式表的刷新:

ALTER INTERACTIVE TABLE ``my_dynamic_interactive_table`` REFRESH.

创建交互式仓库

创建交互式表后,要实现最佳查询性能,需要使用交互式仓库。在 CREATE WAREHOUSE 或 CREATE OR REPLACE WAREHOUSE 命令中指定关键字 INTERACTIVE。

(可选)您可以指定 TABLES 子句,其中包含以逗号分隔的交互式表名称列表。使用该子句会立即将这些交互式表与交互式仓库关联起来。

以下命令创建了一个与名为 orders 的交互式表关联的交互式仓库。在这种情况下,您可以立即运行 USE WAREHOUSE 命令,并开始对交互式表运行查询:

CREATE OR REPLACE INTERACTIVE WAREHOUSE interactive_demo
  TABLES (orders)
  WAREHOUSE_SIZE = 'XSMALL';

以下命令创建了一个没有关联交互式表的交互式仓库。在这种情况下,您可以在之后运行 ALTER WAREHOUSE 命令,将交互式表与交互式仓库相关联:

CREATE OR REPLACE INTERACTIVE WAREHOUSE interactive_demo
  WAREHOUSE_SIZE = 'XSMALL';

创建交互式仓库后,它将保持暂停状态,直到您将其恢复。您可以为交互式仓库配置自动暂停和自动恢复。交互式仓库的最短自动暂停间隔为 24 小时(86400 秒)。恢复和暂停交互式仓库 是 Web 令牌 ()、 令牌或 编程访问令牌 。有关详细信息,请参阅 恢复和暂停交互式仓库

交互式表性能注意事项

以下章节介绍如何解决由于交互式表的特殊特征及其更适合的工作负载而可能遇到的性能问题。

交互式仓库的查询最佳实践

交互式仓库针对具有 选择性工作负载 的查询进行了优化。这意味着与其他查询类型相比,具有良好选择性的查询在性能方面有更多的改进。

期望通过交互式仓库获得更多的性能优势

期望通过交互式仓库获得有限的性能优势

SELECT col1, col4, AVG(col_x)
  FROM my_table
  GROUP BY col1, col4;

此查询具有高度选择性,因为它只需要几列。Snowflake 可以仅优化加载此查询所需的列。

SELECT * FROM my_table;

此查询处理所有列。尽管查询很简单,但 Snowflake 必须处理大量数据,这可能会超过缓存的大小。即使表的内容可以适应缓存,这也意味着缓存其他查询数据的空间减少,从而导致并发性降低。

SELECT col1, col2
  FROM my_table
  WHERE
    col_x IN (1,4,7,8)
    AND event_time >=
      DATEADD(hour, -1, CURRENT_TIMESTAMP());

WHERE 子句中的条件使此查询具有高度选择性。IN 子句将结果限制为相对较少的项,时间比较进一步将数据限制在特定时间段内。

SELECT col1, col2
  FROM my_table
  WHERE
    event_time >=
      DATEADD(day, -365, CURRENT_TIMESTAMP());

询问一整年的数据会降低此查询的选择性。如果数据集很大,此查询可能会处理表中的所有行。

大型联接(如联接两个事实表)等其他复杂操作,或计算密集型表达式(如正则表达式)可能会因计算资源使用量增加而导致并发性降低。有关针对这些情况进行优化的信息,请参阅 选择交互式仓库的大小

交互式表的数据布局最佳实践

交互式表遵循标准 Snowflake 性能最佳实践。特别是,交互式表受益于 聚类良好的表,该表根据您要筛选的相同列进行排序。例如,如果您的查询经常筛选 TIMESTAMP 列(如 sale_date),则可以在创建交互式表时使用该列作为群集密钥。例如,您可以按如下方式创建交互式表:

CREATE INTERACTIVE TABLE product_sales (<column definitions>) CLUSTER BY (sale_date);

这样,筛选 sale_date 的 SELECT 查询可以快速跳过所有不相关的数据并返回结果。例如,以下查询通过测试 sale_date 列对日期范围进行筛选:

SELECT ... WHERE sale_date > '2025-10-24' AND ...

有关选择最佳群集密钥的更多详细信息,请参阅 群集密钥和聚类表

选择交互式仓库的大小

完成所有查询和布局优化后,请考虑 扩展仓库 以满足需求。交互式仓库的大小范围从 XSMALL 到 3XLARGE,以及 多集群仓库

建议您首先根据交互式表中 工作数据集 的大致大小来调整仓库大小。工作数据集是指经常查询的数据部分。例如,如果您的查询通常只查询过去七天的销售数据,则工作集是交互式表中与这七天相对应的部分。

这是因为交互式仓库使用 本地存储缓存。虽然整个数据集(表)的数据始终可访问,但访问非缓存数据确实会在首次读取时产生更高的读取延迟。

选择适合工作负载需求的仓库大小。试验特定的数据和工作负载,以确定交互式仓库的最佳大小。

小技巧

为了获得良好的性能,不需要将查询的整个工作集放入缓存中。选择足以容纳 热门数据 的缓存大小,即频繁访问的行中的数据。事实上,许多客户只需将部分数据缓存,即可通过交互式仓库缓存处理绝大多数查询。

我们建议根据有效数据集的大小,从以下仓库规格开始配置。(受不同云平台及区域的硬件差异影响,以下内容仅供参考)

工作集

仓库规模

少于约 350 GB

XSMALL

约 350 GB 至约 600 GB

SMALL

约 600 GB 至约 1.2 TB

MEDIUM

约 1.2 TB 至约 2.5 TB

LARGE

约 2.5 TB 至约 5.5 TB

XLARGE

5.5 TB 至约 11 TB

2XLARGE

约 11 TB 至约 22 TB

3XLARGE

约 22 TB 至约 44 TB

4XLARGE

交互式表的性能故障排除

问题 1:我的单个查询耗时过长

这可能是因为您的查询需要更多的计算资源才能完成。您的查询可能有很多复杂的处理,因此需要更多 CPUs。例如,具有大量正则表达式筛选器和 CASE 子句的查询。您的查询也可能需要大量内存,例如执行大量 COUNT(DISTINCT ...) 的查询。要降低单个查询的运行时间,请考虑 更大的仓库规模。从以上建议的大小开始,然后不断增加仓库的大小,直到您对单个查询的延迟感到满意为止。

问题 2:我的查询突然需要很长时间才能运行(高尾延迟、高 P95 延迟)

查询时间突然增加可能是由于缓存不足造成的。每种仓库大小都有一个本地 SSD 缓存,Snowflake 将其用于缓存最近使用的数据。Snowflake 管理缓存,使其仅存储表中经常访问的部分。如果查询是选择性的,那么增加仓库规模可能会减少尾部延迟。

另请注意,新启动的仓库需要一段时间才能 预热缓存。Snowflake 会主动预热新添加的数据。对于基准测试,请在开始基准测试之前等待一段时间,以便缓存有时间预热。缓存预热速度基于仓库大小和表大小。交互式表越大,Snowflake 预热缓存所需的时间就越长。另一方面,指定的交互式仓库规模越大,预热时间越短。

问题 3:我的查询正在排队,或者我无法实现预期的并发性

您可以通过设置 MIN_CLUSTER_COUNT 和 MAX_CLUSTER_COUNT 参数来扩展仓库规模。这样,您就可以创建多集群交互式仓库。如果 MAX_CLUSTER_COUNT设置为大于 MIN_CLUSTER_COUNT 的值,仓库将自动横向扩展。

将交互式表添加到交互式仓库

要获得交互式表的最佳查询性能,应使用交互式仓库。

在使用交互式仓库查询交互式表之前,必须执行一次操作,将该交互式表添加到交互式仓库。否则,在交互式仓库中查询该表时,会出现 object not found 错误。如果您没有在 CREATE INTERACTIVE WAREHOUSE 命令中使用 TABLES 子句指定与交互式仓库关联的交互式表,则稍后可以使用 ALTER WAREHOUSE 命令进行指定。

以下命令将 orders 表与 interactive_demo 仓库相关联。您可以使用 ADD TABLES 子句指定多个表名,并用逗号分隔。

ALTER WAREHOUSE interactive_demo ADD TABLES (orders);

如果交互式表已与交互式仓库关联,则该命令会成功,但不起作用。您可以将一个交互式表与多个交互式仓库相关联。

此操作将启动缓存预热过程。缓存预热时间基于数据大小和仓库大小。XS 仓库预热时间约为 300-350MB/秒。表越大,缓存预热时间越长。仓库越大,预热速度越快。

预热过程不会阻止仓库接受新查询。预热的优先级是:1.用户发出的查询 2.通过自动刷新或其他数据引入方式新添加的微分区 3.任何现有数据

由于缓存预热取决于您的查询,监控缓存是否已预热的最佳方式是查看 Snowsight 查询配置文件 中的远程读取百分比。有关以编程方式访问查询运算符统计信息的信息,请参阅 GET_QUERY_OPERATOR_STATS。在理想的执行场景中,低延迟查询的远程读取百分比应为 0%。

从交互式仓库中移除交互式表

您可以通过运行带 DROP TABLES 子句的 ALTER WAREHOUSE 命令,从交互式仓库中分离一个或多个交互式表。

ALTER WAREHOUSE interactive_demo DROP TABLES (orders, customers);

备注

完成此操作后,交互式表仍然存在。此 ALTER WAREHOUSE 子句与执行 SQL 命令 DROP TABLE 不同。

使用搜索优化进行点查找

当您对交互式表执行点查找查询时,建议添加 搜索优化。点查找是对单列进行筛选以检索一行或多行数据的查询。WHERE some_id = some_UUID 是一个很好的例子。

对交互式表的物化视图支持

您可以在交互式表上创建物化视图。交互式物化视图 预先计算查询结果并将其存储在交互式表上,这可以进一步提高常见聚合模式的查询性能。

要创建交互式物化视图,请使用 CREATE MATERIALIZED VIEW 语句中的 INTERACTIVE 关键字:

CREATE INTERACTIVE MATERIALIZED VIEW IF NOT EXISTS mv_order_summary
  AS
    SELECT region, SUM(quantity) AS total_quantity, SUM(net_paid) AS total_net_paid
      FROM orders
      GROUP BY region;

创建交互式物化视图后,必须将该物化视图及其底层的基表 添加到交互式仓库中:

ALTER WAREHOUSE interactive_demo ADD TABLES (mv_order_summary, orders);

交互式物化视图的最佳实践

使用交互式表创建物化视图时,请遵循以下准则:

  • 交互式物化视图的工作方式与常规物化视图类似。它必须基于交互式表。

  • 交互式物化视图及其所基于的源交互式表必须添加到同一个交互式仓库中。否则,在交互式仓库中查询该物化视图时,会出现 object not found 错误。

  • 无论是交互式视图还是标准视图,物化视图中都不支持联接。构建查询以从单个基表中汇总或筛选。

  • 不能将交互式表或交互式物化视图用作 动态表 的数据源。

  • 在考虑交互式物化视图的候选项时,请选择经常运行且计算成本高昂的聚合查询

恢复和暂停交互式仓库

以下命令可恢复交互式仓库。您必须在创建仓库后执行此操作,因为该仓库是在暂停状态下创建的:

ALTER WAREHOUSE interactive_demo RESUME;

如果您手动暂停了仓库,您还可以执行此操作,以通过该仓库开始运行查询。

恢复后,在预热缓存期间,查询速度会很慢。可能需要几分钟到一个小时左右,具体取决于该表中的数据量。

以下命令可暂停交互式仓库:

ALTER WAREHOUSE interactive_demo SUSPEND;

交互式仓库的自动暂停和自动恢复

交互式仓库支持自动暂停和自动恢复。创建或更改交互式仓库时,可以设置 AUTO_SUSPEND 和 AUTO_RESUME 属性。

交互式仓库的最小 AUTO_SUSPEND 值为 86400 秒(24 小时)。此最小值可确保缓存保持足够长的热度,以提供一致的低延迟性能。如果指定的值小于 86400,Snowflake 会改用 86400。

以下示例创建了一个交互式仓库,该仓库在 24 小时不活动后自动暂停,并启用了自动恢复:

CREATE INTERACTIVE WAREHOUSE interactive_demo
  WAREHOUSE_SIZE = 'XSMALL'
  AUTO_SUSPEND = 86400
  AUTO_RESUME = TRUE;

您还可以在现有交互式仓库上设置以下属性:

ALTER WAREHOUSE interactive_demo SET
  AUTO_SUSPEND = 86400
  AUTO_RESUME = TRUE;

备注

在生产环境中,通常将交互式仓库用于全天候运行许多并发查询的工作负载,或者低延迟对查询至关重要的工作负载。暂停和恢复交互式仓库(无论是手动还是通过自动暂停)会产生大量缓存预热时间,因此请评估自动暂停是否适合您的工作负载模式。

区域可用性

交互式表和交互式仓库在以下 Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Microsoft Azure 区域可用。有关 Snowflake 区域的更多信息,请参阅 支持的云区域

  • us-east-1 - AWS US 东部(弗吉尼亚北部)

  • us-west-2 - AWS US 西部(俄勒冈州)

  • us-east-2 - AWS US 东部(俄亥俄州)

  • ca-central-1 – AWS 加拿大(中部)

  • ap-northeast-1 – AWS 亚太地区(东京)

  • ap-southeast-2 – AWS 亚太地区(悉尼)

  • eu-central-1 – AWS EU(法兰克福)

  • eu-west-1 – AWS EU(爱尔兰)

  • eu-west-2 – AWS 欧洲(伦敦)

  • us-central1 – GCP US 中部 1(爱荷华州)

  • us-east4 – GCP US 东部 4(弗吉尼亚州北部)

  • europe-west2 – GCP 欧洲西部 2(伦敦)

  • europe-west3 – GCP 欧洲西部 3(法兰克福)

  • europe-west4 – GCP 欧洲西部 4(荷兰)

  • australia-southeast2 – GCP 澳大利亚东南部 2(墨尔本)

  • Azure:所有 Azure 区域。

基于任务的多集群大小调整

您可以通过计划任务调整 MIN_CLUSTER_COUNT 参数。

-- 1) Task to scale OUT during business hours
CREATE OR REPLACE TASK mcw_scale_out_morning
  WAREHOUSE = my_wh          -- the warehouse that *executes the task*
  SCHEDULE = 'USING CRON 0 8 * * * UTC'   -- 08:00 UTC daily
AS
  ALTER WAREHOUSE my_wh      -- the warehouse you want to change (can be same or different)
    SET
      MIN_CLUSTER_COUNT = 10;  -- optional: ECONOMY or STANDARD

-- 2) Task to scale IN after hours
CREATE OR REPLACE TASK mcw_scale_in_evening
  WAREHOUSE = my_wh
  SCHEDULE = 'USING CRON 0 20 * * * UTC'  -- 20:00 UTC daily
AS
  ALTER WAREHOUSE my_wh
    SET
      MIN_CLUSTER_COUNT = 2;

建议使用自动扩展策略设置 MAX_CLUSTER_COUNT 来调整工作负载的峰值并发性。

删除交互式仓库

您可以运行 DROP WAREHOUSE 命令来完全移除交互式仓库。删除交互式仓库会移除该仓库与任何交互式表之间的关联。但是,您仍然可以使用其他交互式仓库来查询这些相同的交互式表。

查询交互式表

在查询会话中,确保当前会话的仓库是交互式仓库:

USE WAREHOUSE interactive_demo;

此后,您可以正常查询交互式表。

备注

  • 在交互式仓库中,您只能查询交互式表。要查询其他类型的 Snowflake 表(例如标准表或混合表),请先切换到标准仓库。

  • 某些类型的查询特别适合交互式表。有关更多信息,请参阅 交互式表的用例

基准测试最佳实践

在测试环境中评估交互式表的性能时,请遵循以下最佳实践,以避免出现不一致或误导性的结果:

  • 关闭查询结果缓存,使多次基准测试运行之间的基准测试结果保持一致。您可以通过设置 USE_CACHED_RESULT 会话参数,在账户、用户和会话级别关闭查询结果缓存。这样一来,查询仅使用来自交互式仓库的表数据缓存。如果您在生产环境中打开结果缓存,您可以获得与基准测试相当或更好的性能。

  • 由于交互式仓库需要一些时间来预热表数据缓存,因此在创建或恢复交互式仓库后,请等待一段时间,然后再测试查询性能。这模拟了仓库长时间保持活动状态的典型生产配置。Snowflake 对缓存预热过程进行了优化。因此,让 Snowflake 完成此过程比通过运行示例查询自行预热缓存更高效。

  • 在将交互式表的性能与标准 Snowflake 表进行比较时,不要在标准表和交互式表之间交错查询。应先在标准表上运行完整的基准测试,然后在交互式表上运行相同的测试。

  • 在与其他数据库系统进行比较基准测试时,请确保交互式表中的群集列与查询中的 WHERE 子句谓词匹配。有关选择最佳群集列的更多信息,请参阅 群集密钥和聚类表。尤其要注意,请勿对具有高基数(例如唯一 IDs 或时间戳)的列进行聚类。

  • 如果查询简短且简单,则可以将交互式仓库的 MAX_CONCURRENCY_LEVEL 参数设置为更高值,从而实现更高的并发性。

交互式表和存储生命周期策略

您可以使用 存储生命周期策略,根据您定义的条件(例如数据存在时间或其他标准),来归档或使特定表行过期。

目前,您不能对使用自动刷新的交互式表使用存储生命周期策略。您可以使用 TARGET_LAG 参数或存储生命周期策略,但不能同时使用两者。

灾难恢复和复制

添加到复制组后,交互式表和仓库将复制到目标账户。

交互式表复制的行为与标准表复制相同。交互式仓库复制的行为与标准仓库复制相同,只是它假定目标区域支持交互式仓库。目前,目标区域中没有交互式仓库复制的验证。

目标账户中的交互式仓库将自动恢复。但是,由于缓存预热要求,仓库的性能无法得到保证。为确保一致的性能,您可以让仓库在目标区域持续运行。

成本和计费注意事项

交互式仓库在活动时会产生计算费用。交互式仓库的最短计费期为一小时,之后按 1 秒精度计费。

备注

如果您恢复已暂停的交互式仓库(无论是手动恢复还是通过自动恢复),该操作将产生新的最低计费周期费用。即便您因仓库中其他近期活动已在该周期内产生费用,该费用仍然会被收取。因此,避免在短时间内多次暂停和恢复交互式仓库。24 小时的最短自动暂停间隔有助于防止过多的暂停/恢复周期。

交互式表会产生标准存储成本。交互式表的存储价格与标准表相同。由于数据编码和附加索引的差异,交互式表可能大于等效的标准表。较大的数据大小和索引会计入存储卷。

有关交互式仓库和交互式表的成本和计费的更多信息,请参阅 Snowflake 服务使用量表

交互式仓库和交互式表的限制

以下限制适用于交互式仓库和交互式表。有些限制是由于交互式表和标准 Snowflake 表之间的架构差异造成的;这些限制是永久性的。

交互式仓库的限制

  • Snowflake 交互式仓库针对短期运行的查询进行了优化。SELECT 命令的查询超时值默认为五秒。五秒钟后,查询将被取消。您可以降低查询超时值,但不能提高该值。这样做是为了防止长时间运行的查询导致交互式仓库资源不足,并降低低延迟查询的性能。某些类型的命令不受五秒超时间隔的限制,例如 SHOW 和 INSERT OVERWRITE。

  • 如果查询持续超时,则表明该查询可能不适用于交互式仓库。通常,应用一些性能调优技术有助于减少查询延迟。有关更多详细信息,请参阅 交互式表性能注意事项

  • 交互式仓库支持自动暂停和自动恢复,最短自动暂停间隔为 24 小时(86400 秒)。当您恢复交互式仓库时,由于数据缓存需要再次预热,因此预计会出现显着的查询延迟。有关更多信息,请参阅 恢复和暂停交互式仓库

  • 您无法从交互式仓库查询标准 Snowflake 表。要在同一会话中查询标准表和交互式表,请运行 USE WAREHOUSE,切换到相应仓库类型。

  • 您最多可以向交互式仓库添加 10 个交互式表。这是为了防止系统过载而采取的临时限制。此限制将来会增加。如果您需要添加 10 个以上的交互式表,请联系 Snowflake 支持部门。

  • 在交互式仓库中,您不能运行 CALL 命令 来调用存储过程。

  • 您不能使用 ->> 管道运算符。此运算符在后台使用存储过程。

交互式表的限制

  • 交互式表不支持以下功能:

    • 数据操作语言 (DML) 命令,例如 UPDATE 和 DELETE。推荐的工作流程是使用自动刷新交互式表(即通过 TARGET_LAG 设置)并将 DML 应用于源表。自动刷新机制比对交互式表使用 DML 更高效且更具成本效益。您可以执行的唯一 DML 是 INSERT OVERWRITE。

    • 故障安全。此数据恢复机制不适用于交互式表。但是,您仍然可以将 Time Travel 与交互式表结合使用。

    • 行时间戳。您不能在交互式表上启用行时间戳。这是一个临时限制。

    • 查询见解。目前,在交互式表上执行的查询不会收集这些数据,也无法使用这些数据,以帮助减少查询执行延迟。

  • 您不能执行以下操作:

    • 使用交互式表作为标准(非交互式)物化视图的源。要在交互式表上创建物化视图,请使用 INTERACTIVE 关键字。请参阅 对交互式表的物化视图支持

    • 修改交互式表的属性,方法是使用 ALTER TABLE 子句,例如 ADD COLUMN 或 REMOVE COLUMN。您 可以 执行的 ALTER TABLE 操作包括:

    • 与交互式表结合使用。

    • 创建以交互式表为基表的 动态表

    • 在对交互式表进行查询时,请使用 RESAMPLE 子句

    • 使用 CREATE INTERACTIVE TABLE 或 ALTER TABLE 设置 Time Travel 保留期。交互式表会继承父架构、数据库或账户中的值 DATA_RETENTION_TIME_IN_DAYS。

受影响的 SQL 语句

此功能对以下 Snowflake SQL 命令进行了更改: