MDX 儲存格屬性 - 使用儲存格屬性
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
多維度表達式中的儲存格屬性 (MDX) 包含多維度數據源中儲存格內容和格式的相關信息,例如 Cube。
MDX 支援 MDX SELECT 語句中的 CELL PROPERTIES 關鍵詞,以擷取內部單元格屬性。 內建單元格屬性最常用來協助可視化呈現數據格數據。
CELL PROPERTIES 關鍵詞語法
針對 MDX SELECT 語句的 CELL PROPERTIES 關鍵詞,請使用下列語法:
SELECT [<axis_specification>
[, <axis_specification>...]]
FROM [<cube_specification>]
[WHERE [<slicer_specification>]]
[<cell_props>]
下列語法顯示 <cell_props>
值的格式,以及此值如何使用 CELL PROPERTIES 關鍵詞以及一或多個內部單元格屬性:
<cell_props> ::= CELL PROPERTIES <property> [, <property>...]
支援的內建單元格屬性
下表列出 <property>
值中使用的支持內建單元格屬性。
財產 | 描述 |
---|---|
ACTION_TYPE | 位掩碼,指出儲存格上存在哪些動作類型。 這個屬性可以有下列其中一個值: MDACTION_TYPE_URL MDACTION_TYPE_HTML MDACTION_TYPE_STATEMENT MDACTION_TYPE_DATASET MDACTION_TYPE_ROWSET MDACTION_TYPE_COMMANDLINE MDACTION_TYPE_PROPRIETARY MDACTION_TYPE_REPORT MDACTION_TYPE_DRILLTHROUGH 注意:鑽研動作不包含在 where 子句中包含集合的查詢。 |
BACK_COLOR | 顯示 VALUE 或 FORMATTED_VALUE 屬性的背景色彩。 如需詳細資訊,請參閱 FORE_COLOR 和 BACK_COLOR 內容 (MDX)。 |
CELL_ORDINAL | 數據集中單元格的序號。 |
FONT_FLAGS | 字型上的位掩碼詳細數據效果。 值是下列一或多個常數之位 OR 運算的結果: MDFF_BOLD = 1 MDFF_ITALIC = 2 MDFF_UNDERLINE = 4 MDFF_STRIKEOUT = 8 例如,值 5 代表粗體 (MDFF_BOLD) 和底線 (MDFF_UNDERLINE) 字型效果的組合。 |
FONT_NAME | 要用來顯示 VALUE 或 FORMATTED_VALUE 屬性的字型。 |
FONT_SIZE | 用來顯示 VALUE 或 FORMATTED_VALUE 屬性的字型大小。 |
FORE_COLOR | 顯示 VALUE 或 FORMATTED_VALUE 屬性的前景色彩。 如需詳細資訊,請參閱 FORE_COLOR 和 BACK_COLOR 內容 (MDX)。 |
FORMAT | 與 FORMAT_STRING相同。 |
FORMAT_STRING | 用來建立 FORMATTED_VALUE 屬性值的格式字串。 如需詳細資訊,請參閱 FORMAT_STRING 內容 (MDX)。 |
FORMATTED_VALUE | 字元字串,表示 VALUE 屬性的格式化顯示。 |
LANGUAGE | 將套用 FORMAT_STRING 的地區設定。 LANGUAGE 通常用於貨幣轉換。 |
UPDATEABLE | 值,指出是否可以更新儲存格。 這個屬性可以有下列其中一個值: |
MD_MASK_ENABLED (0x00000000) 儲存格可以更新。 | |
MD_MASK_NOT_ENABLED (0x10000000) 無法更新儲存格。 | |
CELL_UPDATE_ENABLED (0x00000001) 儲存格可以在數據格集中更新。 | |
CELL_UPDATE_ENABLED_WITH_UPDATE (0x00000002) 儲存格可以使用 update 語句來更新。 如果分葉數據格更新未啟用寫入,更新可能會失敗。 | |
CELL_UPDATE_NOT_ENABLED_FORMULA (0x10000001) 單元格無法更新,因為儲存格在其座標中具有匯出成員;在 where 子句中使用集合擷取單元格。 即使公式影響或匯出單元格開啟,單元格的值也可以更新(位於匯總路徑的某處)。 在此案例中,單元格的最終值可能不是更新的值,因為計算會影響結果 | |
CELL_UPDATE_NOT_ENABLED_NONSUM_MEASURE (0x10000002) 無法更新儲存格,因為無法更新非總和量值(count、min、max、distinct count、semi-additive) 。 | |
CELL_UPDATE_NOT_ENABLED_NACELL_VIRTUALCUBE (0x10000003) 儲存格無法更新,因為儲存格不存在,因為它位於量值與量值群組無關的維度成員交集處。 | |
CELL_UPDATE_NOT_ENABLED_SECURE (0x10000005) 無法更新儲存格,因為儲存格已受到保護。 | |
CELL_UPDATE_NOT_ENABLED_CALCLEVEL (0x10000006) 保留供日後使用。 | |
CELL_UPDATE_NOT_ENABLED_CANNOTUPDATE (0x10000007) 因為內部原因而無法更新儲存格。 | |
CELL_UPDATE_NOT_ENABLED_INVALIDDIMENSIONTYPE (0x10000009) 無法更新數據格,因為採礦模型、間接或數據採礦維度不支援更新。 | |
VALUE | 單元格的未格式化值。 |
只需要 CELL_ORDINAL、FORMATTED_VALUE和 VALUE 單元格屬性。 所有儲存格屬性內建或提供者特定,都會定義在架構資料列集 PROPERTIES,包括其數據類型和提供者支援。
根據預設,如果未使用 CELL PROPERTIES 關鍵詞,則傳回的儲存格屬性 VALUE、FORMATTED_VALUE和 CELL_ORDINAL (依該順序)。 如果使用 CELL PROPERTIES 關鍵詞,只會傳回以 關鍵詞明確陳述的單元格屬性。
下列範例示範在 MDX 查詢中使用 CELL PROPERTIES 關鍵詞:
SELECT
{[Measures].[Reseller Gross Profit]} ON COLUMNS,
{[Reseller].[Reseller Type].[Reseller Name].Members} ON ROWS
FROM [Adventure Works]
CELL PROPERTIES VALUE, FORMATTED_VALUE, FORMAT_STRING, FORE_COLOR, BACK_COLOR
針對傳回扁平化數據列集的 MDX 查詢,不會傳回單元格屬性;在此情況下,每個儲存格都會以只傳回 FORMATTED_VALUE 儲存格屬性的方式表示。
設定儲存格屬性
數據格屬性可以在各種位置Microsoft SQL Server SQL Server Analysis Services 中設定。 例如,您可以在 SQL Server Data Tools 中 Cube 編輯器的 [Cube 結構] 索引標籤上,針對一般量值設定 Format String 屬性;您可以在 Cube 編輯器的 [計算] 索引標籤上,針對 Cube 上定義的匯出量值設定相同的屬性;查詢 WITH 子句中定義的匯出量值也會定義其格式字串。下列查詢示範如何在匯出量值上設定儲存格屬性:
WITH MEMBER MEASURES.CELLPROPERTYDEMO AS [Measures].[Internet Sales Amount]
, FORE_COLOR=RGB(0,0,255)
, BACK_COLOR=IIF([Measures].[Internet Sales Amount]>7000000, RGB(255,0,0), RGB(0,255,0))
, FONT_SIZE=10
, FORMAT_STRING='#,#.000'
SELECT MEASURES.CELLPROPERTYDEMO ON 0,
[Date].[Calendar Year].[Calendar Year].MEMBERS ON 1
FROM [Adventure Works]
CELL PROPERTIES VALUE, FORMATTED_VALUE, FORE_COLOR, BACK_COLOR, FONT_SIZE