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

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

Power BI之DAX神功:第3卷第20回 無(wú)參數(shù)的ALLSELECTED函數(shù),用1+1等于2的方法避坑

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

ALLSELECTED 函數(shù)支持三種類型的參數(shù):

單列或多列:ALLSELECTED (表名[列名])

整張表:ALLSELECTED (表名)

關(guān)于以上兩種參數(shù),我們分別在《DAX神功》第1卷第11回、第3卷第18回、第19回做了詳解

當(dāng)然,我講的并不深入,因?yàn)槁凡恢灰粭l,有些困難是要迎面而上,但是有一些是可以避開(kāi)的。我自己也選擇避開(kāi)!當(dāng)然我并不反對(duì)你深入研究,上節(jié)課我也告知你深入研究的地方。

你還可以使用不帶參數(shù)的 ALLSELECTED(),今天我們重點(diǎn)講講不帶參數(shù)的情況

注意:在不使用任何參數(shù)的情況下ALLSELECTED函數(shù)只能作為 CALCULATE或CALCULATETABLE 調(diào)節(jié)器。因?yàn)?strong>它沒(méi)參數(shù),它肯定無(wú)法返回成一張表,自然也就做不成表函數(shù)。

有了上面這句話,問(wèn)題就簡(jiǎn)單多了,之所以單拿出來(lái)講,是因?yàn)镈AX專家很多代碼沒(méi)有必要寫成那樣,在學(xué)習(xí)ALLSELECTED()無(wú)參數(shù)之前,我們需要先理解ALL()無(wú)參數(shù)。


一、ALL()無(wú)參數(shù)

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

【度量值】all學(xué)生表 = CALCULATE([總分],ALL('學(xué)生表')) // 刪除學(xué)生表所有列的篩選

【度量值】all學(xué)生表姓名 = CALCULATE([總分],ALL('學(xué)生表'[姓名]))

// 只刪除學(xué)生表姓名列的篩選

【度量值】all學(xué)生表班級(jí) = CALCULATE([總分],ALL('學(xué)生表'[班級(jí)]))

// 只刪除學(xué)生表班級(jí)列的篩選,但是學(xué)生表姓名列可以篩選

【度量值】all成績(jī)表學(xué)號(hào)列 = CALCULATE([總分],ALL('成績(jī)表'[學(xué)號(hào)]))

// 刪除成績(jī)表學(xué)號(hào)列的篩選,不影響其它篩選

【度量值】all成績(jī)表 = CALCULATE([總分],ALL('成績(jī)表'))

// 因?yàn)閷W(xué)生表與成績(jī)表是一對(duì)多關(guān)系,成績(jī)表是多端向一端擴(kuò)展學(xué)生表中的所有列,所以當(dāng)all成績(jī)表時(shí),成績(jī)表的擴(kuò)展表中所有列都刪除篩選。

【度量值】all無(wú)參數(shù) = CALCULATE([總分],ALL())

// 在整個(gè)模型中刪除任何篩選器

因?yàn)槲覀冎挥袃蓮埍?,all()返回的結(jié)果與all(成績(jī)表)是一樣的

為了解釋這個(gè)問(wèn)題,我們?cè)偈仲v一次

《DAX神功》第1卷第2回我們學(xué)習(xí)了,箭頭方向符合條件時(shí),在整條線路中不存在多對(duì)多關(guān)系時(shí),開(kāi)始表可以篩選結(jié)束表。我們制度兩個(gè)度量值:

返回結(jié)果:

原本學(xué)生表中的姓名列是可以篩選日期表,但是當(dāng)使用all()整個(gè)模型中原本能用的篩選器都被刪除了。因?yàn)閷W(xué)生表和日期表都是一端表,你總不能說(shuō)在一對(duì)多關(guān)系中一端表有擴(kuò)展列吧?

二、ALLSELECTED()無(wú)參數(shù)

ALLSELECTED():激活任何列最后一個(gè)影子篩選器,如果沒(méi)有影子篩選器當(dāng)然無(wú)法激活了。

通過(guò)商品編碼,建立一對(duì)多關(guān)系:

我們將上面兩個(gè)度量值放入矩陣:

《DAX神功》第3卷第18回 原例,只是改了個(gè)表。我跟大家說(shuō)矩陣就是查詢,是查詢就能生成表,就可以通過(guò)新建表舉例:過(guò)程就不再重復(fù)了,我們直接新建表

返回結(jié)果:

顯式篩選器:蘋果、土豆、西瓜

影子篩選器:商品表[商品名稱]通過(guò)顯式篩選器后顯示的可見(jiàn)行

allselected刪除所有篩選器,激活影子篩選器后進(jìn)行計(jì)算,所以每一行顯示6+4+null=10

現(xiàn)在我們將其改成allselected()無(wú)參數(shù)

返回結(jié)果:

