內建成員屬性 (MDX)
Analysis Services 公開維度成員的內建屬性,您可以將這些內建屬性加入查詢,以傳回用於自訂應用程式的其他資料或中繼資料,或者協助調查或建構模型。 如果使用 SQL Server 用戶端工具,可在 SQL Server Management Studio (SSMS) 中檢視內建屬性。
內建屬性包含 ID、KEY、KEYx 和 NAME,這是每個成員在任何層級公開的屬性。 您也可以傳回位置資訊,例如 LEVEL_NUMBER 或 PARENT_UNIQUE_NAME 等。
視您建構查詢的方式,以及用於執行查詢的用戶端應用程式而定,結果集中不一定會顯示成員屬性。 如果使用 SQL Server Management Studio 測試或執行查詢,可按兩下結果集中的成員,以開啟 [成員屬性] 對話方塊,並顯示每個內建成員屬性的值。
如需使用及檢視維度成員屬性的簡介,請參閱<在 SSAS 的 MDX 查詢視窗中檢視 SSMS 成員屬性>。
[!附註]
因為提供者符合 OLE DB 規格的 OLAP 小節 (1999 年 3 月 (2.6 節) ),所以 Microsoft SQL Server Analysis Services 支援此主題中列出的內建成員屬性。
SQL Server Analysis Services 以外的提供者可支援其他內建成員屬性。 如需其他提供者支援之內建成員屬性的詳細資訊,請參閱這些提供者提供的文件。
成員屬性類型
SQL Server Analysis Services 支援的內建成員屬性有兩種類型:
區分內容的成員屬性
這些成員屬性必須在特定階層或層級的內容中使用,而且要將值提供給指定維度或層級的每個成員。請注意下列範例如何包含 KEY 屬性的路徑:MEMBER [Measures].[Parent Member Key] AS [Product].[Product Categories].CurrentMember.Parent.PROPERTIES("KEY")。
不區分內容的成員屬性
這些成員屬性無法在特定的維度或層級的內容中使用,以及將值傳回給座標軸上的所有成員。不區分內容的屬性為獨立屬性,且不包含路徑資訊。 請注意,在下列範例中未針對 PARENT_UNIQUE_NAME 指定維度或層級:DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS
不管內建成員屬性是否會區分內容,都適用以下使用方式規則:
您只能指定座標軸上預計之維度成員相關的內建成員屬性。
您可以利用不區分內容的內建成員屬性,在同一個查詢中混合區分內容的成員屬性要求。
您可以使用 PROPERTIES 關鍵字以查詢屬性。
以下各節將描述 SQL Server Analysis Services 中可用的各種區分內容及不區分內容的內建成員屬性,以及如何將 PROPERTIES 關鍵字與每種屬性類型搭配使用。
區分內容的成員屬性
所有維度成員及層級成員支援區分內容的內建成員屬性清單。 下表列出這些區分內容的屬性。
屬性 |
描述 |
---|---|
ID |
內部維護用的成員識別碼。 |
Key |
原始資料類型的成員索引鍵值。 MEMBER_KEY 是為回溯相容性而提供。 對於非複合索引鍵,MEMBER_KEY 的值與 KEY0 相同,對於複合索引鍵,MEMBER_KEY 屬性為 Null。 |
KEYx |
成員的索引鍵,其中 x 是索引鍵以零為基底的序數。 KEY0 可用於複合和非複合索引鍵,但主要會用於複合索引鍵。 若為複合索引鍵,KEY0、KEY1、KEY2 等會共同形成複合索引鍵。 您可以在查詢中個別使用每一個索引鍵,以傳回複合索引鍵的一部分。 例如,指定 KEY0 可傳回複合索引鍵的第一個部分,指定 KEY1 可傳回複合索引鍵的下一個部分,依此類推。 若為非複合索引鍵,則 KEY0 相當於 Key。 請注意,KEYx 可用於內容,也可以在沒有內容的情況下使用。 因此會出現在兩個清單中。 如需如何使用此成員屬性的範例,請參閱<簡單的 MDX 小知識:Key0、Key1、Key2>。 |
Name |
成員的名稱。 |
區分內容屬性的 PROPERTIES 語法
您可以在特定維度或層級的內容中使用這些成員屬性,而且要將值提供給指定維度或階層的每個成員。
對於維度成員屬性,您可以在屬性名稱前面加上套用該屬性的維度名稱。 下列範例會顯示適當語法:
DIMENSION PROPERTIES Dimension.Property_name
對於層級成員屬性,您可以在屬性名稱前面,只加上層級名稱,或者對於其他規格,則可加上維度及層級名稱。 下列範例會顯示適當語法:
DIMENSION PROPERTIES [Dimension.]Level.Property_name
為了方便說明,您要傳回 [Sales] 維度中每個參考成員的所有名稱。 若要傳回這些名稱,您要在多維度運算式 (MDX) 查詢中使用以下陳述式:
DIMENSION PROPERTIES [Sales].Name
不區分內容的成員屬性
所有成員支援同樣不顧內容的內建成員屬性清單。 這些屬性能提供應用程式可用以加強使用者經驗的其他資訊。
下表列出 SQL Server Analysis Services 支援的不區分內容內建屬性。
[!附註]
MEMBERS 結構描述資料列集中的資料行支援下表列出的內建成員屬性。 如需 MEMBERS 結構描述資料列集的詳細資訊,請參閱<MDSCHEMA_MEMBERS 資料列集>。
屬性 |
描述 |
---|---|
CATALOG_NAME |
此成員所屬的 Cube 名稱。 |
CHILDREN_CARDINALITY |
成員擁有的子系數目。 這可為一個估計值,因此您不應該依賴此值做為確實計數。 提供者應會傳回最佳的可能估計值。 |
CUSTOM_ROLLUP |
自訂成員運算式。 |
CUSTOM_ROLLUP_PROPERTIES |
自訂成員屬性。 |
DESCRIPTION |
成員的可讀取描述。 |
DIMENSION_UNIQUE_NAME |
此一成員所屬維度的唯一名稱。 對於會依識別資格產生唯一名稱的提供者,此名稱的每個元件會使用分隔符號。 |
HIERARCHY_UNIQUE_NAME |
階層架構的唯一名稱。 如果該成員屬於多個階層,該成員所屬的每個階層都會有一個資料列。 對於會依識別資格產生唯一名稱的提供者,此名稱的每個元件會使用分隔符號。 |
IS_DATAMEMBER |
指出成員是否為資料成員的布林值。 |
IS_PLACEHOLDERMEMBER |
指出成員是否為預留位置的布林值。 |
KEYx |
成員的索引鍵,其中 x 是索引鍵以零為基底的序數。 KEY0 可用於複合和非複合索引鍵。 若為非複合索引鍵,則 KEY0 相當於 Key。 若為複合索引鍵,KEY0、KEY1、KEY2 等會共同形成複合索引鍵。 您可以在查詢中個別參考每一個索引鍵,以傳回複合索引鍵的一部分。 例如,指定 KEY0 可傳回複合索引鍵的第一個部分,指定 KEY1 可傳回複合索引鍵的下一個部分,依此類推。 請注意,KEYx 可用於內容,也可以在沒有內容的情況下使用。 因此會出現在兩個清單中。 如需如何使用此成員屬性的範例,請參閱<簡單的 MDX 小知識:Key0、Key1、Key2>。 |
LCIDx |
以地區設定識別碼十六進位值翻譯的成員標題,其中 x 是地區設定識別碼十進位值 (例如,代表加拿大英文的 LCID1009)。 只有當翻譯的標題資料行繫結至資料來源時,才適用此功能。 |
LEVEL_NUMBER |
成員距根階層的距離。 根層級為零。 |
LEVEL_UNIQUE_NAME |
成員所屬層級的唯一名稱。 對於會依識別資格產生唯一名稱的提供者,此名稱的每個元件會使用分隔符號。 |
MEMBER_CAPTION |
與該成員關聯的標籤或標題。 標題主要是供顯示之用。 如果標題不存在,查詢就會傳回 MEMBER_NAME。 |
MEMBER_KEY |
原始資料類型的成員索引鍵值。 MEMBER_KEY 是為回溯相容性而提供。 對於非複合索引鍵,MEMBER_KEY 的值與 KEY0 相同,對於複合索引鍵,MEMBER_KEY 屬性為 Null。 |
MEMBER_NAME |
成員的名稱。 |
MEMBER_TYPE |
成員的類型。 此屬性可以有下列其中一個值:
MDMEMBER_TYPE_FORMULA 優先於 MDMEMBER_TYPE_MEASURE。 因此,如果 Measures 維度有一個公式 (導出) 成員,導出成員的 MEMBER_TYPE 屬性為 MDMEMBER_TYPE_FORMULA。 |
MEMBER_UNIQUE_NAME |
成員的唯一名稱。 對於會依識別資格產生唯一名稱的提供者,此名稱的每個元件會使用分隔符號。 |
MEMBER_VALUE |
原始類型的成員值。 |
PARENT_COUNT |
此成員擁有的父系數目。 |
PARENT_LEVEL |
成員的父系距階層之根層級的距離。 根層級為零。 |
PARENT_UNIQUE_NAME |
成員之父系的唯一名稱。 如果是根層級的任何成員,則會傳回 NULL。 對於會依識別資格產生唯一名稱的提供者,此名稱的每個元件會使用分隔符號。 |
SKIPPED_LEVELS |
略過的成員層級數目。 |
UNARY_OPERATOR |
成員的一元運算子。 |
UNIQUE_NAME |
成員的完整名稱使用下列格式:[dimension].[level].[key6]。 |
不區分內容屬性的 PROPERTIES 語法
使用以下語法指定會使用 PROPERTIES 關鍵字的內建、不區分內容的成員屬性:
DIMENSION PROPERTIES Property
請注意,此語法不允許依維度或層級限定屬性。 因為座標軸的所有成員套用了不區分內容的內建成員屬性,所以無法限定屬性。
例如,指定 DESCRIPTION 內建成員屬性的 MDX 陳述式會有以下語法:
DIMENSION PROPERTIES DESCRIPTION
此陳述式會傳回座標軸維度中每個成員的描述。 若要以 Dimension.DESCRIPTION 或 Level.DESCRIPTION 的維度或層級嘗試限定屬性,則無法驗證該陳述式。
範例
下列範例顯示傳回內建屬性的 MDX 查詢。
範例 1:在查詢中使用區分內容的內建屬性
下列範例會傳回每個產品類別目錄的父系識別碼、索引鍵和名稱。 請注意這些屬性如何公開為量值。 這可讓您在執行查詢時檢視資料格集中的屬性,而不是在 SSMS 的成員屬性對話方塊中檢視。 您可以執行查詢,例如從已部署的 Cube 擷取成員中繼資料。
WITH
MEMBER [Measures].[Parent Member ID] AS
[Product].[Product Categories].CurrentMember.Parent.PROPERTIES("ID")
MEMBER [Measures].[Parent Member Key] AS
[Product].[Product Categories].CurrentMember.Parent.PROPERTIES("KEY")
MEMBER [Measures].[Parent Member Name] AS
[Product].[Product Categories].CurrentMember.Parent.PROPERTIES("Name")
SELECT
{[Measures].[Parent Member ID], [Measures].[Parent Member Key], [Measures].[Parent Member Name] } on COLUMNS,
[Product].[Product Categories].AllMembers on ROWS
FROM [Adventure Works]
範例 2:不區分內容的內建屬性
下列範例是不區分內容之內建屬性的完整清單。 在 SSMS 中執行查詢之後,按一下個別成員可在成員屬性對話方塊中檢視屬性。
SELECT [Measures].[Sales Amount Quota] on COLUMNS,
[Employee].[Employees].members
DIMENSION PROPERTIES
CATALOG_NAME ,
CHILDREN_CARDINALITY ,
CUSTOM_ROLLUP ,
CUSTOM_ROLLUP_PROPERTIES ,
DESCRIPTION ,
DIMENSION_UNIQUE_NAME ,
HIERARCHY_UNIQUE_NAME ,
IS_DATAMEMBER ,
IS_PLACEHOLDERMEMBER ,
KEY0 ,
LCID ,
LEVEL_NUMBER ,
LEVEL_UNIQUE_NAME ,
MEMBER_CAPTION ,
MEMBER_KEY ,
MEMBER_NAME ,
MEMBER_TYPE ,
MEMBER_UNIQUE_NAME ,
MEMBER_VALUE ,
PARENT_COUNT ,
PARENT_LEVEL ,
PARENT_UNIQUE_NAME ,
SKIPPED_LEVELS ,
UNARY_OPERATOR ,
UNIQUE_NAME
ON ROWS
FROM [Adventure Works]
WHERE [Employee].[Employee Department].[Department].&[Sales]
範例 3:將成員屬性當做結果集中的資料傳回
下列範例會針對指定的地區設定,傳回 Adventure Works Cube 中 Product 維度的產品類別目錄成員的已翻譯標題。
WITH
MEMBER Measures.CategoryCaption AS Product.Category.CurrentMember.MEMBER_CAPTION
MEMBER Measures.SpanishCategoryCaption AS Product.Category.CurrentMember.Properties("LCID3082")
MEMBER Measures.FrenchCategoryCaption AS Product.Category.CurrentMember.Properties("LCID1036")
SELECT
{ Measures.CategoryCaption, Measures.SpanishCategoryCaption, Measures.FrenchCategoryCaption } ON 0
,[Product].[Category].MEMBERS ON 1
FROM [Adventure Works]