基于雪花中的另一列创建列

时间:2021-05-03 14:01:31

标签: snowflake-cloud-data-platform

我有一个包含 500 亿行(约 10 TB)和约 40 列的 Snowflake 表。该表有一个始终填充的时间戳列。我需要创建一个新的日期列并为其回填所有值。

这个查询有效,但是确实效率低下(扫描1%需要1小时,2XL仓库)。有没有更有效的方法来做到这一点?

UPDATE DAILY_TABLE b
SET b.ts_date = to_date(a.ts_tstamp)
FROM
    (SELECT a.ts_date, a.ts_tstamp 
     FROM DAILY_TABLE a) a;

当前表格:

<头>
ts_tstamp ts_date
2021-04-28 05:01:32.883 null
2021-01-28 05:01:32.883 null
2020-01-25 05:01:32.883 null

所需表:

<头>
ts_tstamp ts_date
2021-04-28 05:01:32.883 2021-04-28
2021-01-28 05:01:32.883 2021-01-28
2020-01-25 05:01:32.883 2020-01-25

1 个答案:

答案 0 :(得分:0)

如果该列不需要具体化并且始终依赖于 ts_tstamp,那么另一个选项可能是虚拟列:

ALTER TABLE DAILY_TABLE
ADD COLUMN ts_date_virtual DATE AS TO_DATE(ts_tstamp);