我是Snowflake的新手,我已经用以下代码在视图(123 Dummy)上创建了一个表(123

create or replace table 123 as select * from 123Dummy;

该视图有10条记录,默认情况下,该表也有10条记录.问题是,当对视图进行更新时,如何在表中获得视图的更新版本?例如,当视图中的记录数增加到15个时,如果我对表运行SELECT*,它仍将具有创建表时的记录数(10).

有没有办法刷新表格?

推荐答案

CREATE TABLE … AS SELECT (CTAS)用于创建表,并使用提供的SQL查询立即填充该表.在之后的SELECT查询中,创建的表和依赖对象之间没有任何联系.

CREATE TABLE tab_trg
AS
SELECT * FROM tab_src;

当更新tab_src时将触发tab_trg的自动更新的期望是无效的.

选项:

  1. 创建视图而不是表格:

    CREATE VIEW tab_trg AS SELECT * FROM tab_src;

  2. 定期重新创建表(在调度程序外部或TASK):

    CREATE OR REPLACE TABLE tab_trg COPY GRANTS AS SELECT * FROM tab_src;

  3. 等待新功能-Dynamic Tables:

动态表是Snowflake中的一种新的表类型,它允许团队使用简单的SQL语句来声明性地定义数据管道的结果.动态表格还会在数据更改时自动刷新,仅对自上次刷新以来的新更改进行操作.

CREATE [ OR REPLACE ] DYNAMIC TABLE 
LAG = ' { seconds | minutes | hours | days }'
WAREHOUSE = 
AS SELECT 

Sql相关问答推荐

使用自动增量ID插入失败(无法将值空插入列ID)

SQL查询以条件空值跟踪生产操作结果进展

SQL查询:合并2个表

如何使用WSO2将空值传递给我的SQL Server存储过程?

从依赖于其他表的值的XREF表中的值分组获得正确的计数?

将计算列设置为持久化的目的是什么?

数组列的postgres更新查询

使用generate_series()时,LEFT联接缺少日期/间隔

基于另一个(SAS、SQL)中的值更新列

PostgreSQL-按距离阈值挤压相邻行的性能

两个月之间的WHERE CASE WHEN-ORA-00905:缺少关键字

使用左外部联接更正列中第+1行的值时重复

每个分组最多 Select 最后 2 个值并并排显示它们

Postgresql - WHERE 中的 MAX 标准 - 初学者问题

复制行并根据 Oracle SQL 中其他表的值更改值

计算 ID 满足条件的次数

编写查询以根据级别 (p2) 返回父位置

如何更改 duckdb R 中的数据约束

如何根据另一列对行值进行分组?

在 PostgreSQL 中,如何将数组中的每个元素用作另一个表中的键?