前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >PowerBI中的排名问题丨RANKX函数

PowerBI中的排名问题丨RANKX函数

原创
作者头像
PowerBI丨白茶
修改于 2021-09-01 06:38:57
修改于 2021-09-01 06:38:57
3.1K1
举报
文章被收录于专栏:PowerBIPowerBI

最近学CALCULATE都要吐了,白茶觉得,咱得换一换口味,对吧。本期呢,咱来聊一聊关于排名的问题。

哦,对了,之前白茶犯了一个很严重的错误,从这期开始会改变,那就是DAX的格式书写错误。

这个问题是一个特别严重的问题,白茶疏忽了,这里补上一下原因:为什么格式书写很重要?就像是我们小时候写应用题一样,哪怕是啥都不会,一个“解”字就值2分,不为啥,就是因为格式工整了,能够很大程度上减少我们的错误率!

下面是一些DAX的书写要求:

1.如果参数只有一个,那么参数和函数需要放在一块。如下:

代码语言:txt
AI代码解释
复制
DAX =
SUM ( '表'[求和项] )

2.如果参数函数有两个,或者更多参数,那么每个参数一行。如下:

代码语言:txt
AI代码解释
复制
DAX =
CALCULATE ( SUM ( '表'[求和项] ), FILTER ( '表', [条件] = "M" ) )

3.如果函数和参数太多了,那么左括号"("和函数在一行;参数如果是新行,那么缩进4个字符;右括号")",要与函数开头相对齐;分隔的逗号位于上一行;表达式要是拆分的话,运算符为首字母。如下:

代码语言:txt
AI代码解释
复制
DAX =
CALCULATE (
    SUM ( '表'[求和项] ),
    FILTER ( '表', [条件] = "M" && [条件] = "N" )
        && FILTER ( '表', [条件] = "S" )
)

最后,给小伙伴们一个DAX格式网址,会自动将你的DAX代码转换为标准格式:

http://www.daxformatter.com/raw/

具体的使用办法白茶在这里就不一一赘述了,小伙伴们可以自行摸索,来来来,继续我们之前的话题。

下面是今天的示例文件:

这是一份服装销售的模拟数据,将其导入PowerBI中,并且输入如下代码,求出销售金额:

代码语言:txt
AI代码解释
复制
销售 =
SUM ( '产品表'[销售价] ) * SUM ( '销售明细'[销售数量] )

如图:

这是销售情况,现在我们要了解每一个产品的绝对排名,该怎么进行?

有请RANKX!

输入如下代码:

代码语言:txt
AI代码解释
复制
绝对排名 =
RANKX ( ALL ( '产品表' ), [销售] )

结果如图:

排名结果如上,从排名上看没有啥问题,但是总计栏“1”是什么鬼?

继续优化我们的代码:

代码语言:txt
AI代码解释
复制
绝对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALL ( '产品表' ), [销售] ) )

结果如下:

是不是看起来顺眼多了?这里解释一下含义,IF不多说了,最基础的判定条件;HASONEVALUE函数的定义当列中只有一个唯一值的时候,返回TURE,没有则为空,因为总计栏没有产品名称这一说,所以排名总计消失。

那如果我想知道类别排名呢?ALL函数加限定条件!代码如下:

代码语言:txt
AI代码解释
复制
类别绝对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALL ( '产品表'[商品名称] ), [销售] ) )

结果展示如图:

是不是有点理解了?如果不考虑分组、分类这类东西,ALL整个表;考虑分组、分类要ALL具体的列。

这是绝对排名,但是有时候我还想知道筛选之后的结果,比如说就几项,该咋整?这个可能有的小伙伴已经反应过来了,之前的占比问题我们用的是啥?ALLSELECTED啊!

代码如下:

代码语言:txt
AI代码解释
复制
相对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALLSELECTED ( '产品表' ), [销售] ) )

结果如图:

同理,类别相对排名代码如下:

代码语言:txt
AI代码解释
复制
类别相对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALLSELECTED ( '产品表'[商品名称] ), [销售] ) )

结果如图:

当然,也可以进行多维度排名,用法是ALL与ALLSELECTED函数可以添加多项列,这里就不一一赘述了。做一下总结:

总体绝对排名:

代码语言:txt
AI代码解释
复制
总体绝对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALL ( '产品表' ), [销售] ) )

类别绝对排名:

代码语言:txt
AI代码解释
复制
类别绝对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALL ( '产品表'[商品名称] ), [销售] ) )

总体相对排名:

代码语言:txt
AI代码解释
复制
总体相对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALLSELECTED ( '产品表' ), [销售] ) )

类别相对排名:

代码语言:txt
AI代码解释
复制
类别相对排名 =
IF ( HASONEVALUE ( '产品表'[商品名称] ), RANKX ( ALLSELECTED ( '产品表'[商品名称] ), [销售] ) )

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球PowerBI丨需求圈)

这里是白茶,一个PowerBI的初学者。

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

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

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

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

