雪花支持微小分区按小时划分?

时间:2017-12-27 17:47:48

标签: snowflake-datawarehouse

该文档表示支持按Expressions on base columns进行聚类,并且有一个使用TO_DATE(时间戳)作为聚类键的示例,

https://docs.snowflake.net/manuals/user-guide/tables-micro-partitions.html#defining-clustering-keys-for-a-table

确实可以正常验证,但在我的情况下,逐个小时更好,所以使用此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

2 个答案:

答案 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"));