维度的每一个属性都有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]