建模分层数据仓库维度

Posted

技术标签:

【中文标题】建模分层数据仓库维度【英文标题】:modelling hierarchical data warehouse dimension 【发布时间】:2014-05-28 12:47:19 【问题描述】:

我正在尝试对分层的维度进行建模,并且在每个级别上具有不确定数量的特征。下面是一个关于如何在数据源中构建表的示例

+-------------+              +-------------+                +-------------+     
|Product      +--------------+SubCategory  +----------------+Category     |     
+------+------+              +------+------+                +-------+-----+     
       |                            |                               |           
       |                            |                               |           
+------+----------+         +-------+-------------+         +-------+----------+
|Product Features |         |SubCategory Features |         |Category Features |
+-----------------+         +---------------------+         +------------------+

Product -> SubCategory 和 SubCategory -> Category 之间存在一对多关系。每个 Product/SubCategory/Category 还引用了它们各自的功能表。然而,特征的数量不是固定的,可能是 0。

我正在尝试构建的事实表需要处于产品级别,因为它的粒度,如果没有这些功能,我可以将这些中的每一个作为列创建一个维度,如下所示:

+-----------------+
|Dim_Product      |
+-----------------+
|Dim_Product_Id   |
|Product          |
|SubCategory      |
|Category         |
|...              |
+-----------------+

但随后所有功能都会丢失。

是否可以将维度保留在产品级别并保留每个层次结构的所有功能?或者是否有必要制作一个包含层次结构中所有特征的所有组合的桥接表?我是否需要将级别分解为它们自己的维度(即 Dim_Product、Dim_SubCategory、Dim_Category)?每个层次结构级别也有固定的属性,所以如果单个维度是合适的选项,是否可以将这些属性展平并作为列包含在内?

【问题讨论】:

【参考方案1】:

这似乎很棘手,因为您不知道确切的特征数量,这是我的建议,尽管桥接表会很大。

+-----------------+
|Dim_Product      |
+-----------------+
|Dim_Product_Id   |
|Product          |
|SubCategory      |
|Category         |
|...              |
+-----------------+
         |
         | 
+-----------------+
|BridgeTable      |
+-----------------+
|Dim_Product_Id   |
|Feature_Id       |
+-----------------+
         |
         |
+-----------------+
|Features         |
+-----------------+
|Feature_Id       |
|FeatureDescription
|TypeOfFeature    |
+-----------------+

TypeOfFeature 是(ProductFeature、SubCategory、Category)之一。

【讨论】:

以上是关于建模分层数据仓库维度的主要内容,如果未能解决你的问题,请参考以下文章

一文带你认清数据仓库“维度模型设计”与“分层架构” | 原力计划

数据仓库设计要点

数仓建模分层理论

数据仓库的概念以及建模方法

数据仓库的概念以及建模方法

大数据基础知识——数仓的搭建(维度建模)