【发布时间】:2020-02-20 01:35:02
【问题描述】:
首先,我不确定 Snowpipe 的现有功能是否可以做到这一点。
我有一个包含多年数据的 S3 存储桶,有时其中一些文件会更新(内容会发生变化,但文件名保持不变)。我希望使用 Snowpipe 将这些文件导入 Snowflake,因为“我们不会重新导入已修改的文件”方面对我很有吸引力。
但是,我发现ALTER PIPE ... REFRESH 只能用于导入不早于 7 天前上演的文件,而 Snowflake 文档中唯一其他关于导入历史数据的建议是使用 COPY INTO ...。 但是,如果我使用它,那么如果这些旧文件被修改,它们会通过 Snowflake 导入,因为阻止 COPY INTO ... 重新导入 S3 文件的元数据和 Snowpipe 的元数据不同,所以我可以将那个文件导入两次。
除了“修改所有 S3 中的这些文件,使它们具有最近修改的时间戳”之外,是否有任何方法可以让我使用 Snowpipe?
【问题讨论】:
-
ALTER PIPE...REFRESH 也只会加载尚未加载的文件。它旨在解决短期问题,而不是处理常规生产模式。不过,我对您的问题感到有些困惑。是否要重新加载修改过的文件?
-
我希望重新加载修改为 not 的文件。我只会使用一次
ALTER PIPE ... REFRESH,以获取 Snowpipe 无法获取的任何过去数据。 -
我明白了,所以担心这些文件可能超过 7 天,您想找到一种方法让 ALTER PIPE ... REFRESH 找到它们?您知道需要加载哪些文件丢失了吗?
-
要么我想让
ALTER PIPE ... REFRESH找到它们,这样如果它们在未来被编辑,Snowpipe 就不会重新摄取它们,或者其他导致与 Snowpipe 相同情况的方法.根据我对文档的理解,ALTER PIPE ... REFRESH只需要最后 7 天的暂存文件,所以我想在此之前加载所有内容(例如,从 2018 年 1 月 1 日到 7 天前)。 -
我还有 1 个问题,因为我不确定 Snowpipe 是否真的适合您想要做的事情。您的 S3 存储桶包含偶尔会更新的历史数据……是直接利用并由其他东西更新的数据湖吗?一旦将文件加载到 Snowflake 中,您是否可以移动文件?您的问题有很多解决方案,我只是想确保提供一种适合您环境的解决方案。
标签: snowflake-cloud-data-platform