2017-12-27 794 views
1

的文檔通過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簇鍵

CREATE OR REPLACE TABLE t(
    "timestamp" datetime, 
    ... more fields 
) CLUSTER BY (DATE_TRUNC('HOUR', "timestamp")); 

的CREATE TABLE成功運行,但是,與複製到加載數據時,它說不是一個副本中的支持,所以通過羣集支持每小時奇蹟?或者是COPY命令的限制?任何人都知道解決方法?

002300 (0A000): SQL Compilation error: Function 'TRUNCTIMESTAMPTOHOUR' 
    not supported within a COPY 

回答

0

作爲一種解決方法,請嘗試複製到未定義集羣密鑰的臨時表「stg」。然後插入到目標表中:

INSERT INTO t 
SELECT * FROM stg 
ORDER BY (DATE_TRUNC('HOUR', "timestamp")); 
1

擴展斯圖爾特的答案:只需執行INSERT INTO,SELECT FROM [staging區域]。

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]')