最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Power BI之DAX神功:第3卷第18回 影子篩選上下文ALLSELECTED函數(shù)

2021-12-14 09:45 作者:孫興華zz  | 我要投稿

《DAX神功》第1卷第11回?我只講了ALLSELECTED函數(shù)最基礎(chǔ)的功能:計(jì)算視覺總計(jì)

換成一句話說:無論切片器如何篩選,總計(jì)總是顯示100%。

但是ALLSELECTED函數(shù)太復(fù)雜了,它的坑太多了!特別是嵌套問題,還是建議大家去看權(quán)威指南和高飛老師的解釋。

不同事物針對(duì)群體不同,社會(huì)上需要讓窮人富起來的教程,自然也會(huì)有讓富人更富有的教程?!毒抨柹窆Α泛汀毒抨幷娼?jīng)》最大的區(qū)別,前者讓一個(gè)不會(huì)武功滿身是病的人成為了高手,后者其實(shí)創(chuàng)造了更多高手,但是代價(jià)也很高。

我個(gè)人建議初學(xué)者,明智的做法是避開坑,而不是跳到每一個(gè)坑里看看有多深!大多情況下建議避開ALLSELECTED函數(shù),除非是最基礎(chǔ)的使用。

一、你看不到影子篩選器

影子篩選上下文(影子篩選器),就是篩選上下文,就是一個(gè)還沒有被激活的篩選上下文。

以下兩個(gè)度量值,結(jié)果一樣,但是計(jì)算過程可不同

總分1是篩選上下文,總分2的sumx創(chuàng)建行上下文被度量值轉(zhuǎn)換成了篩選上下文

《DAX神功》第3卷第17回 我們了解了,將行上下文轉(zhuǎn)換成篩選上下文對(duì)內(nèi)存消耗大,占用時(shí)間長(zhǎng)。建議大家,要么使用篩選上下文,要么使用行上下文,盡量避開轉(zhuǎn)換上下文。

【度量值】總分2= sumx('成績(jī)表','成績(jī)表'[分?jǐn)?shù)])

因sumx是迭代函數(shù),生成一個(gè)包含成績(jī)表在當(dāng)前篩選上下文中可見行的影子篩選上下文。

很多書說都是這樣介紹的,請(qǐng)問什么是當(dāng)前篩選上下文中可見行?

答:例如你外部有一個(gè)切片器,當(dāng)你篩選姓名:孫興華,當(dāng)前篩選上下文中可見行就是所有包含孫興華的行。

最重要的一點(diǎn):如果不使用ALLSELECTED激活影子篩選器時(shí),你看不到它的存在。

你要清楚,迭代函數(shù)創(chuàng)建行上下文,行上下文篩選是逐行迭代,他會(huì)生成一個(gè)行篩選器。

影子篩選器就是復(fù)制你的當(dāng)前篩選上下文的篩選器,生成影子篩選器,等ALLSELECTED函數(shù)激活。下面我們通過實(shí)例來講解:

二、當(dāng)ALLSELECTED函數(shù)做篩選調(diào)節(jié)器

以下兩個(gè)度量值我們?cè)?strong>《DAX神功》第1卷第11回詳細(xì)講解過

在沒有篩選的情況下:

我篩選張三和李四時(shí):

矩陣就相當(dāng)于SQL中的一個(gè)查詢,我們的查詢可以生成一張表,因?yàn)槲覀儸F(xiàn)在還沒有講DAX Studio,但是Access基礎(chǔ)篇講過生成表查詢,矩陣是查詢它肯定也可以生成一張表,所以我們可以使用新建表來演示:

接下來我們回憶幾個(gè)知識(shí):

<1> 數(shù)據(jù)沿襲:詳見《DAX神功》第2卷第21回

<2> SUMMARIZECOLUMNS函數(shù) 詳見《火力全開》筆記23.01

利用我們使用之前學(xué)過的知識(shí),將矩陣變成一張表:

我問你第一個(gè)問題,切片器來自哪里?是不是來自學(xué)生表的姓名列?假設(shè)我們選了張三和李四

可以使用表構(gòu)造函數(shù)來表示:{"張三","李四"}

可是你的表構(gòu)造函數(shù)生成的這張表,和我的學(xué)生表姓名列有什么關(guān)系呢?所以這時(shí)我們要應(yīng)用數(shù)據(jù)沿襲原理。

TREATAS({"張三","李四"},'學(xué)生表'[姓名])? // 將第1參做第2參的篩選器,在學(xué)生表姓名列上做標(biāo)記。

SUMMARIZECOLUMNS第1參數(shù)是對(duì)哪個(gè)列分組:我們需要對(duì)'學(xué)生表'[姓名]分組

但是,'學(xué)生表'[姓名]有3個(gè)人,我們外部切片器是不是只選了張三和李四?

現(xiàn)在可以使用SUMMARIZECOLUMNS第2參數(shù)去篩選第1參數(shù),我們篩選張三和李四:TREATAS({"張三","李四"},'學(xué)生表'[姓名])

最后,配上那3個(gè)度量值增加3個(gè)列就OK了!

現(xiàn)在看結(jié)果和矩陣是一樣的:

<3> 我們進(jìn)入分析狀態(tài)

無論外部的切片器和被我們轉(zhuǎn)換成TREATAS({"張三","李四"},'學(xué)生表'[姓名])都是一個(gè)意思,它們都是普通篩選器,有人叫他顯式篩選上下文(顯式篩選器)。

SUMMARIZECOLUMNS是迭代函數(shù),他是行上下文,逐行迭代。

度量值[總分1]篩選器怎么篩選,我就怎么變!原理如下:

度量值[all總分]:刪除所有篩選器,返回所有人分?jǐn)?shù)總和。