因?yàn)槲覀儼咐校挥幸粋€(gè)列上有影子篩選器,且只有一個(gè)影子篩選器。我跟大家一直說(shuō),不建議你們嵌套或在復(fù)雜公式中使用allselected函數(shù)。切記!如果我們盡量避開(kāi)allselected函數(shù),換而言之,ALLSELECTED()存在的意義就很小了。

三、計(jì)算從未購(gòu)買過(guò)某些產(chǎn)品的客戶數(shù)量

這是一道由DAX專家舉出的例子,如果是我,我會(huì)用下面的方法做:

返回結(jié)果:

上面的方法,就算是DAX初學(xué)者也會(huì)吧?這不就避開(kāi)了Allselected了嗎?

allselected一旦使用,連專家也會(huì)進(jìn)入走火入魔的狀態(tài),當(dāng)年歐陽(yáng)峰前輩第2次華山論劍,雖然勝出,可是身體狀況...例如這個(gè)案例,DAX專家這樣寫。(如果你覺(jué)得書上不是這樣寫的,麻煩您問(wèn)問(wèn)作者或譯者,看是不是有勘誤)

度量值如下:

返回結(jié)果:

你看上去沒(méi)毛病吧?你篩選一下商品名稱看看

解決方法,將allselected()改成all()

返回結(jié)果:

因?yàn)閒ilter創(chuàng)建了tb1中所有列的影子上下文,如果使用allselected()他會(huì)激活這個(gè)影子篩選器,可是我現(xiàn)在的實(shí)際情況就不能讓它篩選。如果一定要這么寫公式,我也是這樣寫:

返回結(jié)果:

這不也避開(kāi)了allselected嗎?當(dāng)然這樣寫都沒(méi)必要,你就用我第一種方法就好了。

四、將銷售額計(jì)算范圍縮小至首年客戶

意思:B1和B2第1年就買東西了,要計(jì)算首年顧客,在每個(gè)年份的消費(fèi)金額。不需要B3的數(shù)據(jù)。

制作動(dòng)態(tài)日期表:

我們先看看DAX專家是這樣寫的:寫的對(duì)!太對(duì)了!

返回結(jié)果:

你知道困擾你的地方在哪里嗎?因?yàn)樗褂昧薃LLSELECTED(),哪有影子呀?

在這里使用ALLSELECTED()和all()是一樣,沒(méi)影子就跟all()一樣了

而且tb2根本就不用all(),干嘛呀?先刪除篩選再恢復(fù)篩選。你看我下面的寫法:

返回結(jié)果:

公式分析:

(1)FIRSTNONBLANK('日期表'[年],[總銷售])? // 第一個(gè)銷售不為空的年份?,返回2020

// 這個(gè)2020具有'日期表'[年]的數(shù)據(jù)沿襲,詳見(jiàn)《DAX神功》答網(wǎng)友問(wèn)12

(2)這個(gè)2020可是固定的,不能篩選,因?yàn)槲覀兇_定的是首年永遠(yuǎn)都是2020年。

CALCULATETABLE(FIRSTNONBLANK('日期表'[年],[總銷售]),ALL())

(3)CALCULATETABLE(VALUES('銷售表'[會(huì)員卡號(hào)]),tb1) // 篩選2020年的會(huì)員卡號(hào),返回會(huì)員卡號(hào)是B1、B2的這張表

(4)?CALCULATE([總銷售],tb2)? // 篩選會(huì)員卡號(hào)是B1和B2的銷售

我就問(wèn)你,這里面有原理嗎?這不都是語(yǔ)法嗎?

好比,快遞就在樓下快遞柜里,我下去拿回來(lái)就好了!不行,為了研究原理,我一定要去法院起訴,讓法院把這個(gè)快遞判給我,我才能去取。結(jié)果是相同的,最終快遞都回到我手中了,可是后者有什么必要呢?這快遞本來(lái)就是我的。

再次建議大家,allselected我們只用最基本的功能,其它功能我遇到的基本可以被替代,不要給自己增加麻煩。

《孫興華講PowerBI火力全開(kāi)》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卷第20回 無(wú)參數(shù)的ALLSELECTED函數(shù),用1+1等于2的方法避坑的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
哈巴河县| 板桥市| 霍城县| 南和县| 霸州市| 巩义市| 平邑县| 彩票| 交城县| 建始县| 苍南县| 山阳县| 和龙市| 五家渠市| 洞口县| 余干县| 宜宾市| 昭觉县| 华阴市| 庆云县| 五大连池市| 电白县| 酉阳| 凌源市| 乐安县| 浠水县| 康保县| 申扎县| 遵义县| 浦北县| 沿河| 襄垣县| 高唐县| 屯门区| 横峰县| 那坡县| 武定县| 滦平县| 大余县| 什邡市| 玉溪市|