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

Posted

技术标签:

【中文标题】Snowflake 真正维护文件加载历史记录的时间有多长?【英文标题】:How long does Snowflake really maintain file load history? 【发布时间】:2021-10-27 15:43:56 【问题描述】:

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

“Snowflake 维护每个表的详细元数据,其中数据 已加载...此加载元数据将在 64 天后过期...”后跟 LOAD_UNCERTAIN_FILES 复制选项的解释。这个选项 告诉雪花是否加载元数据的文件, 超过 64 天,已被清除。

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

"Snowflake 保留执行的 COPY INTO 命令的历史数据 在过去 14 天内... 使用 LOAD_HISTORY 信息架构 查看使用 COPY 检索加载到表中的数据的历史记录 INTO 命令”

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

"此Account Usage视图可用于查询Snowflake数据加载 过去 365 天(1 年)的历史记录。视图显示负载 COPY INTO 语句和连续数据的活动 使用雪管加载。该视图避免了 10,000 行的限制 LOAD_HISTORY 视图。”


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

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

【问题讨论】:

【参考方案1】:

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

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

当满足以下三个条件时,出于 COPY INTO 命令的目的,Snowflake 不知道文件是否已经加载: p>

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

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

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

【讨论】:

感谢@Greg Pavlik,您对 snowflake 数据库中 3 小时延迟的澄清很有帮助,并且您重申了 3 个接口背后的目的。跨度>

以上是关于Snowflake 真正维护文件加载历史记录的时间有多长?的主要内容,如果未能解决你的问题,请参考以下文章

在 GitHub 上维护线性历史记录,同时拥有 2 个永久分支

Snowflake:数据加载文件大小建议

历史数据加载的雪花任务,时间限制

如何将 CSV 文件批量加载到 Snowflake 中,并将文件名添加为列?

Parquet 文件加载到 Snowflake 时跳过标题

使用 python 将 csv 文件加载到 SnowFlake 表中