销售需求丨多列判定筛选(一)

在实际做报表中,我们经常能遇到一些特殊情况需要我们对一张表来进行筛选。最开始白茶写的几期文章,讲解过利用CALCULATE函数和FILTER函数的筛选求和模式,但是当时的思路是限定一个点。比如说我有一份销售退货表,限定条件是“销售”,我不想知道退货的情况。这些都属于单点限制,利用的是“=”取值来判定。

后来在写关于活动月份环比的时候,因为列值不唯一,需要提供多个值来解决筛选情况,当时使用的是“IN”。

本期呢,白茶决定分享一下,如果我的限定条件,不只是一列,而是很多列,该怎么操作呢?

这是群里小伙伴提供的文件,需求是什么,我要通过语文成绩的最大值,来提取每个人的所有成绩。

将其导入到PowerBI中:

这道题的思路是什么?筛选!那么想到筛选,需要我们记住的有两个函数,CALCULATETABLE函数与FILTER函数,这两个都可以对表进行筛选,迭代。

白茶这个题尝试很多次:

第一次尝试:

第一次尝试 = 
FILTER ( '示例', '示例'[语文] = MAX ( '示例'[语文] ) )

单纯的利用FILTER这个函数,整个表都进行了筛选,选取的是语文成绩的最大值。很明显一个FILTER是不够的。

第二次尝试:

白茶决定利用SUMMARIZE函数,组成一个可见组合的表。

第二次尝试 = 
SUMMARIZE ( '示例', '示例'[姓名], "语文", CALCULATE ( MAX ( '示例'[语文] ) ) )

结果如下:

这种利用了SUMMARIZE的可见组合重新构建了一个表,只有姓名和语文成绩最大值这一组合。

接下来利用IN进行取值:

IN进行取值 = 
CALCULATETABLE ( '示例', '示例'[语文] IN ALL ( '第二次尝试'[语文] ) )

结果如下:

这样的话就达到了通过判定语文成绩最大值筛选整个表的情况。但是这种做法实际上是有弊端的。一旦数据量过大,提取了两个表很占用内存的,为了节省空间,白茶想尝试合并这两组代码。

尝试合并 = 
VAR DQ =
    SUMMARIZE ( '示例', '示例'[姓名], "语文", CALCULATE ( MAX ( '示例'[语文] ) ) )
VAR CQ =
    CALCULATETABLE ( '示例', '示例'[语文] IN ALL ( DQ ) )
RETURN
    CQ

结果:

这种情况下这个代码行不通。

后续请点击原文观看:

原文(https://mp.weixin.qq.com/s/J61LfTObhmTDFbmUU5ZUZQ)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fabric丨白茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值