POWER BI DAX函数应用-筛选器函数(上)

1.ALL(Table)或ALL (Column[, Column[, …]])

函数作用:返回表中的所有行或者返回列中的所有值,同时忽略可能已应用的任何筛选器。此函数可用于清除筛选器并对表中的所有行创建计算。

应用场景:计算部分占总体的排名/百分比。

示例:要计算各城市的销售金额排名/占总销售额的百分比 。

原始数据

例1.1 计算排名。

新建度量值:

排名 = RANKX('销售记录',SUM('销售记录'[金额]),,DESC)

得到结果:

排名计算 错误结果

得到所有排名均为1,很显然,结果是错误的。原因是销售城市对排名操作仍起到了筛选器的作用,换而言之,以上结果是每个城市的销售金额占每个城市的总金额的排名,实际上,我们需要的是每个城市的销售金额占所有城市的总金额的排名,因此要删除销售城市这个筛选器,ALL函数即可解决此问题。

新建度量值:

销售金额 = SUM('销售记录'[金额])

排名1 = RANKX(ALL('销售记录'[销售城市]),[销售金额],,DESC)

采用ALL函数,即可清除销售城市对计算结果的影响,得到结果:

排名计算 正确结果

例1.2 计算百分比。

新建度量值:

销售金额 = SUM('销售记录'[金额])

占比% = '销售记录'[销售金额]/CALCULATE('销售记录'[销售金额],ALL('销售记录'))

得到结果:

百分比计算结果

上述展示了单一层级,即销售城市层级下的销量占比,而实际上,销售城市上面还有一层销售区域,现在欲同时展示两个层级下的销量占比,该如何操作呢?

首先,我们先在界面右侧重新建立一个由销售区域和销售城市组成的新的层次结构(可直接拖动销售城市到销售区域上),如图1所示。

然后,将新建立的层次结构拖到行,然后点击可视化图形(矩阵)的右上角第四个按钮,展开层次结构中的所有下移级别,即可将所有层级全部展开。

最后,书写度量值。

占比% = '销售记录'[销售金额]/CALCULATE('销售记录'[销售金额],ALL('销售记录'))

分类占比% = '销售记录'[销售金额]/CALCULATE('销售记录'[销售金额],ALL('销售记录'[销售城市]))

注意这两个度量值的区别,区别在于占比%中的ALL('销售记录')清除了所有筛选器的筛选作用,得到的结果是各个区域、各个城市的实际占比,但是分类占比%中的ALL('销售记录'[销售城市])仅清除了[销售城市]对结果的筛选作用,因此,它的结果是各个城市占所在区域的占比,如下图所示。

占比%与分类占比%的结果对比

这时,我们再想象一种业务场景,老板并不只想看部分占总体的占比,还想看部分占部分的占比,举个例子,老板既不想看费城销量占总体销量的占比,也不想看费城销量占所在区域的占比,而是想看费城的销量在费城、纽约、芝加哥三个城市中的销量占比,如何解决?

答案就是添加一个切片器,但又不仅仅是添加一个切片器就能解决的,还需要函数ALLSELECTED([<tableName> | <columnName>])。

2.ALLSELECTED([<tableName> | <columnName>])

函数作用:从当前查询的列和行中删除上下文筛选器,同时保留所有其他上下文筛选器或显式筛选器。

应用场景:解决上述问题。

新建度量值:

按筛选占总体% = '销售记录'[销售金额]/CALCULATE('销售记录'[销售金额],ALLSELECTED('销售记录'))

按筛选占分类% = '销售记录'[销售金额]/CALCULATE('销售记录'[销售金额],ALLSELECTED('销售记录'[销售城市]))

计算结果如下:

如图,切片器选中费城、纽约、芝加哥三个城市,以费城为例,分析这四个结果是如何得来的,已知总体销量为546。

占比%=费城销量156/总体销量546=28.57%。

分类占比%=费城销量156/东区销量277=56.32%。

按筛选占总体%=费城销量156/(费城销量156+纽约销量149+芝加哥销量121)=36.62%。

按筛选占分类%=费城销量156/(选中的东区城市销量:费城156+芝加哥121)=56.32%。

仅从值上来看,按筛选占分类%和分类占比%是相等的,但是意义却不尽相同,假如将切片器仅选中费城和纽约,那么此时的按筛选占分类%=费城销量156/(选中的东区城市销量:费城156)=100%,而分类占比依然是56.32%。

由此可见,占比的定义变化多端,大有文章,要正确使用ALL(Table)或ALL (Column[, Column[, …]])和ALLSELECTED([<tableName> | <columnName>])函数。

3.ALLEXCEPT(<table>,<column>[,<column>[,…]])

函数作用:删除表中除已应用于指定列的筛选器之外的所有上下文筛选器。

应用场景及示例:《合并同类项问题》篇有对该函数用法进行详细描述,再次不再赘述。详情请参照ALLEXCEPT函数用法-合并同类项问题。


最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351