工坊实验室之失灵的筛选

​今天,又是元气满满的一天(好古老的梗)

工坊实验室之失灵的筛选_第1张图片

​开门见山,今天我们研究三个筛选函数:CALCULATE、SUMX和FILTER。学过一段时间DAX函数的坊友们应该有这种体会,用的较多的筛选函数就是CALCULATE,从微软官网上download下来的函数定义:在指定筛选器修改的上下文中计算表达式。

语法是:CALCULATE(,,…)。


举个例子,比如有这样的一个数据集,

工坊实验室之失灵的筛选_第2张图片

​我们想展示实际数的话,那么度量值应该这样写:

营业收入实际数 = CALCULATE(SUM('营业收入表'[营业收入]),'营业收入表'[分组]="实际数")


我们按年去展示数据的话出来的条形图长这样 :

工坊实验室之失灵的筛选_第3张图片

​该条形图按照每年去计算实际数,因为2018年及之后没有实际数,所以横轴年份只到2017年,本例虽简单,却也包含了筛选上下文的概念。


假设如果我们想在CALCULATE函数表达式中直接筛选年<=2017来控制横轴年份以达到同样的效果,那么我们的度量值应该这样写:

营业收入实际数 = CALCULATE(SUM('营业收入表'[营业收入]),'营业收入表'[年]<=2017)

出来的图长这样:

工坊实验室之失灵的筛选_第4张图片
工坊实验室之失灵的筛选_第5张图片

​一脸黑人问号。。。为啥这个图变成了这样??莫不是筛选函数失灵了?仔细看了下数值,每一年展示的数都是2017年之前的数据的汇总,仔细想想函数的筛选上下文的逻辑,对横轴的每个年份计算2017年之前的营业收入,确实是这样。

工坊实验室之失灵的筛选_第6张图片

​那么应该怎么样通过度量值的方式直接筛选年份呢?我们先试试CALCULATE的兄弟SUMX函数。

度量值应该这样写:

营业收入实际数 = SUMX(FILTER('营业收入表','营业收入表'[年]<=2017),'营业收入表'[营业收入])


再瞅一眼图表:

工坊实验室之失灵的筛选_第7张图片

​嗯,达到了我们预期的效果,那么这个表达式跟我们用CALCULATE函数写的表达式差别在哪里呢?我们发现用SUMX函数往往配合filter函数使用,我们也给CALCULATE函数加一个FILTER试试。

营业收入实际数 = CALCULATE(SUM('营业收入表'[营业收入]),FILTER('营业收入表','营业收入表'[年]<=2017))


再瞅一眼图表:

工坊实验室之失灵的筛选_第8张图片
工坊实验室之失灵的筛选_第9张图片

​原来加一个筛选函数FILTER就可以解决这个问题了。

去官网上看一下FILTER函数的描述,注意到FILTER函数的返回值:只包含筛选行的表。恍然大悟,果然官方文档还是要多看看的。

DAX函数微软官方参考文件:https://msdn.microsoft.com/zh-cn/library/ee634396(v=sql.110).aspx


今天的文章水完了,坊友们,我滚啦~

工坊实验室之失灵的筛选_第10张图片

*Power Pivot工坊原创文章,转载请注明出处。


延伸阅读:

工坊实验室之R脚本视觉对象

工坊实验室之数据标签的位置

工坊实验室之桑基图排序

工坊实验室之流向图展现

工坊实验室之使用瀑布图

一张图看懂微软PowerBI系列组件

一张图看懂Power BI 架构

当Power BI 遇上洪灾

当Power BI 遇上欧冠决赛

当Power BI遇上条形码

当Power BI遇上Visio


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”

工坊实验室之失灵的筛选_第11张图片

长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯。欢迎小伙伴儿们转发分享~

工坊实验室之失灵的筛选_第12张图片

你可能感兴趣的:(工坊实验室之失灵的筛选)