共用方式為


Analysis Services 資料庫的擴展欄位屬性(SSRS)

SQL Server Analysis Services 數據處理延伸模組支援擴充字段屬性。 擴充欄位屬性是除了欄位屬性之外的額外屬性,這些屬性在數據源上可用,並且由數據處理延伸模組支援ValueIsMissing。 擴充屬性不會出現在 [報表數據] 窗格中,作為報表數據集欄位集合的一部分。 您可以在報表中包含擴展欄位的屬性值,方法是撰寫表達式,透過內建的 Fields 集合依名稱指定這些值。

擴充屬性包括預先定義的屬性和自定義屬性。 預先定義的屬性是多個數據源通用的屬性,這些數據源對應至特定功能變數名稱,而且可以透過內建 Fields 集合依名稱存取。 自定義屬性專屬於每個資料提供者,而且只能透過使用擴充屬性名稱做為字元串的語法,透過內 Fields 建集合來存取。

當您在圖形模式中使用 Analysis Services MDX 查詢設計工具來定義查詢時,系統會自動將一組預先定義的儲存格屬性和維度屬性新增至 MDX 查詢。 您只能使用報表中 MDX 查詢中特別列出的擴充屬性。 根據您的報表,您可能想要修改預設 MDX 命令文字,以包含 Cube 中定義的其他維度或自定義屬性。 如需 Analysis Services 數據源中可用之擴充字段的詳細資訊,請參閱 建立和使用屬性值 (MDX)

在報表中使用欄位屬性

擴充欄位屬性包括預先定義的屬性和數據提供者特定屬性。 欄位屬性不會出現在 [ 報表數據 ] 窗格中的欄位清單,即使它們位於為數據集建置的查詢中;因此,您無法將欄位屬性拖曳到報表設計介面上。 相反地,您必須將欄位拖曳到報表上,然後將欄位的 Value 屬性變更為您想要使用的屬性。 例如,如果 Cube 裡的儲存格資料已經格式化,您可以使用下列運算式來使用 FormattedValue 字段屬性:=Fields!FieldName.FormattedValue

若要參考未預先定義的擴充屬性,請在表示式中使用下列語法:

  • 欄位!FieldName(「PropertyName」)

預先定義的欄位屬性

在大部分情況下,預先定義的欄位屬性會套用至量值、層級或維度。 預先定義的欄位屬性必須具有儲存在 Analysis Services 數據源中的對應值。 如果值不存在,或者如果您在某個層級上指定僅度量欄位屬性(例如),則屬性會傳回空值。

您可以使用下列任一語法,從表示式參考預先定義的屬性:

  • 領域!FieldName.PropertyName

  • 欄位!FieldName(「PropertyName」)

下表提供您可以使用的預先定義欄位屬性清單。

財產 型別 描述或預期值
Value Object 指定欄位的數據值。
IsMissing Boolean 指出欄位是否存在於產生的資料集中。
UniqueName String 傳回層級的完整名稱。 例如,UniqueName 員工的值可能是 [Employee].[員工部門].[部門].&[Sales].&[北美銷售經理].&[272]
BackgroundColor String 傳回欄位資料庫中定義的背景色彩。
Color String 傳回專案資料庫中定義的前景色彩。
FontFamily String 傳回專案資料庫中定義的字型名稱。
FontSize String 傳回項目資料庫中定義的字型點大小。
FontWeight String 傳回資料庫中項目定義的字型粗細。
FontStyle String 傳回專案資料庫中定義的字型樣式。
TextDecoration String 返回資料庫中為項目定義的特殊文字格式。
FormattedValue String 傳回度量值或關鍵數據的格式化值。 例如,FormattedValueSales Amount Quota 的 屬性會傳回貨幣格式,例如 $1,124,400.00。
Key Object 傳回層級的鍵值。
LevelNumber Integer 針對父子式階層,會傳回層級或維度編號。
ParentUniqueName String 針對父子式階層,會傳回父層級的完整名稱。

備註

只有當資料來源(例如,Analysis Services Cube)在報表執行時提供並擷取其資料集的數據時,這些延伸欄位屬性的值才會存在。 然後,您可以使用下一節所述的語法,從任何表達式參考這些欄位屬性值。 不過,因為這些欄位是此資料提供者特有的,因此您對這些值所做的變更不會與報表定義一起儲存。

擴充屬性範例

為了說明擴充屬性,下列 MDX 查詢和結果集包含數個成員屬性,可從針對 Cube 定義的維度屬性取得。 包含的成員屬性為 MEMBER_CAPTION、UNIQUENAME、Properties(“Day Name”),MEMBER_VALUE、PARENT_UNIQUE_NAME和MEMBER_KEY。

此 MDX 查詢會針對 AdventureWorks2012 DW 資料庫中的 AdventureWorks2012 Cube 執行,並隨附於 AdventureWorks2012 範例資料庫。

