MDX 成員屬性 - 內建成員屬性
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
SQL Server Analysis Services 會在維度成員上公開內部屬性,您可以在查詢中包含這些屬性,以傳回其他數據或元數據以用於自定義應用程式,或協助模型調查或建構。 如果您使用 SQL Server 用戶端工具,您可以在 SQL Server Management Studio (SSMS) 中檢視內建屬性。
內建屬性包括 標識碼、KEY、KEYx和 NAME,這些屬性是每個成員在任何層級公開的屬性。 您也可以傳回位置資訊,例如 LEVEL_NUMBER 或 PARENT_UNIQUE_NAME等。
根據您建構查詢的方式,以及您用來執行查詢的用戶端應用程式上,成員屬性可能會在結果集中顯示或可能不會顯示。 如果您使用 SQL Server Management Studio 來測試或執行查詢,您可以在結果集中按兩下成員以開啟 [成員屬性] 對話框,顯示每個內部成員屬性的值。
如需使用和檢視維度成員屬性的簡介,請參閱 在 SSMS的 MDX 查詢視窗中檢視 SSAS 成員屬性。
注意
身為符合 OLE DB 規格 1999 年 3 月 (2.6) 之 OLAP 區段的提供者,Microsoft SQL Server SQL Server Analysis Services 支援本主題所列的內建成員屬性。
SQL ServerSQL Server Analysis Services 以外的提供者可能支援其他內部成員屬性。 如需其他提供者所支援之內部成員屬性的詳細資訊,請參閱這些提供者隨附的檔。
成員屬性的類型
SQL Server 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 SQL Server Analysis Services 中可用的各種內容敏感性和非內容敏感性內部成員屬性,以及如何搭配每種屬性類型使用 PROPERTIES 關鍵詞。
內容敏感性成員屬性
所有維度成員和層級成員都支持內容敏感的內建成員屬性清單。 下表列出這些上下文相關屬性。
財產 | 描述 |
---|---|
識別碼 | 成員的內部維護標識碼。 |
金鑰 | 原始數據類型中成員索引鍵的值。 MEMBER_KEY是為了回溯相容性。 MEMBER_KEY與非複合索引鍵的 KEY0 具有相同的值,而複合索引鍵的 MEMBER_KEY 屬性為 null。 |
KEYx | 成員的索引鍵,其中 x 是索引鍵的以零起始序數。 KEY0 適用於複合和非複合索引鍵,但主要用於複合索引鍵。 針對複合索引鍵、KEY0、KEY1、KEY2 等,共同形成複合索引鍵。 您可以在查詢中單獨使用每一個 ,以傳回復合索引鍵的該部分。 例如,指定 KEY0 會傳回復合索引鍵的第一個部分、指定 KEY1 會傳回復合索引鍵的下一個部分等等。 如果索引鍵是非複合的,則 KEY0 相當於 Key。 請注意,KEYx 可用於內容中,以及不使用內容。 基於這個理由,這兩個清單都會顯示出來。 如需如何使用這個成員屬性的範例,請參閱 簡單的 MDX Tidbit:Key0、Key1、Key2。 |
名稱 | 成員的名稱。 |
內容敏感性屬性的 PROPERTIES 語法
您可以在特定維度或層級的內容中使用這些成員屬性,併為指定維度或層級的每個成員提供值。
針對維度成員屬性,您會在屬性的名稱前面加上套用屬性的維度名稱。 下列範例顯示適當的語法:
DIMENSION PROPERTIES Dimension.Property_name
對於層級成員屬性,您可以在屬性名稱前面加上層級名稱,或針對維度和層級名稱的額外規格。 下列範例顯示適當的語法:
DIMENSION PROPERTIES [Dimension.]Level.Property_name
為了說明,您想要傳回 [Sales]
維度中每個參考成員的所有名稱。 若要傳回這些名稱,您會在多維度表示式 (MDX) 查詢中使用下列語句:
DIMENSION PROPERTIES [Sales].Name
非內容敏感性成員屬性
不論內容為何,所有成員都支援相同內部成員屬性的清單。 這些屬性提供應用程式可用來增強用戶體驗的其他資訊。
下表列出 SQL Server 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 Tidbit:Key0、Key1、Key2。 |
LCIDx | 地區設定標識元十六進位值中成員標題的轉譯,其中 x 是地區設定標識符十進位值(例如,LCID1009為 English-Canada)。 只有當翻譯具有系結至數據源的標題數據行時,才能使用這項功能。 |
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_REGULAR MDMEMBER_TYPE_ALL MDMEMBER_TYPE_FORMULA MDMEMBER_TYPE_MEASURE MDMEMBER_TYPE_UNKNOWN 注意:MDMEMBER_TYPE_FORMULA優先於MDMEMBER_TYPE_MEASURE。 因此,如果量值維度上有公式 (calculated) 成員,則匯出成員的 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 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]
另請參閱
PeriodsToDate (MDX)
兒童 (MDX)
階層化 (MDX)
計數 (Set) (MDX)
篩選器 (MDX)
AddCalculatedMembers (MDX)
DrilldownLevel (MDX)
屬性 (MDX)
PrevMember (MDX)
使用成員屬性 (MDX)
MDX 函數參考 (MDX)