维度属性的KeyColumns,NameColumn和ValueColumn

 

维度的每一个属性都有KeyColumns,NameColumn和ValueColumn

1,如何理解KeyColumns,NameColumn和ValueColumn?对一行记录有不同的标识列,但标识的是同一行记录。

对于int类型,占用存储空间小,容易聚合,适合做primary key,但是不易阅读;

char类型的数据,容易阅读,适合作为Name Column;

对于一个有具体类型的数据,其value必须能够做一些运算,例如Date类型,能够做Year(),dateadd()等运算,这些可以通过ValueColumn来进行。

示例,一个表Record(ID,Name,Value),有一行数据(1,20150201,1/2/2015)

那么ID=1是keyColumn,Name=20150201是NameColumn,Value=1/2/2015是ValueColumn。

2,在每一个维度属性的Source Properties中设置KeyColumns,NameColumn和ValueColumn

KeyColumns是必须设置列的

NameColumn 如果没有设置列,那么默认值是KeyColumn

ValueColumn 如果没有设置列,那么默认值是NameColumn

2.1,示例是DimDate维度的MonthNumberOfYear属性

KeyColumns 是MonthNumberOfYear,KeyColumns一般是Int类型的

NameColumn是EnglishMonthName,NameColumn是WChar类型的

ValueColumn是空的,默认值是NameColumn的列,即EnglishMonthName

2.2 查看KeyColumns,NameColumn和ValueColumn

2.2.1 直观上看,Month Number of Year 这个Level下的所有成员显示是NameColumn,是每个月的English Name

2.2.2通过MDX语句查询

复制代码
WITH MEMBER Measures.ValueColumn 
    as [Dim Date].[Month Number Of Year].&[4].MemberValue 
MEMBER Measures.KeyColumn 
    as [Dim Date].[Month Number Of Year].&[4].Member_Key 
MEMBER Measures.NameColumn 
as [Dim Date].[Month Number Of Year].&[4].Member_Name 
 
SELECT {Measures.KeyColumn, Measures.NameColumn, Measures.ValueColumn} ON 0 
FROM [Adventure Works DW2012]
复制代码

查询结果如下

2.2.3 通过Member properties查看

复制代码
SELECT [Dim Date].[Date Key] on COLUMNS,
[Dim Date].[Month Number Of Year].[Month Number Of Year].members
DIMENSION PROPERTIES
 KEY0 ,
 LEVEL_NUMBER ,
 LEVEL_UNIQUE_NAME ,
 MEMBER_CAPTION , 
 MEMBER_KEY , 
 MEMBER_NAME , 
 MEMBER_TYPE ,
 MEMBER_UNIQUE_NAME , 
 MEMBER_VALUE , 
 UNIQUE_NAME  
 ON ROWS
FROM  [Adventure Works DW2012]
复制代码

--业精于勤而荒于嬉,行成于思而毁于随-- --欢迎转载,转载请注明出处--
http://www.cnblogs.com/ljhdo/p/4608280.html
原文地址:https://www.cnblogs.com/sthinker/p/5966571.html