我正在尝试为一个层次化的维度建模,并且在每个级别上具有不确定数量的特征。下面是有关表格在数据源中的结构的示例
+-------------+ +-------------+ +-------------+
|Product +--------------+SubCategory +----------------+Category |
+------+------+ +------+------+ +-------+-----+
| | |
| | |
+------+----------+ +-------+-------------+ +-------+----------+
|Product Features | |SubCategory Features | |Category Features |
+-----------------+ +---------------------+ +------------------+
Product -> SubCategory 和 SubCategory -> Category 之间存在一对多关系。每个产品/子类别/类别还引用它们各自的功能表。然而,特征的数量并不固定,可能为 0。
我正在尝试构建的事实表需要处于其粒度的产品级别,并且如果没有这些功能,我只能将其中的每一个作为列创建一个维度,如下所示:
+-----------------+
|Dim_Product |
+-----------------+
|Dim_Product_Id |
|Product |
|SubCategory |
|Category |
|... |
+-----------------+
但是所有的特征都会丢失。
是否可以将维度保留在产品级别并保留每个层次结构中的所有功能?或者是否有必要制作一个包含层次结构中所有功能的所有组合的桥接表?我是否需要将级别分解为它们自己的维度(即 Dim_Product、Dim_SubCategory、Dim_Category)?每个层次结构级别也有固定的属性,所以如果单个维度是合适的选择,是否可以将这些属性展平并作为列包含在内?
最佳答案
这似乎很棘手,因为您不知道确切的特征数量,这是我的建议,尽管桥接表会很大。
+-----------------+
|Dim_Product |
+-----------------+
|Dim_Product_Id |
|Product |
|SubCategory |
|Category |
|... |
+-----------------+
|
|
+-----------------+
|BridgeTable |
+-----------------+
|Dim_Product_Id |
|Feature_Id |
+-----------------+
|
|
+-----------------+
|Features |
+-----------------+
|Feature_Id |
|FeatureDescription
|TypeOfFeature |
+-----------------+
TypeOfFeature
是(ProductFeature、SubCategory、Category)之一。
关于sql - 建模分层数据仓库维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23912046/