多维表达式(MDX)中的单元格属性包含多维数据源(如多维数据集)中单元格的内容和格式的相关信息。
MDX 支持 MDX SELECT 语句中的 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> 受支持内部单元格属性。
| 资产 | DESCRIPTION |
|---|---|
ACTION_TYPE |
指示单元格上存在哪些类型的操作的位掩码。 此属性可以具有下列值之一: MDACTION_TYPE_URL MDACTION_TYPE_HTML MDACTION_TYPE_STATEMENT MDACTION_TYPE_DATASET MDACTION_TYPE_ROWSET MDACTION_TYPE_COMMANDLINE MDACTION_TYPE_PROPRIETARY MD行动_类型_报告 MDACTION_TYPE_DRILLTHROUGH 注意:对于包含 where 子句中集合的查询,不包括钻取操作。 |
| BACK_COLOR | 用于显示 VALUE 或 FORMATTED_VALUE 属性的背景色。 有关详细信息,请参阅FORE_COLOR和BACK_COLOR条目(MDX)。 |
CELL_ORDINAL |
数据集中单元格的序号。 |
| FONT_FLAGS | 位掩码详述对字体的影响。 例如,值 5 表示粗体()和下划线(MDFF_BOLDMDFF_UNDERLINE)字体效果的组合。 该值是以下一个或多个常量按位 OR 运算的结果:MDFF_BOLD = 1MDFF_ITALIC = 2MDFF_UNDERLINE = 4MDFF_STRIKEOUT = 8 |
| 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)无法更新单元格,因为无法更新非总和度量值(计数、最小值、最大值、唯一计数、半累加)。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 架构行集中定义,包括它们的数据类型和提供程序支持。 有关PROPERTIES架构行集的详细信息,请参阅MDSCHEMA_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 Analysis Services 中设置单元格属性。 例如,可以在 SQL Server Data Tools 中多维数据集编辑器的“多维数据集结构”选项卡上为普通度量值设置 Format String 属性;同样的属性也可以在多维数据集编辑器的“计算”选项卡上为定义在多维数据集上的计算度量值进行设置;而查询的 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