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

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

Power BI之DAX神功:第4卷第21回 GROUPBY函數(shù)與SUMMARIZE的區(qū)別

2021-12-29 13:38 作者:孫興華zz  | 我要投稿

一、先體驗(yàn)一下GROUPBY

語(yǔ)法:GROUPBY(表,按哪個(gè)列分組,新列名,生成新列的表達(dá)式)

// 前2個(gè)參數(shù)是必需的,后2個(gè)參數(shù)可選,后3個(gè)參數(shù)可重復(fù)

GROUPBY僅憑前兩參數(shù)就可以生成一張表,如果我想對(duì)生成的這張表做點(diǎn)什么,例如:張三、李四、王五的平均分,例如2020、2021年AB商品總銷量與總銷售

【1】CURRENTGROUP函數(shù)

CURRENTGROUP 只能用于 GROUPBY 函數(shù)中生成新列的表達(dá)式中使用,無參數(shù)。

CURRENTGROUP()就代表GROUPBY前兩參數(shù)生成的那張表。

當(dāng)我們對(duì)這張表操作時(shí)只能迭代這張表,要使用X系列的迭代函數(shù),例如:SumX、AverageX、MaxX等等

【2】對(duì)單列分組

表名:Sheet1

返回結(jié)果

【3】對(duì)多列分組

表名:Sheet2

返回結(jié)果:

【4】你的疑問

這個(gè)功能矩陣就可以實(shí)現(xiàn),為什么要這么麻煩新建表呢?

因?yàn)檫@個(gè)表不是直接拿來用的,將做為參數(shù)嵌套在其它函數(shù)中使用。

二、AddColumns+Summarize也可以實(shí)現(xiàn)

我們以Sheet2為列:

返回結(jié)果:

是不是與GROUPBY函數(shù)生成的表一樣?

現(xiàn)在我們對(duì)SUMMARIZE函數(shù)生成的表添加列就可以了:

Ps: 也可以將calculatetable函數(shù)替換成RELATEDTABLE函數(shù),詳見《DAX神功》第2卷第2回

返回結(jié)果:

三、GROUPBY與SUMMARIZE函數(shù)比較

【1】GROUPBY與SUMMARIZE都對(duì)第1參數(shù)擴(kuò)展表執(zhí)行分組

可以使用擴(kuò)展表中包含的任何列做分組參數(shù)。例如下圖,通過店號(hào)建立一對(duì)多關(guān)系

擴(kuò)展表原理詳見《DAX神功》第3卷第12回

返回結(jié)果:

【2】summarize可轉(zhuǎn)換上下文,而GROUPBY只是迭代表

用summarize或Addcolumns新增加的列,又名派生列。

原表中沒有的列叫派生列,原表中有的列叫原生列。

雖然我們沒有提到這個(gè)名詞,但是新增列的工作我們經(jīng)常在做,關(guān)于派生列(新增列)數(shù)據(jù)沿襲問題,我們也在《DAX神功》第2卷第21回中做了詳細(xì)講解。

但是這樣操作會(huì)降低速度,我們平時(shí)很少在Summarize中直接新建派生列,而是使用AddColumns+Summarize方式提高速度,但是AddColumns要使用Calculate實(shí)現(xiàn)篩選。因?yàn)閟ummarize本身可轉(zhuǎn)換上下文。

反觀,GROUPBY只是通過 CURRENTGROUP 函數(shù)對(duì)分組后的每一行進(jìn)行迭代。

【3】性能警告

GROUPBY會(huì)影響性能,主要取決于列的基數(shù),如果列基數(shù)比較大,不建議使用GROUPBY函數(shù),就是說有100萬(wàn)行數(shù)據(jù)不可怕,分組后就是張三、李四,那是OK的??膳碌氖欠纸M后有30萬(wàn)人,這時(shí)我建議還是別用了,等將來PC性能提高了你使用速度慢的可能也不明顯了。

關(guān)于列基數(shù),請(qǐng)?jiān)斠?span id="s0sssss00s" class="color-green-04">《DAX神功》第4卷第9回

四、GROUPBY 可以用于對(duì)派生列分組聚合

在上面我們講到了AddColumns和Summarize都可以生成派生列,Groupby的優(yōu)勢(shì)是對(duì)派生列再分組。如下表,學(xué)號(hào)之間建立一對(duì)多關(guān)系

【1】先通過summarize分組

【2】通過Addcolumns新建派生列

【3】如果我對(duì)評(píng)價(jià)列再分組,求及格與不及格的平均分

以下兩種寫法都是錯(cuò)誤的!

出錯(cuò)理由都是找不到[平均分]這個(gè)列,因?yàn)閇平均分]本身就是派生列。這時(shí)使用GROUPBY就可以了。神奇吧!

返回結(jié)果:

五、GROUPBY 空行和空值問題

如下表所示,通過學(xué)號(hào)建立關(guān)系:

【1】因?yàn)橐粚?duì)多關(guān)系不符合實(shí)時(shí)參照完成性產(chǎn)生的空行

例如,1端表主鍵元素個(gè)數(shù)小于多端表外鍵元素個(gè)數(shù),這時(shí)必然會(huì)產(chǎn)生空行,可以通過filter篩選掉空行。

返回結(jié)果:

去掉空行:

返回結(jié)果:

【2】因?yàn)楹Y選產(chǎn)生的空值【小心分母問題】

當(dāng)分?jǐn)?shù)不到60分時(shí),不參加求平均,這時(shí),A和C同學(xué)只有一科成績(jī),B同學(xué)因?yàn)閮煽贫疾蛔?0分所以返回空。

我們《火力全開》第12課?講IF函數(shù)時(shí),提到第三參數(shù)省略時(shí),他返回Blank()

返回結(jié)果:

友情提示:這時(shí)你千萬(wàn)別聽從國(guó)外文獻(xiàn)上翻譯過來的文章上面提到的方法,將第3參數(shù)改成0,這是一個(gè)小學(xué)知識(shí)。

if('成績(jī)表'[分?jǐn)?shù)]>60,'成績(jī)表'[分?jǐn)?shù)])? // 凡是不滿60分的成績(jī)不參加平均分計(jì)算,分母減少。

if('成績(jī)表'[分?jǐn)?shù)]>60,'成績(jī)表'[分?jǐn)?shù)],0) // 凡是不滿60分的成績(jī)當(dāng)成0來參加平均分計(jì)算?,分母不減少。

返回結(jié)果:因?yàn)榉帜笡]有減少,返回Blank()時(shí)原本是77和88,現(xiàn)在變成了77/2=38.5、88/2=44

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

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

《DAX神功》文字版合集:

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

《DAX神功》視頻版合集:

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

《DAX神功番外篇》文字版合集:

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

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神功:第4卷第21回 GROUPBY函數(shù)與SUMMARIZE的區(qū)別的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
浙江省| 庆安县| 昌宁县| 鄂托克旗| 扶余县| 营山县| 团风县| 石河子市| 深泽县| 赞皇县| 阜南县| 桦川县| 栾城县| 廉江市| 汉川市| 五指山市| 全南县| 德令哈市| 桃源县| 鄂伦春自治旗| 桦南县| 霍山县| 库尔勒市| 海原县| 安阳市| 东城区| 五莲县| 日照市| 闽侯县| 余庆县| 修水县| 同仁县| 宁海县| 肇源县| 宁陵县| 林口县| 喀喇沁旗| 镇赉县| 门源| 麻阳| 同德县|