Ps:這里的刪除所有篩選器,指的是刪除所有篩選器進(jìn)行計(jì)算,得到結(jié)果。并不是說不篩選張三和王五!

姓名列的張三和王五,是顯式篩選器進(jìn)行的篩選,但是他們返回的結(jié)果,是在同時(shí)刪除了行上下文篩選器和顯式篩選器的情況下進(jìn)行的計(jì)算,也就是所有人的成績(jī)總和。

度量值[allselected總分]:

迭代函數(shù)生成一個(gè)包含學(xué)生表[姓名]的影子篩選器。它不包含整個(gè)學(xué)生表[姓名]組成的表。只包含其在當(dāng)前篩選上下文中可見的行??梢娦校簭埲⒗钏?。實(shí)際上,影子篩選器在迭代過程中是不活動(dòng)的,除非它被一個(gè)叫做 ALLSELECTED 的函數(shù)激活。

?ALLSELECTED會(huì)在刪除行上下文篩選器和顯式篩選器的情況下,激活影子篩選器,最終計(jì)算張三和李四的總和值。

Ps: ALL函數(shù)是刪除所有篩選器后進(jìn)行計(jì)算。?ALLSELECTED是刪除所有篩選器后激活影子篩選器進(jìn)行計(jì)算。影子篩選器是張三和王五,結(jié)果就是:張三+王五

官方解釋:ALLSELECTED作為篩選調(diào)節(jié)器時(shí),將恢復(fù)參數(shù)所指定列或表的最后一個(gè)影子篩選上下文,如果不存在影子篩選上下文則不執(zhí)行任何操作。

三、當(dāng)ALLSELECTED函數(shù)做表函數(shù)

友情提示:正常情況下我們是不會(huì)這樣做的,強(qiáng)烈建議避開ALLSELECTED函數(shù)

【1】參數(shù)為列

表名:Sheet1

返回結(jié)果:

Calculatetable第1參數(shù)是表,這張表由filter生成,篩選出所有人的名字,再通過Calculatetable篩選一班和二班的學(xué)生姓名。filter確實(shí)創(chuàng)建了影子篩選器:姓名列的張三、李四、王五、小張、小王、小李。但是影子篩選器沒有被激活。因?yàn)闆]有使用ALLSELECTED函數(shù)

當(dāng)我們將Values替換成Allselected時(shí):

返回結(jié)果:

filter生成的影子篩選器是'Sheet1'[姓名],但ALLSELECTED不可能將篩選器應(yīng)用到班級(jí)列。ALLSELECTED刪除了所有篩選器,激活了影子篩選器,但是影子篩選器是姓名列,Calculatetable的篩選器并沒有對(duì)姓名列進(jìn)行篩選,所以結(jié)果是返回所有人姓名。

注意:VALUES 和 DISTINCT 考慮篩選上下文,而 ALLSELECTED 不考慮。它在單個(gè)列上工作,并檢查該列是否被影子篩選上下文過濾,忽略任何交叉篩選。

因?yàn)槲覀兊陌咐挥幸粡埍?,但是你要記住ALLSELECTED忽略任何交叉篩選,VALUES 和 DISTINCT不忽略交叉篩選。

上面這個(gè)案例,ALLSELECTED函數(shù)沒有找到自己能激活的影子篩選器,所以它在本案例中的作用等于同ALL函數(shù)。ALL是刪除其它篩選器,ALLSELECTED刪除其它篩選器激活影子篩選器。

如果想激活影子篩選器,怎么辦?既然知道影子篩選器是'Sheet1'[姓名],你只能去篩選姓名

返回結(jié)果:

如果你將ALLSELECTED函數(shù)改成ALL函數(shù),ALL刪除篩選器,但是不會(huì)激活影子篩選器

返回結(jié)果:

【2】當(dāng)參數(shù)為表的時(shí)候

ALLSELECTED(表):大家都知道一張表由多個(gè)列組成,任何一個(gè)列都可能通過篩選器篩選,也可以被定義為影子篩選器。不嵌套是真香,一嵌套是真坑!(我不給你們講嵌套,因?yàn)槟切┒伎梢员苊猓也幌肟幽銈儯?/p>

返回結(jié)果:

filter生成了Sheet1所有列的影子篩選器,ALLSELECTED激活了所有影子篩選器,所以隨意篩選了。恰恰因?yàn)檫@樣,一張表中可能有10多個(gè)列,有顯式篩選器,有影子篩選器,東西一多你就亂了。所以事情沒有這么簡(jiǎn)單!切記要小心!盡量避開ALLSELECTED函數(shù)。

孫興華講PowerBI火力全開》PowerBI必學(xué)課程

https://www.bilibili.com/video/BV1qa4y1H7wp

《DAX神功》文字版合集:

https://www.bilibili.com/read/readlist/rl442274

《DAX神功》視頻版合集:

https://www.bilibili.com/video/BV1YE411E7p3

PowerBI(DAX函數(shù))、PowerQuery(M函數(shù))、Python辦公自動(dòng)化、Python爬蟲、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

https://www.bilibili.com/read/cv10222110

Power BI之DAX神功:第3卷第18回 影子篩選上下文ALLSELECTED函數(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
延吉市| 六安市| 达拉特旗| 永定县| 马关县| 闸北区| 云南省| 九龙坡区| 广南县| 峨边| 容城县| 拉萨市| 恩施市| 宜春市| 敖汉旗| 旺苍县| 大荔县| 托克逊县| 宁蒗| 翁牛特旗| 仁布县| 牙克石市| 和田市| 大城县| 榆林市| 鱼台县| 泊头市| 来安县| 汽车| 泽库县| 历史| 三江| 乌恰县| 商南县| 达孜县| 湘乡市| 清新县| 炎陵县| 芜湖县| 清远市| 平安县|