DAX从入门到精通|DAX从入门到精通 5-6 Calculate的规则
这里有必要总结一下calculate是如何工作。你可以使用下面的知识来检测下你对calculate的知识。如果你能理解下面的所有知识,那么你就已经在称为DAX大师的路上了。
calculate和calculatetable是DAX中唯二的能直接产生筛选上下文的函数。
calculate中,只有第一个计算表达式是必须的选项。其他参数(也就是我们所说的过滤条件参数)都是允许忽略不写的。如果这样的话,那么我们就可以只用到calculate上下文转换的功能。
calculate中的筛选参数有三种样式:
a.布尔条件 例如product[color]='white'
b.某列的值的列表,例如all(product[color]),或者复杂的filter条件 filter(all(product[color]),product[color]='white')
c.一个表的所有行,例如filter(all(product),product[color]='white')
用上面a.b两种写法,只能对一个列进行操作。使用c的写法,可以对任意数量的列进行操作。
所有的calculate过滤条件参数都是独立运算的。然后他们会用and的关系进行合并,最后使用新生成的筛选上下文条件,进行值的计算。
calculate中的过滤条件参数是在原始上下文的环境下计算,然后它们可以缩小,扩大或者改变计算。例如当使用布尔值的写法时候,calculate替换原有的筛选上下文,把筛选参数直接传递给数据源表格,而当参数使用filter过滤表格的时候,calculate把原始的上下文条件考虑进去。第一个参数,也就是计算表达式是在新生成的上下文环境中计算的。
【DAX从入门到精通|DAX从入门到精通 5-6 Calculate的规则】calculate中上下文转换和筛选条件的执行有先后顺序,先执行上下文转换,再执行筛选条件。因此,筛选条件的参数回覆盖上下文转换生成的筛选条件。
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 一个人的碎碎念
- 我从来不做坏事
- 从蓦然回首到花开在眼前,都是为了更好的明天。
- 西湖游
- 改变自己,先从自我反思开始
- leetcode|leetcode 92. 反转链表 II
- 从我的第一张健身卡谈传统健身房
- 自媒体形势分析
- 操作系统|[译]从内部了解现代浏览器(1)