PBI之筛选器函数(二)
作者:互联网
上一节之中已经分享了一些筛选函数的基本用法,本节将会把剩下的筛选函数全部整理完。这样我们离成功就有近了一步,想想都都有点小激动呢。
1、FILTER 接受一个表和一个逻辑条件作为参数,返回满足条件的所有行
语法:
FILTER ( <表>, <布尔表达式> )
FILTER函数看似很简单,其实要是能把它用好,也是非常牛逼的了,前面给CALCULATE打了个五星,我觉得它就是我第二个要打五星的函数了。可见它的重要性啊。
它可以返回一个表或者是某几列,不过跟多的时候它是跟CALCULATE联合起来使用的。话不多说,直接上案例了。
我们还是以这个数据来说明,首先我们通过FILTER来返回一个表格试试,大家可以看到上面有湖北和上海两个地方的多天的数据,现在我只想要看上海的数据
原理就是我在业务表这张总表里将省份=“上海"的部分给展示出来了。接下来我们来展示一个它与CALCULATE的联合用法
上面是CALCULATE里面嵌套了两个FILTER来返回7.1日这一天上海的件量的。注意,这里两个FILTER之间是交集的关系,两个必须同时满足true才会返回正确结果。
2、FILTERS 返回直接应用于参数列的筛选器值组成的表。
语法:
FILTERS ( <列名> )
注意了这里返回的是由单列组成的表,表中包含不重复值。它只有一个参数,返回的是一个表。
业务表中有多少个省份 = CALCULATE(countrows(FILTERS('业务表'[省份])))
返回表的案例我就不给大家做展示了,在这里示范了如果计算有多少个省份,同理我们也可以计算有多少天,有多少条记录。。。
3、HASONEFILTER 如果指定的列有且只有一个直接筛选器,则返回 TRUE;否则,返回 FALSE。
语法:
HASONEFILTER ( <列名> )
上面已经说了有且只有一个筛选器的时候才会返回TRUE,很显然我们上面案例中对省份字段没有任何筛选器,所以返回了FALSE。
那当我们给省份加了一个筛选器后立马就变成TRUE了,注意了这里只对省份有筛选才行哦,假如是对日期筛选返回的也会是FALSE.
4、HASONEVALUE 当指定列在当前筛选上下文中只有一个不重复值时,返回 True。
语法:
HASONEVALUE ( <列名> )
说人话就是当COUNTROWS(VALUES(列名))=1的时候才返回TRUE,否则返回FALSE。
很显然我们上面表里有上海和湖北两个省份,所以返回了FALSE
当我们改用只有上海的那张表来计算的话返回的结果就是TRUE了。
5、ISCROSSFILTERED 检测指定的表或列是否被交叉筛选
ISCROSSFILTERED ( <TableNameOrColumnName> )
CROSS原本是交集的意思,通过整个函数的字面意思应该是判断是否有交叉筛选。
还是用这个数据来做说明
当没有任何筛选的时候返回时FALSE
当有筛选交集的时候返回TRUE,这个函数跟上面的HASONEFILTER的用法似乎有点类似。
6、ISFILTERED 检测指定的表或列是否被直接筛选。
语法:
ISFILTERED ( <TableNameOrColumnName> )
当没有筛选的时候显示FALSE
当有筛选的时候返回TRUE
由此可见HASONEFILTER、HASONEVALUE、ISCROSSFILTERED、ISFILTERED其实更准确的说应该都是布尔函数。
7、RELATED 从关系的一端返回标量值。
语法:
RELATED ( <列名> )
其实这个函数跟EXCEL里的Vlookup有异曲同工之妙,都是查找函数,下面以这两个基表做演示
在PBI里建好模型后,可以直接在业务表里将单价表里的单价匹配过来
这样似乎看起来比Vlookup还要简单许多,Vlookup已经是一个神一样的存在了,没想到还有比它更厉害的,由此可见人外有人,山外有山啊。
8、RELATEDTABLE 从关系的多端返回符合要求的所有记录。
语法:
RELATEDTABLE ( <表名> )
还是用上面的基表来演示,现在反过来,我要从一端计算多端里的记录条数
业务表里湖北有11条记录,上海有10条记录,浙江没有记录。看到这里,我不由得又想发出一声感慨,PBI实在是太强大了,Excel里那么麻烦才能完成的事,在这里简直就是妙妙钟。
9、USERELATIONSHIP 指定 DAX 表达式的在计算时所使用的关系。将关系两端的列作为参数可以定义这种关系。
语法:
USERELATIONSHIP ( <列 1>, <列 2> )
以上面这两个基表做演示,始发省份有上海、湖北,目的省份有上海、湖北、浙江,他们作为进出两个维度来统计的话,件量肯定不一样,那如何实现呢?
业务表里有始发省份和目的省份两个维度,那首先必须要把他们的关系建好,只能一个是实线(原配),一个是虚线(二房),注意了这里的建立关系是个必要条件。
出 = sum('业务表'[件量]) 进 = CALCULATE([出],USERELATIONSHIP('业务表'[目的省],'单价表'[省份]))
USERELATIONSHIP在这里相当于是忽略前面实线关系重新给他们定了一次关系,然后再计算。
好啦!筛选函数就分享这么多啦!可能还有一些没有分享,相信我,那肯定不是最重要的,而且还非常难。在这里就不分享了。能把以上的这些筛选函数都能理解,就能解决至少99%的问题了。
还是那句话,我举的一些案例都是非常简单的,显示工作中几乎不可能遇见。要想熟练的掌握,还是需要大家多多的去练习。等哪天大家用起它们来如行云流水也就成功了!
如果有什么问题欢迎大伙来跟我探讨,我也一直在努力学习进步之中!
标签:返回,FALSE,函数,PBI,筛选,省份,TRUE 来源: https://www.cnblogs.com/1304379017dwh/p/14947233.html