【问题标题】:Snowflake data warehouse - Generate dimension id with alpha-numeric character instead of integer雪花数据仓库 - 使用字母数字字符而不是整数生成维度 id
【发布时间】:2019-03-06 22:25:03
【问题描述】:

在 Snowflake 数据仓库中使用字母数字字符组合而不是整数生成维度 id 是否是个好主意? (https://www.snowflake.com/) 例如:假设我必须从具有 3 个键组合的源表构建维度表。通常我们构建增量整数列代理键作为维度 id。相反,创建一个字符串列 key1_key2_key3(concatenated source keys) 作为生成维度 id 的代理键是否更好?由于雪花是分布式数据库并且性能良好,我觉得这应该没问题。我想看看有什么不可预见的影响?

【问题讨论】:

  • 整数总是会更快一些,并且使用更少的内存作为连接键,所以如果你可以管理它,它是一个首选的解决方案。
  • 有道理!谢谢!

标签: snowflake-cloud-data-platform


【解决方案1】:

您的问题似乎是:您应该使用代理键(单调递增的整数)还是业务键的串联作为维度中的主键。

除了使用代理键的存储和性能优势之外,您还需要考虑使用代理键的主要原因 - 缓慢变化的维度。如果您决定在某个时候跟踪对维度记录的更改,您将希望在维度中使用代理键,因为您的业务键的连接会随着时间的推移而重复。

【讨论】:

    【解决方案2】:

    我会将dimension id 创建为整数,并将另一列添加为surrogate key。因此,您将遵循标准并像所有其他维度表一样拥有一个整数键。如果您认为代理键有意义并将用于连接/过滤器,请随意添加。

    我的观点是,在该特定维度表中将维度 id 作为整数将防止您偏离最佳实践。

    此链接说明何时何地使用代理键是有意义的。

    https://www.kimballgroup.com/1998/05/surrogate-keys/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多