SQL SERVER 2005 SSAS 维度关系的优先级问题

 

关于SQL SERVER 2005 数据仓库中维度层次关系的确认:

最近在研究SQL SERVER 2005数据仓库的维度的时候发现个有趣的现象现在写下来免得以后忘了:

有这么一组关系:

其中Product表是产品表,DimProductSubcategory是产品子类,DimProductCategory是产品大类,从属关系就是这样的Product——>DimProductSubcategory——>DimProductCategory,但是呢Product有个字段sc又可以直接确定DimProductCategory表所以还有一条关系

Product——> DimProductCategory

现在有如下层次结构:

其中产品名称就是由Product表的主键ProductKey确定的,Product Subcategory NameDimProductSubcategory表的主键ProductSubcategoryKey确定,而Product Category NameDimProductCategory表的主键ProductCategoryKey确定(注意:层次关系中不要用成员属性来制定维度中的层次成员关系,本示例将Product Subcategory NameProduct Category Name在成员属性中直接和产品名称产生关系,否则本文章讨论的东西无效!)

现在问题就来了:

首先按照这个层次关系要由产品名称确定Product Subcategory Name再确定Product Category Name就有两条路线

(1)       Product——>DimProductSubcategory——>DimProductCategory

(2)       Product——> DimProductCategoryProduct——>DimProductSubcategory

那么在确定DimProductCategory的时候,确定线路到底是使用(1)还是(2)呢?

对于这个问题我做了测试,发现如下:

当在数据源视图中确定这两组线路的时候,VS会自动给两组线路开始的地方(就是Product表)给两组线路分别加上优先级,优先级大的就作为层次结构的确定路线,优先级确定的方法有两种情况:

(1)       在两组线路都还没有的时候,越先制定的路线优先级越高,比如先建立了Product——> DimProductCategory,后建立Product——>DimProductSubcategory——>DimProductCategory,那么Product就认为Product——>DimProductSubcategory的优先级较高。

(2)       若两组线路都存在,现在删除其中一条按剩下的线路中优先级最大作为确定线路,比如现在删除Product——> DimProductCategory线路,那么只剩下Product——>DimProductSubcategory——>DimProductCategory线路,它就是优先级最大的了。

最后说明一下按照Product——> DimProductCategory线路确定层次关系的时候,DimProductSubcategoryDimProductCategory之间的直接关系已经无效,DimProductSubcategoryDimProductCategory的关系由Product——>DimProductSubcategory确定(因为DimProductSubcategoryProduct是多对一关系,所以DimProductSubcategory可以回朔到Product,再由Product帮其确定DimProductCategory

 

原文地址:https://www.cnblogs.com/OpenCoder/p/1507913.html