之前的文章我们介绍了Power Pivot模型与多维数据集函数(CUBE类函数)。通过CUBE函数我们可以提取Excel Power Pivot模型以及连接的Power BI的数据模型中的数据。如果还没有掌握这部分内容的同学可以点击以下的图片链接学习:
本期内容我们主要以Excel中的Power Pivot数据模型为基础,结合DAX来获取当前的数据模型生成的数据透视表结果对应的切片器的选择的内容,以文字的形式显示出来。
要解决这个问题,我们需要借助DAX,当然如果在Power BI中,有SELECTEDVALUE函数,但是在Excel的Power Pivot中,我们可以借助多维数据集函数(CUBE函数)来实现。
首先使用Power Pivot的数据模型生成一个数据透视表结果。如图所示:
下面我们来针对“大区名称”这个切片器来编写DAX度量值和CUBE类获取的值。
一、未选切片器DAX度量值为:
未选切片器 =
IF ( NOT ISFILTERED ( '大区表'[大区名称] ), "未选", BLANK () )
在工作表单元格中获取度量值的名称,公式可以写成:
=CUBEMEMBER("ThisWorkbookDataModel","[Measures].[未选切片器]")
获取切片器未选的值,公式可以写成:
=CUBEVALUE("ThisWorkbookDataModel","[Measures].[未选切片器]",切片器_大区名称)
结果如图所示:
二、单选切片器
DAX度量值为:
单选切片器 =
IF (
ISFILTERED ( '大区表'[大区名称] ),
VALUES ( '大区表'[大区名称] ), BLANK ()
)
在工作表单元格中获取度量值的名称,公式可以写成:
=CUBEMEMBER("ThisWorkbookDataModel","[Measures].[单选切片器]")
获取切片器单选的值,公式可以写成:
=CUBEVALUE("ThisWorkbookDataModel","[Measures].[单选切片器]",切片器_大区名称)
结果如图所示:
三、多选切片器
DAX度量值为:
多选切片器: =
IF (
ISFILTERED ( '大区表'[大区名称] ),
CONCATENATEX ( VALUES ( '大区表'[大区名称] ), '大区表'[大区名称], "," ),
BLANK ()
)
获取切片器多选的值,公式可以写成:
=CUBEVALUE("ThisWorkbookDataModel","[Measures].[多选切片器]",切片器_大区名称)
结果如图所示。
四、全选切片器
在Excel中,切片器全选的情况和不选的情况是一样的。所以未远切片器的度量值也可以用在这里。当然也可以使用另外一种方法。DAX度量值为:
全选切片器 =
VAR cuntr =
COUNTROWS ( ALL ( '大区表'[大区名称] ) )
VAR scuntr =
COUNTROWS ( VALUES ( '大区表'[大区名称] ) )
RETURN
IF ( cuntr = scuntr, "全选", BLANK () )
获取切片器多选的值,公式可以写成:
=CUBEVALUE("ThisWorkbookDataModel","[Measures].[全选切片器]",切片器_大区名称)
结果如图所示。
,