雪花数据仓库 - 使用字母数字字符而不是整数生成维度 id
Posted
技术标签:
【中文标题】雪花数据仓库 - 使用字母数字字符而不是整数生成维度 id【英文标题】:Snowflake data warehouse - Generate dimension id with alpha-numeric character instead of integer 【发布时间】:2019-03-06 22:25:03 【问题描述】:在 Snowflake 数据仓库中使用字母数字字符组合而不是整数生成维度 id 是否是个好主意? (https://www.snowflake.com/) 例如:假设我必须从具有 3 个键组合的源表构建维度表。通常我们构建增量整数列代理键作为维度 id。相反,创建一个字符串列 key1_key2_key3(concatenated source keys) 作为生成维度 id 的代理键是否更好?由于雪花是分布式数据库并且性能良好,我觉得这应该没问题。我想看看有什么不可预见的影响?
【问题讨论】:
整数总是会更快一些,并且使用更少的内存作为连接键,所以如果你可以管理它,它是一个首选的解决方案。 有道理!谢谢! 【参考方案1】:您的问题似乎是:您应该使用代理键(单调递增的整数)还是业务键的串联作为维度中的主键。
除了使用代理键的存储和性能优势之外,您还需要考虑使用代理键的主要原因 - 缓慢变化的维度。如果您决定在某个时候跟踪对维度记录的更改,您将希望在维度中使用代理键,因为您的业务键的连接会随着时间的推移而重复。
【讨论】:
【参考方案2】:我会将dimension id
创建为整数,并将另一列添加为surrogate key
。因此,您将遵循标准并像所有其他维度表一样拥有一个整数键。如果您认为代理键有意义并将用于连接/过滤器,请随意添加。
我的观点是,在该特定维度表中将维度 id 作为整数将防止您偏离最佳实践。
此链接说明何时何地使用代理键是有意义的。
https://www.kimballgroup.com/1998/05/surrogate-keys/
【讨论】:
以上是关于雪花数据仓库 - 使用字母数字字符而不是整数生成维度 id的主要内容,如果未能解决你的问题,请参考以下文章