是否已对Snowflake数据加载最佳实践进行规范化或非规范化?

时间:2019-11-20 04:13:01

标签: snowflake-data-warehouse

打算在Snowflake上进行POC,只是想查看围绕将数据加载到雪花上的最佳做法:

  1. 应该以标准化形式加载数据(将相关信息分组并存储到多个表中)还是采用非标准化形式?这里推荐什么?。
  2. 还是将数据转储到一个表并从一个表创建多个视图?但是,以为这张大表有1.5亿条记录,并且有一个名为“澳大利亚州”的列,我们知道在澳大利亚只有6个州。如果创建一个视图以通过视图从主表中提取澳大利亚州信息,我觉得这比将澳大利亚州信息存储在单独的表中要贵得多,这就是我所说的规范化..?
  3. 在Snowflake中加载SCD-2尺寸的方法是什么?有兴趣了解执行此操作的有效方法吗?

2 个答案:

答案 0 :(得分:1)

您的问题1.和2.似乎更多地是关于分区(或在Snowflake术语中的“集群”)而不是规范化。这也关系到性能与可维护性。

两个世界最好的是有一个表,其中Australia State是聚簇键。正确的设置将允许有效的Query pruning。在Clustering Keys & Clustered Tables中了解更多信息。

重新。问题3.调查MERGE。也许您还可以从阅读Working with SCD-Type-II in Snowflake

中获得一些提示。

答案 1 :(得分:0)

我将以“最合理的方式对其进行“更新”和“使用”的方式加载数据”

这意味着我们有从PostgreSQL DB同步/流式传输的数据(实际上是许多形式),并且其中一些在加载时确定了尺寸(SCD1 / SCD2 / SCD6)。对于此数据,我们具有更新时间戳记,我们加载记录,锻炼更改并构建维度数据。

如果您已经具有尺寸数据,并且这只是一次数据移动。转储您拥有的表,然后加载它们。在雪花中创建新表的确很便宜,因此我们只是尝试了一些事情,并弄清楚了适合我们数据入口模式的东西,以及我们如何读取数据以改善/帮助集群,或避免了自动集群操作带来的成本浪费