DAX中EVALUATE()函数的用途实例

DAX中,EVALUATE()函数是一个表格函数,主要用来返回一个表格。这个特性有一些实际的用途,比如我就发现了一个。

一、需求

我有一个学习记录的数据文件,我的关注重点,除了已经完成学习任务的情况,还包括那些没有完成学习任务的学员名单。

二、常规解决思路

第一个需求用数据透视表很好办。不赘述。
第二个需求其实也很好办——在数据透视表中钻取未完成学习任务的统计数据即可。但钻取有两个问题:一是需要手动去点击,并不是所有人都知道数字可以点击进行钻取的;二是钻取出来的表格字段名称都加上了数据模型的前缀,并且返回了所有行,实际上我需要的只不过是没完成学习任务的人员名单而已。

三、使用EVALUATE()函数

以下操作基于Excel2016。
1.点击“数据标签”的“现有连接”;
2.切换到“表”;
3.选一个数据量最少的表(因为后面的操作其实在数据模型中的任何一个表都可以,为了节省时间选数据最少的表,如果选择了数据量大的表,加载非常耗时间);


740532-29032e6fd617844f.png
获取数据模型中的表

4.确定后表格被加载到新的Sheet中;
5.在加载出来的表格中右键选择“表格-编辑DAX”;


740532-48b1ec88b68f9579.png
选择编辑DAX命令

6.在DAX命令编辑框中输入下列公式后,完成:
EVALUATE
 FILTER('结果','结果'[状态]="学习中")

示例只是EVALUATE()函数最简单的用法,可以看到,在DAX中无法直接查看的筛选器筛选结果,用EVALUATE()函数就可以轻松显示出结果来。
同时还可以看到,输入的代码中,“'结果'”其实是一个表格的名字,所以在第3步选择数据模型中的任何表格都可以,那为何我们不选择一个数据量很少的表格呢。
那为什么非要这么麻烦选择一个表格,不直接创建一个Excel表格呢?这是因为EVALUATE()函数是个DAX函数,只在PowerPivot数据模型中起作用,普通表格当然就没法使用EVALUATE()函数了。

优点

1.可刷新,无需用户再去点击;
2.显示友好,没有多余的前缀等;
3.表格字段可用DAX自定义,无需全部显示数据模型表格中的所有字段。

展开阅读全文

没有更多推荐了,返回首页