【发布时间】:2020-09-17 06:26:34
【问题描述】:
以下两种情况在性能上有什么区别,其中一种在执行和存储方面进行了成本优化。
- 使用 S3 中的文件创建外部表,并从外部表加载(“INSERT INTO.... SELECT...”)到 Snowflake 目标。
- 将数据从 S3 加载到临时表,然后从临时表加载(“INSERT INTO.... SELECT...”)到 Snowflake 目标。
【问题讨论】:
-
嗨 - 你能澄清一下临时表是什么意思吗?这个临时表在哪里,您如何将数据加载到其中?当您说“load(INSERT)”时,您的意思是使用“INSERT INTO.... SELECT...”语句还是使用“COPY INTO...”语句?
-
使用 COPY 命令将数据加载到 Snowflake 中的 TEMP 表中,然后使用“INSERT INTO.... SELECT...”命令进行数据加载。如果还需要任何澄清,请告诉我。
-
COPY 在 Snowflake 中比 INSERT 快得多。但是,我不会使用您列出的两个选项中的任何一个。为什么不直接将 S3 文件复制到目标表中?您考虑创建外部/临时表是否有特定原因?
-
是的,有一个特定的原因,想要从不同的源(S3、Azure Gen2、Google 存储)下推逻辑(加入、过滤器、聚合器、函数)。您能否分享一些见解 EXTERNAL 表是如何工作的,它是否使用任何临时存储?因为“INSERT INTO.... SELECT...”适用于外部表。
标签: snowflake-cloud-data-platform