在Snowflake数据仓库中用字母数字字符组合而不是整数生成尺寸id是一个好主意吗? (https://www.snowflake.com/)例如:假设我必须使用3个组合键从源表中构建维度表。通常,我们将增量整数列代理键构建为维度ID。相反,是否最好创建一个字符串列key1_key2_key3(连接的源键)作为生成维ID的替代键?由于雪花是分布式数据库并且运行良好,因此我认为应该可以。我试图看到任何无法预料的影响?
答案 0 :(得分:1)
我将创建dimension id
为整数,并添加另一列为surrogate key
。因此,您将遵循标准并像所有其他维度表一样具有整数键。如果您认为代理键很有意义,并且可以在联接/过滤器中使用,请随时添加。
我要指出的是,在该特定尺寸表中将尺寸ID作为整数,可以防止您遵循最佳做法。
此链接说明何时和何处使用代理键是合理的。
答案 1 :(得分:1)
您似乎要问的是:应该使用代理键(单调递增的整数)还是将业务键的级联作为维度中的主键。
除了使用代理密钥的存储和性能优势外,您还需要考虑使用代理密钥的主要原因-缓慢更改尺寸。如果您决定在某个时候跟踪对维记录的更改,则您将希望在维中使用代理键,因为业务键的连接会随着时间重复。