WITH MEMBER [Measures].[DateCaption]   
      AS '[Date].[Date].CURRENTMEMBER.MEMBER_CAPTION'   
   MEMBER [Measures].[DateUniqueName]   
      AS '[Date].[Date].CURRENTMEMBER.UNIQUENAME'   
   MEMBER [Measures].[DateDayName]   
      AS '[Date].[Date].Properties("Day Name")'   
   MEMBER [Measures].[DateValueinOriginalDatatype]   
      AS '[Date].[Date].CURRENTMEMBER.MEMBER_VALUE'   
   MEMBER [Measures].[DateParentUniqueName]   
      AS '[Date].[Date].CURRENTMEMBER.PARENT_UNIQUE_NAME'   
   MEMBER [Measures].[DateMemberKeyinOriginalDatatype]   
      AS '[Date].[Date].CURRENTMEMBER.MEMBER_KEY'   
SELECT {  
   [Measures].[DateCaption],   
   [Measures].[DateUniqueName],   
   [Measures].[DateDayName],   
   [Measures].[DateValueinOriginalDatatype],  
   [Measures].[DateParentUniqueName],  
   [Measures].[DateMemberKeyinOriginalDatatype]  
   } ON COLUMNS , [Date].[Date].ALLMEMBERS ON ROWS   
FROM [Adventure Works]  
  

當您在 MDX 查詢窗格中執行此查詢時,您會取得具有 1158 個資料列的結果集。 下表顯示前四個數據列。

DateCaption 日期唯一名稱 日期天名稱 原始數據類型中的日期值 日期父項唯一名稱 日期成員鍵在原始數據類型中
所有期間 [日期]。[日期]。[所有期別] (Null) (Null) (Null) 0
1-Jul-01 [日期]。[日期].&[1] 星期日 7/1/2001 [日期]。[日期]。[所有期間] 1
2-Jul-01 [日期]。[Date].&[2] 星期一 7/2/2001 [日期]。[日期]。[所有期間] 2
3-Jul-01 [日期]。[日期].&[3] 星期二 7/3/2001 [日期]。[日期]。[所有期間] 3

以圖形化模式使用 MDX 查詢設計工具建置的預設 MDX 查詢只會包含維度屬性的MEMBER_CAPTION和 UNIQUENAME。 根據預設,這些值一律為資料類型 String

如果您需要其原始數據類型中的成員屬性,您可以在以文字為基礎的查詢設計工具中修改預設 MDX 語句,以包含額外的屬性MEMBER_VALUE。 在下列簡單的 MDX 語句中,MEMBER_VALUE已新增至要擷取的維度屬性清單。

SELECT NON EMPTY {[Measures].[Order Count]} ON COLUMNS,   
NON EMPTY { ([Date].[Month of Year].[Month of Year] ) }   
DIMENSION PROPERTIES   
   MEMBER_CAPTION, MEMBER_UNIQUE_NAME, MEMBER_VALUE ON ROWS   
FROM [Adventure Works]  
CELL PROPERTIES   
   VALUE, BACK_COLOR, FORE_COLOR,   
   FORMATTED_VALUE, FORMAT_STRING,   
   FONT_NAME, FONT_SIZE, FONT_FLAGS  

在 [MDX 結果 窗格] 中,結果的前四行會出現在下表中。

年月 訂單計數
一月 2,481
二月 2,684
三月 2,749
四月 2,739

即使屬性是 MDX select 語句的一部分,它們也不會出現在結果集數據行中。 不過,可以使用擴充屬性功能來取得數據以供報表使用。 在 SQL Server Management Studio 的 MDX 查詢結果窗格中,您可以雙擊儲存格,如果這些屬性值在 cube 中已設定,就可以查看它們。 如果您按兩下包含 1,379 的第一個 Order Count 單元格,您會看到具有下列儲存格屬性的彈出視窗:

房產 價值觀
CellOrdinal 0
價值 2481
背景顏色 (Null)
FORE_COLOR (Null)
FORMATTED_VALUE 2,481
FORMAT_STRING #,#
FONT_NAME (Null)
字型大小 (Null)
字體標記 (Null)

如果您使用此查詢建立報表資料集,並將資料集系結至資料表,您可以看到欄位的預設 VALUE 屬性,例如 =Fields!Month_of_Year!Value。 如果您將此表達式設定為數據表的排序表示式,則結果會依月份依字母順序排序數據表,因為 Value 字段會使用 String 數據類型。 若要將數據表排序,使月份按照一年中的自然順序排列,即1月在前,12月在後,請使用下列運算式:

=Fields!Month_of_Year("MEMBER_VALUE")  

這會從數據源排序其原始整數數據類型中的域值。

另請參閱

運算式 (報表產生器及 SSRS)
運算式中的內建集合 (報表產生器及 SSRS)
資料集欄位集合 (報表產生器及 SSRS)