维度表:是否值得创建一个只有 2 个值的维度?

Dimension Tables: is it worth creating a dimension with only 2 values?

是否值得创建一个只有 2 个值的维度?

值的字面意思是“是”和“否”。

还是应该和其他值结合起来变成垃圾维度?

编辑:

不确定为什么关闭它,因为它不是基于意见,而是基于记录数量等。

如果您使用只有几行的 table 连接,而不是使用 table 进行连接,那么查询性能似乎不会受到太大影响包含不超过 2-3 个值,最好只创建一个垃圾维度并进行 1 个连接。

看来我的问题最好的解决办法就是把它变成一个垃圾维度。

您可以同时使用静态维度或垃圾维度:

静态维度

静态维度不是从原始数据源中提取的,而是在数据仓库的上下文中创建的。静态维度可以手动加载(例如使用状态代码),也可以通过过程生成,例如日期或时间维度。此外,状态代码维度主要是静态维度。

垃圾维度

有些属性的基数非常低(不同的可能值)。这些属性既不属于某个维度 table,也没有重要到足以为它们创建一个单独的维度。垃圾维度创建此类属性的所有不同值的组合,并将其存储在单个垃圾维度 table 中。这些行的代理键插入到事实 table 中。所以现在事实 table 不再为这些属性中的每一个设置多个外键,而是为垃圾维度中的每一行设置一个外键 table

示例-:状态(通过、失败)收入类别(低、中、高)

注意:注意,另一个维度 = 更多连接 = 复杂查询

简答,是的。值得创建一个包含属性所有可能值的维度。

垃圾维度的目的是将那些非常小的维度组合成更大的 table 以消除不必要的连接。即使这个 Yes/No 值是唯一具有如此小集合的属性,仍然值得创建一个垃圾维度,因为...

仓库在增长。您最终会发现其他非常适合包含在垃圾维度中的属性(sex/gender、婚姻状况、已故等)。第一次就做对,让您的仓库走上一条好的道路。

这看起来有点矫枉过正,但系统并不关心加入两行 table。向现有垃圾维度添加新属性比在以后需要时重写您的架构要容易得多。此外,一旦您发布设计供使用,您的用户将查询利用这些属性。这使得改变极其困难,甚至不可能。