评论
登录后参与评论
1 条评论
热度
最新
如果是想取相对排名的top10怎么取了
如果是想取相对排名的top10怎么取了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
RANKX函数延伸丨笛卡尔与TOPN问题
之前呢,白茶曾经分享过关于RANKX排名问题,但是在实际需求中,有时候我既想展示排名,但是同时我又想看看销售前几,该如何进行呢?这个问题就是标题——TOPN的问题。
PowerBI丨白茶
2021/09/01
5430
RANKX函数延伸丨笛卡尔与TOPN问题
销售需求丨切换技巧
小伙伴们,以上就是本期内容的问题来源,一些场景和人物都是白茶虚构的,但是这个事却是真的。
PowerBI丨白茶
2021/09/04
7280
销售需求丨切换技巧
RANKX函数丨最终话
白茶认为,这个东西可以不用,但是该了解需要了解。感谢@群里面各位大佬的指点,RANKX函数的最后一点也彻底明白了。
PowerBI丨白茶
2021/09/01
6900
RANKX函数丨最终话
多维度帕累托丨最终话
白茶对近一个月所学的DAX进行了一次梳理,做出了一个动态多维度的帕累托图,效果如下。
PowerBI丨白茶
2021/09/04
9720
多维度帕累托丨最终话
迭代循环丨SUMX函数
白茶在之前的一期,曾经分享过RANKX排名的问题,但是白茶当时犯了一个很严重的错误,这里和小伙伴们说一声抱歉。本期呢,既是纠正这个错误,也是学习另一个函数——迭代循环函数之SUMX。
PowerBI丨白茶
2021/09/01
1.1K0
迭代循环丨SUMX函数
销售需求丨购物篮分析
在实际业务中,商场物品的摆放是否对营销有所影响?所策划的营销活动是否真正的起到了促销价值?活动赠品的使用效果如何?购物篮分析是啥?
PowerBI丨白茶
2021/09/03
4690
销售需求丨购物篮分析
函数周期表丨信息丨值丨ISINSCOPE
可以看得出来,当我们进行筛选时,ISFILTERED函数的总计栏显示TRUE,而ISINSCOPE的结果依然是FALSE。
PowerBI丨白茶
2021/08/31
5200
函数周期表丨信息丨值丨ISINSCOPE
基础手札丨筛选
这里详细说一下VALUES这个函数,它是使用列作为参数,结果是返回包含一列的一个表格。如果返回的结果只有一行,也可以作为单个值使用。
PowerBI丨白茶
2021/09/02
2890
基础手札丨筛选
阅读圣经丨筛选上下文与行上下文
最近白茶在读《圣经第二版》,再加上有很多小伙伴问过白茶总计栏显示不合理的地方,白茶决定抽出一期来描述一下上下文。
PowerBI丨白茶
2021/09/02
1.2K0
阅读圣经丨筛选上下文与行上下文
学习CALCULATE函数(三)
继续学习CALCULATE函数,之前分享了利用FILTER进行内部筛选,那么还有什么用法呢?别急,咱们来继续。
PowerBI丨白茶
2021/09/01
9680
学习CALCULATE函数(三)
阅读圣经丨DAX数据类型
之前的时候,白茶是一个纯小白,有一些东西,网上并没有详细的基础介绍,或者说,没有免费的资源。这就导致说与大佬们沟通的时候,很多大佬都不愿意搭话。不是不愿意回答,而是问的问题太基础了,就好比问人家1+1等于几一样。痛定思痛,基础终究是需要自己静下心来学习的。
PowerBI丨白茶
2021/09/01
4750
阅读圣经丨DAX数据类型
函数周期表丨筛选丨表丨ALLSELECTED
ALLSELECTED函数,被微软划分为“筛选”类函数,隶属于“表函数”。其用途,常常是用来计算或者显示明面上的筛选影响,而忽略其行上下文的影响。
PowerBI丨白茶
2021/08/29
1K0
函数周期表丨筛选丨表丨ALLSELECTED
折线图技巧丨阈限颜色设置
ALLSELECTED是为了保证无论如何筛选,都能按照我们设定的条件显示固定的上下阈限;
PowerBI丨白茶
2021/09/03
1.5K0
折线图技巧丨阈限颜色设置
函数周期表丨筛选丨表丨ALLEXCEPT
ALLEXCEPT函数属于“筛选”类函数,隶属于“表函数”,在ALL函数系列家族中,其地位是不可或缺的。
PowerBI丨白茶
2021/08/29
7370
函数周期表丨筛选丨表丨ALLEXCEPT
销售需求丨并列排名问题
在DAX函数中,关于排名的函数有RANKX和TOPN函数,这两个函数白茶已经写过很多文章了,都是关于排名问题的,但是,实际情况中,根据我们中国式报表的需求,怎么可能仅仅如此?
PowerBI丨白茶
2021/09/03
7870
销售需求丨并列排名问题
BI-SQL丨UPDATE
UPDATE语句在SQL的查询中,通常可以用来修改表中的数据,即我们经常听说的“改”。
PowerBI丨白茶
2021/09/05
4450
BI-SQL丨UPDATE
阅读圣经丨变量(一)
最近白茶有点私事,停更了许久。忙完了,可以静心的学习DAX。继续研究圣经。最开始的时候,偶尔曾经看到一篇文章就是专门介绍VAR函数的,但是当时看的懵懵懂懂。如今再看,添加了很多的明悟。
PowerBI丨白茶
2021/09/01
2710
阅读圣经丨变量(一)
BI-SQL丨DISTINCT
在SQL中,DISTINCT函数也是常见函数之一,通常可以用来进行对表或者列进行去重操作。
PowerBI丨白茶
2021/09/04
4430
BI-SQL丨DISTINCT
销售需求丨动态坐标
之前呢,白茶分享了如何制作动态数据的方法,咱们来继续研究,动态坐标轴。有时候经常能遇到,说想在一个可视化插件中能够灵活的切换维度,就像下面这个动图一样:
PowerBI丨白茶
2021/09/03
3850
销售需求丨动态坐标
BI-SQL丨AND & OR & IN
AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以与其他筛选函数使用。
PowerBI丨白茶
2021/09/04
2820
BI-SQL丨AND & OR & IN
相关推荐
RANKX函数延伸丨笛卡尔与TOPN问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文