維度的每一個屬性都有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]