前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >销售需求丨多列判定筛选(一)

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

原创
作者头像
PowerBI丨白茶
修改2021-09-03 10:49:58
5170
修改2021-09-03 10:49:58
举报
文章被收录于专栏:PowerBIPowerBI

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

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

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

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

将其导入到PowerBI中:

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

白茶这个题尝试很多次:

第一次尝试:

代码语言:txt
复制
第一次尝试 = 
FILTER ( '示例', '示例'[语文] = MAX ( '示例'[语文] ) )

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

第二次尝试:

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

代码语言:txt
复制
第二次尝试 = 
SUMMARIZE ( '示例', '示例'[姓名], "语文", CALCULATE ( MAX ( '示例'[语文] ) ) )

结果如下:

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

接下来利用IN进行取值:

代码语言:txt
复制
IN进行取值 = 
CALCULATETABLE ( '示例', '示例'[语文] IN ALL ( '第二次尝试'[语文] ) )

结果如下:

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

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

结果:

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

后续请到微♥观看

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档