如何使用CUBESET函数获取Excel维度表列名而非成员
Excel CUBESET获取维度表列名解决方案
问题原因
你之前的公式运行失败是因为不符合MDX语法规则:多维数据集中[DimCustomer]是维度对象,它的直接子级不是属性集合,.children方法只能用来获取属性层级下的成员值,无法用来提取维度的属性(也就是维度表列名)。
实现方法
方法1:直接使用CUBESET函数(推荐)
将你的CUBESET公式修改为如下写法即可返回DimCustomer维度下的所有属性列名集合:
=CUBESET("Data","[DimCustomer].Attributes","Cubeset DimCustomer fields")
后续你可以搭配CUBERANKEDMEMBER函数逐个取出集合中的列名,示例:
假设上述CUBESET公式写在A1单元格,要取第1个列名的公式为:
=CUBERANKEDMEMBER("Data",$A$1,1)
依次修改序号就能取出所有列名。
方法2:DMV查询获取完整列名清单
如果你的数据集(如低版本SSAS、部分Power BI共享数据集)不支持.Attributes语法,可以通过查询系统元数据表实现:
- 点击「数据」选项卡→「获取数据」→「自其他来源」→「自Analysis Services」
- 输入你的Data数据集的连接信息完成连接
- 在导航窗口点击「高级」,输入如下DMV查询语句:
SELECT ATTRIBUTE_NAME FROM $SYSTEM.MDSCHEMA_ATTRIBUTES WHERE DIMENSION_NAME = 'DimCustomer'
- 加载结果后即可得到完整的DimCustomer列名清单,还可以设置自动刷新同步数据集的元数据变更。
注意事项
- 方法1返回的集合会包含维度的键属性、父级属性等系统内置属性,不需要可以手动筛选
- 如果你使用的是Excel内置的Power Pivot数据集,需要先在Power Pivot选项卡中启用「高级选项」才能正常运行上述查询
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

