【问题标题】:how to Copy from big table to another table in snowflake?如何在雪花中从大表复制到另一张表?
【发布时间】:2021-08-30 21:06:18
【问题描述】:

我有一个 7TB+- 的雪花表,我想将该表的一半传递给一个新表。例如使用国家过滤器。你会推荐什么技术?插入 select * from TABLE where COUNTRY = 'A' 或使用雪管将镶木地板格式发送到 S3,然后将表复制到雪花目标表中

我尝试了第一个选项。 5 小时后,进程进行到 35%。我读了一篇文章,其中一个人必须将集群扩展到 XL 实例。他读了另一篇文章,其中雪管是不错的选择。我的集群只是一个 XS :(

顺便说一句,我有集群键,任务是按公司政治按国家/地区划分数据。

原始表格是关于来自已安装应用的设备的事件。每会话分钟 30 个事件,例如 Uber 应用程序或 Lyft 应用程序

【问题讨论】:

  • 作为一个测试,您可以尝试克隆表然后删除不需要的行吗?
  • 他们在社区里给了我几个选择。物化视图,普通视图,插入选择。将集群上传到 xl 几个小时
  • 这完全取决于您计划如何使用结果表,以及您希望它们的同步程度。问题中缺少该部分。
  • 对不起。原始表格是关于来自已安装应用程序的设备的事件。每会话分钟 30 个事件,例如 Uber 应用程序
  • 但是您打算如何使用生成的表格?如果没有对它们进行更新,并且您需要使它们与主表保持同步,那么视图将是有意义的。但取决于结果的预期用途

标签: snowflake-cloud-data-platform


【解决方案1】:

MV 肯定会比标准视图性能更高,但由于 Snowflake 必须使 MV 与表格保持同步,因此会产生额外的成本。听起来表格将迅速变化,因此此成本将是连续的。

另一种选择是在源表上创建一个流并使用任务将流数据合并到目标表中。任务需要一个运行中的仓库,但我发现 XS 仓库功能非常强大,因此您每天至少需要 24 个学分。任务也有至少 1 分钟的间隔,所以如果你需要最前沿,那可能会打折这个选项

【讨论】:

  • 文档中的建议之一是 - 视图的基表不经常更改。我不知道它是否适用于我。
  • 通过更改,我认为他们指的是正在插入/更新的数据,因为这意味着一个不断运行的过程以保持 MV 同步。这将导致成本增加。标准视图不会为此产生任何额外费用。如果您在 SELECT 中显式命名每一列,则新列不会导致问题,但如果您重命名列或使用 SELECT *,则需要更新定义
猜你喜欢
  • 2018-06-24
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 2011-07-21
相关资源
最近更新 更多