Excel CUBEMEMBER函数关联Power BI模型带条件查询语法问题
实现方案与语法说明
核心错误修正
你之前的写法不符合MDX成员引用规则,跨表筛选不能直接拼接两个表的维度路径,Power BI模型会基于已配置的playerid关联关系自动处理表关联,无需手动在成员路径里写关联逻辑。
单条件动态取值公式
要根据A1的bar值取对应的foo字段值,使用如下公式即可:
=CUBERANKEDMEMBER( "myModel", CUBESET( "myModel", "EXISTS([tbl_1].[foo].[foo].Members, [tbl_2].[bar].&[" & A1 & "])" ), 1 )
- 若要返回全部匹配的foo值,将公式末尾的
1改为对应排序的序号即可 - 若要直接取值做计算,可以把该公式返回的成员作为
CUBEVALUE的参数传入
多条件筛选支持
需要叠加多个筛选条件时,将EXISTS函数的第二个参数改为元组(用小括号包裹多个维度成员)即可,示例:
=CUBERANKEDMEMBER( "myModel", CUBESET( "myModel", "EXISTS([tbl_1].[foo].[foo].Members, ([tbl_2].[bar].&[" & A1 & "], [tbl_2].[其他筛选字段].&[" & B1 & "]))" ), 1 )
大括号语法规则说明
数据透视表转换生成的公式里的大括号是MDX的集(Set)字面量语法:
- 大括号用于声明一个包含多个成员的集合,仅支持硬编码的成员路径,不支持动态拼接单元格变量
- 要生成动态筛选的集合,必须使用
CUBESET函数构造动态表达式,不能直接在大括号里拼接变量 - 转换生成的
CUBEELEMENT属于Excel早期兼容函数,兼容性不如标准的CUBEMEMBER/CUBERANKEDMEMBER组合,建议替换使用
内容的提问来源于stack exchange,提问作者VJ87
相关产品推荐
相关产品推荐

