适用于:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
SQL Server Analysis Services 公开维度成员的内部属性,这些成员可以包含在查询中,以返回用于自定义应用程序的其他数据或元数据,或协助模型调查或构造。 如果使用 SQL Server 客户端工具,可以在 SQL Server Management Studio(SSMS)中查看内部属性。
内部属性包括 ID、 KEY、 KEYx 和 NAME,这些属性是每个成员在任何级别公开的属性。 还可以返回位置信息,例如 LEVEL_NUMBER 或 PARENT_UNIQUE_NAME等。
根据构造查询的方式以及用于执行查询的客户端应用程序,成员属性在结果集中可能不可见。 如果使用 SQL Server Management Studio 测试或运行查询,则可以双击结果集中的成员以打开“成员属性”对话框,显示每个内部成员属性的值。
有关使用和查看维度成员属性的简介,请参阅 SSMS 中 MDX 查询窗口中的“查看 SSAS 成员属性”。
注释
作为符合 1999 年 3 月 1999 年 3 月 (2.6) OLE DB 规范的 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 关键字。
上下文敏感成员属性
所有维度成员和级别成员都支持上下文敏感的内部成员属性列表。 下表列出了这些上下文相关的属性。
| 资产 | Description |
|---|---|
| ID | 成员的内部维护 ID。 |
| 密钥 | 原始数据类型中成员键的值。 MEMBER_KEY是为了向后兼容。 MEMBER_KEY与非组合键的 KEY0 具有相同的值,MEMBER_KEY属性对于复合键为 null。 |
| KEYx | 成员的键,其中 x 是键的从零开始的序号。 KEY0 可用于复合键和非复合键,但主要用于组合键。 对于组合键、KEY0、KEY1、KEY2 等,共同构成组合键。 可以在查询中单独使用每个元素来返回组合键的该部分。 例如,指定 KEY0 将返回复合键的第一部分,指定 KEY1 返回复合键的下一部分,依此等。 如果键是非复合键,则 KEY0 等效于 Key。 请注意, KEYx 可以用于上下文和不使用上下文。 因此,它将显示在这两个列表中。 |
| 名称 | 成员的名称。 |
上下文敏感属性的 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行集。
| 资产 | Description |
|---|---|
| CATALOG_NAME | 此成员所属的多维数据集的名称。 |
| CHILDREN_CARDINALITY | 成员具有的子级数。 这可以是估计值,因此不应将其作为确切计数。 提供程序应返回可能的最佳估计值。 |
| CUSTOM_ROLLUP | 自定义成员表达式。 |
| CUSTOM_ROLLUP_PROPERTIES | 自定义成员属性。 |
| 描述 | 成员的可读说明。 |
| DIMENSION_UNIQUE_NAME | 此成员所属的维度的唯一名称。 对于通过限定生成唯一名称的提供程序,将分隔此名称的每个组件。 |
| HIERARCHY_UNIQUE_NAME | 层次结构的唯一名称。 如果成员属于多个层次结构,则成员所属的每个层次结构都有一行。 对于通过限定生成唯一名称的提供程序,将分隔此名称的每个组件。 |
| IS_DATAMEMBER | 一个布尔值,指示成员是否为数据成员。 |
| IS_PLACEHOLDERMEMBER | 指示成员是否为占位符的布尔值。 |
| KEYx | 成员的键,其中 x 是键的从零开始的序号。 KEY0 可用于复合键和非复合键。 如果键是非复合键,则 KEY0 等效于 Key。 对于组合键、KEY0、KEY1、KEY2 等,共同构成组合键。 可以在查询中单独引用每个元素,以返回复合键的该部分。 例如,指定 KEY0 将返回复合键的第一部分,指定 KEY1 返回复合键的下一部分,依此等。 请注意, KEYx 可以用于上下文和不使用上下文。 因此,它将显示在这两个列表中。 |
| LCIDx | 区域设置 ID 十六进制值中成员标题的转换,其中 x 是区域设置 ID 十进制值(例如,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
此语句返回轴维度中每个成员的说明。 如果尝试使用维度或级别限定属性(如 维度.DESCRIPTION 或 级别.DESCRIPTION),则语句不会验证。
Example
以下示例显示了返回内部属性的 MDX 查询。
示例 1:在查询中使用上下文相关的内部属性
以下示例返回每个产品类别的父 ID、密钥和名称。 请注意属性如何作为度量值公开。 这样就可以在运行查询时查看单元格集中的属性,而不是 SSMS 中的“成员属性”对话框。 可以运行如下所示的查询,从已部署的多维数据集中检索成员元数据。
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 多维数据集中 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)