Snowflake 真正维护文件加载历史多长时间?

How long does Snowflake really maintain file load history?

3 个来源中的第 1 个 - https://docs.snowflake.com/en/user-guide/data-load-considerations-load.html#load-metadata 说 -

"Snowflake maintains detailed metadata for each table into which data is loaded ... This load metadata expires after 64 days..." followed by an explanation of the LOAD_UNCERTAIN_FILES copy option. This option tells Snowflake whether or not to load files whose metadata, being over 64 days old, has been purged.

#2 of 3 - https://docs.snowflake.com/en/user-guide/data-load-local-file-system-copy.html#monitoring-files-staged-internally 说 -

"Snowflake retains historical data for COPY INTO commands executed within the previous 14 days... Use the LOAD_HISTORY Information Schema view to retrieve the history of data loaded into tables using the COPY INTO command"

#3 of 3 - https://docs.snowflake.com/en/sql-reference/account-usage/copy_history.html#copy-history-view 说 -

"This Account Usage view can be used to query Snowflake data loading history for the last 365 days (1 year). The view displays load activity for both COPY INTO statements and continuous data loading using Snowpipe. The view avoids the 10,000 row limitation of the LOAD_HISTORY View."


问题#1 #3 似乎取代了#2,因为持续时间为 365 天,它不仅为批量加载维护元数据,而且还为连续加载维护元数据。另外,#2 显然有行限制。 #3 中的视图默认仅对 ACCOUNTADMIN 角色可用。 但是,如果 Snowflake 确实拥有过去 365 天的信息,为什么仅在 64 天后就强制使用 LOAD_UNCERTAIN_FILES?

问题 #2 来源 #1 和来源 2 不一致吗?

将文件复制到 table 中的行为最重要的数字是 64 天。如果您从一个阶段 运行 COPY INTO 命令而不按列表或模式限制文件,Snowflake 将不会重新加载它在过去 64 天内加载的文件。

您可以在复制选项中使用 FORCE = TRUE 覆盖它,https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html#copy-options-copyoptions。这将使它加载文件,无论它们是否被标记为已加载。

当满足以下三个条件时,为了COPY INTO命令的目的,Snowflake不知道一个文件是否有是否已经加载:

  • 文件的 LAST_MODIFIED 日期(即暂存文件的日期)是 超过 64 天。
  • 初始数据集加载到table超过64天 早些时候。
  • 如果文件已成功加载到 table,则此
    事件发生时间超过 64 天。

在这些条件下,LOAD_UNCERTAIN_FILES 选项适用。

另外两次涉及报告,而不是 COPY INTO 命令的行为。 14天是针对返回的LISTLS命令信息。 365 天是 Snowflake 通过“snowflake”数据库共享给客户的数据。数据可能需要 15 分钟到 3 小时才能显示在此数据库中,具体取决于相关视图。之后会保留365天。