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

问题描述

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

值字面上是“是”和“否”。

或者我应该将它与其他值结合起来并将其变成垃圾维度?

编辑:

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

如果您连接一个只有几行的表,查询性能似乎不会受到太大影响,但与其对可能包含不超过 2-3 个值的表进行一堆连接,它会更好只需创建一个垃圾维度并执行 1 个连接。

似乎对我的问题最好的解决方案就是把它变成一个垃圾维度。

解决方法

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

静态尺寸

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

垃圾维度

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

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

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

,

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

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

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

这似乎有点矫枉过正,但系统并不关心连接到两行表。与以后需要时重写架构相比,向现有的垃圾维度添加新属性要容易得多。此外,一旦您发布设计以供使用,您的用户将有利用这些属性的查询。这使得改变极其困难,如果不是不可能的话。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...