该文档表示支持按Expressions on base columns
进行聚类,并且有一个使用TO_DATE(时间戳)作为聚类键的示例,
确实可以正常验证,但在我的情况下,逐个小时更好,所以使用此DATE_TRUNC by HOUR作为群集密钥
CREATE OR REPLACE TABLE t(
"timestamp" datetime,
... more fields
) CLUSTER BY (DATE_TRUNC('HOUR', "timestamp"));
CREATE TABLE成功运行,但是,在使用COPY INTO加载数据时,它表示COPY中不支持,所以奇怪是支持按小时聚类?或者是COPY命令的限制?有谁知道解决方法?
002300 (0A000): SQL Compilation error: Function 'TRUNCTIMESTAMPTOHOUR'
not supported within a COPY
答案 0 :(得分:1)
扩展Stuart的答案:只需执行INSERT INTO,SELECT FROM [staging area]。
INSERT INTO DB.SCHEMA.T(timestamp, col2, ...)
SELECT
$1::timestamp_ntz,
$2
...
FROM
@SOURCE.EXTRACTS/folder_location (FILE_FORMAT => '[file_format_name]',
PATTERN => '[regex file pattern]')
答案 1 :(得分:0)
作为一种解决方法,请尝试COPY到没有定义群集键的临时表“stg”。然后插入目标表:
INSERT INTO t
SELECT * FROM stg
ORDER BY (DATE_TRUNC('HOUR', "timestamp"));