Power Query中的Table.Group函數(shù)詳細(xì)分析

在我們操作過程中芭概,使用分組依據(jù)進(jìn)行匯總計(jì)算的操作應(yīng)該是非常的多的赛不,我們對(duì)于這個(gè)函數(shù)還是非常有必要深入了解下。

Table.Group


按為每行指定的列?key?中的值對(duì)?table?的行進(jìn)行分組罢洲。 對(duì)于每個(gè)組踢故,將構(gòu)造一條記錄,其中包含鍵列(及其值)以及由?aggregatedColumns?指定的任何聚合列惹苗。 注意殿较,如果多個(gè)鍵與比較器匹配,將返回不同的鍵桩蓉。此函數(shù)無法保證返回固定的行順序淋纲。 或者也可以指定?groupKind?和?comparer。

Table.Group(table as table, key as any, aggregatedColumns as list, optional groupKind as nullable number, optional comparer as nullable function) as table

示例:對(duì)表進(jìn)行分組院究,同時(shí)添加一個(gè)聚合列 [total]洽瞬,其中包含價(jià)格總和("each List.Sum([price])")。

用法:Table.Group(Table.FromRecords({[CustomerID= 1, price = 20], [CustomerID= 2, price = 10], [CustomerID= 2, price = 20], [CustomerID= 1, price = 10], [CustomerID= 3, price = 20], [CustomerID= 3, price = 5]}), "CustomerID", {"total",each List.Sum([price])})

輸出:Table.FromRecords({ [CustomerID= 1, total = 30], [CustomerID= 2, total = 30], [CustomerID= 3, total = 25]}, {"CustomerID", "total"})

以上是系統(tǒng)給出的這個(gè)函數(shù)的解釋业汰,初學(xué)者不一定能看得懂伙窃,那我們一步一步來分析這個(gè)函數(shù)。

此函數(shù)共有5個(gè)主要參數(shù)样漆。Table.Group(Table为障,key as ListaggregatedColumns as function放祟,groupKind鳍怨,comparer),其中只有3個(gè)是必填參數(shù)跪妥。

第一個(gè)必填參數(shù):我們很好理解鞋喇,是從哪個(gè)表進(jìn)行操作。

第二個(gè)必填參數(shù):是根據(jù)哪列數(shù)據(jù)進(jìn)行分組骗奖,可以任意格式确徙。參數(shù)必須要填寫醒串,但是可以是空列表{},只有在不需要值來計(jì)算時(shí)可以使用鄙皇。例如_,Table.RowCount等

第三個(gè)必填參數(shù):怎么進(jìn)行分組操作芜赌,是一個(gè)函數(shù)公式。

第四個(gè)可選參數(shù):1=全局分組;0=局部分組(分組到下一條不等值為止)

第五個(gè)可選參數(shù):目前所知是有2個(gè)參數(shù)組成的函數(shù)(x,y)其中X為每次分組后的第一行;Y為X當(dāng)前行及下面的每一行伴逸。通常用(x,y)=>Number.From()固定格式來處理所判斷后的條件值缠沈。

第三參數(shù)aggregatedColumns書寫格式

={{新標(biāo)題}, each 函數(shù) ,type 類型}

={{"新標(biāo)題1",each 函數(shù)},{"新標(biāo)題2", each 函數(shù)}}

={{"新標(biāo)題1", each 函數(shù), type 類型},{"新標(biāo)題2",each 函數(shù), type 類型}}

={{"求和", each List.Sum([成績]), type number},{"計(jì)數(shù)", each List.Count([學(xué)科]), type number}}

我們來舉幾個(gè)例子:

分組匯總計(jì)算各學(xué)生的總分。


=Table.Group(源,"姓名",{"成績", each List.Sum( [成績]), type number})

如果需要對(duì)求和后的成績做一個(gè)類型定義错蝴,可以這樣寫

=Table.Group(源,"姓名",{"成績", each List.Sum( [成績]), type number })

把這個(gè)原表作為一個(gè)table類型顯示在新表里洲愤。

=Table.Group(源,{},{"新標(biāo)題", each _})

除了普通的函數(shù)計(jì)算,還有很多其他的函數(shù)可以應(yīng)用顷锰,例如格式轉(zhuǎn)換柬赐。

=Table.Group(源,"姓名",{"考試科目", each Text.Combine([學(xué)科],"/")})

主要的3個(gè)必填參數(shù)使用我們基本已經(jīng)了解,那我們來說下第四參數(shù)官紫,全局分組和局部分組肛宋。默認(rèn)省略的情況下是作為全局分組,參數(shù)為1束世。如果需要局部分組酝陈,參數(shù)為0的話,我們可以看下同樣的數(shù)據(jù)源有什么樣的變化毁涉。

我們可以看第三張圖沉帮,如果第四參數(shù)選擇0,張三這個(gè)姓名沒有進(jìn)行分組統(tǒng)計(jì)贫堰,而王五這個(gè)姓名有分組穆壕,這個(gè)是為什么呢?

全局分組=無重復(fù)匯總=參數(shù)為1

局部分組=連續(xù)匯總=參數(shù)為0

因?yàn)橥跷暹@個(gè)名字是連續(xù)一起的严嗜,所以局部分組的時(shí)候就進(jìn)行了操作粱檀,而張三這個(gè)姓名因?yàn)槭歉糸_的洲敢,所以就沒有進(jìn)行分組計(jì)算漫玄,所有分開的都作為單個(gè)分組依據(jù)。

第四參數(shù)的全局匹配和局部匹配我們了解后压彭,那我們來看下第五個(gè)參數(shù)睦优。

第五個(gè)參數(shù)是一個(gè)匹配函數(shù),有2個(gè)參數(shù)壮不,我們暫定為x,y汗盘。通常用(x,y)=>Number.From()固定格式來處理所判斷后的條件值。

X代表每一個(gè)分組的第一行询一,Y為X當(dāng)前行及下面的每一行隐孽。

我們來看下如果上面這個(gè)案例把第五參數(shù)填進(jìn)去會(huì)發(fā)生什么癌椿?

我們先測(cè)試X參數(shù),我們先把x="張三"這個(gè)條件放入進(jìn)第五參數(shù)中菱阵。我們可以看到踢俄,如果把參數(shù)填寫成張三,顯示的結(jié)果是張三80晴及,李四93.75都办。這個(gè)數(shù)據(jù)是怎么來的呢?

如果只匹配X的話虑稼,他的規(guī)則是從第一個(gè)開始連續(xù)匹配琳钉,如果不滿足條件即結(jié)束。意思就是指X從第一個(gè)開始配蛛倦,如果符合就顯示并計(jì)算歌懒,同時(shí)再往下一個(gè)進(jìn)行匹配;如果不符合則結(jié)束匹配溯壶,并顯示所匹配的這行數(shù)據(jù)的匹配值歼培,并把剩余的數(shù)據(jù)全部按公式計(jì)算。

X="張三"

X匹配到了第一個(gè)張三茸塞,則顯示張三躲庄,并計(jì)算80分的平均值,顯示80钾虐。

然后繼續(xù)匹配下一條噪窘,結(jié)果不等于張三則計(jì)算剩余數(shù)據(jù)。顯示這一行去匹配的數(shù)據(jù)"李四"效扫,并計(jì)算剩余數(shù)據(jù)的平均數(shù)(90+100+90+95)/4=93.75

X="李四"

X匹配第一個(gè)不等于李四倔监,則返回顯示李四并計(jì)算剩余數(shù)據(jù)的平均數(shù)(80+90+100+90+95)/5=91

我們可以看,只要是不配的數(shù)據(jù)菌仁,都是返回張三91

講完了X我們?cè)賮砜聪耏參數(shù)

我們把y參數(shù)填寫張三進(jìn)行匹配

顯示張三90和張三95浩习,第一個(gè)張三是匹配到當(dāng)前往下直到不滿足條件為止計(jì)算所包含的數(shù)據(jù)(80+90+100+90)/4,第二個(gè)張三是匹配到最后一個(gè)張三济丘,因?yàn)橐呀?jīng)是最后一條谱秽,所以顯示95。

我們把y參數(shù)填寫成王五進(jìn)行匹配

顯示第一個(gè)張三85摹迷,第二個(gè)王五100疟赊,第三個(gè)王五92.5

因?yàn)榈谝粋€(gè)y顯示王五的是在第三行,所以返回顯示第一個(gè)匹配值張三峡碉,并計(jì)算顯示截至匹配到王五位置的行之前的值(含匹配行)進(jìn)行計(jì)算近哟。(80+90)/2,找到王五匹配值后計(jì)算100/1鲫寄,第三個(gè)王五匹配值后計(jì)算(90+95)/2

通過以上示例我們可以大致可以了解到Table.Group這個(gè)函數(shù)的用法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吉执,一起剝皮案震驚了整個(gè)濱河市疯淫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌戳玫,老刑警劉巖峡竣,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異量九,居然都是意外死亡适掰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門荠列,熙熙樓的掌柜王于貴愁眉苦臉地迎上來类浪,“玉大人,你說我怎么就攤上這事肌似》丫停” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵川队,是天一觀的道長力细。 經(jīng)常有香客問我,道長固额,這世上最難降的妖魔是什么眠蚂? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮斗躏,結(jié)果婚禮上逝慧,老公的妹妹穿的比我還像新娘。我一直安慰自己啄糙,他們只是感情好笛臣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著隧饼,像睡著了一般沈堡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上燕雁,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天诞丽,我揣著相機(jī)與錄音,去河邊找鬼贵白。 笑死率拒,一個(gè)胖子當(dāng)著我的面吹牛崩泡,可吹牛的內(nèi)容都是我干的禁荒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼角撞,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼呛伴!你這毒婦竟也來了勃痴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤热康,失蹤者是張志新(化名)和其女友劉穎沛申,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姐军,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铁材,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奕锌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片著觉。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惊暴,靈堂內(nèi)的尸體忽然破棺而出饼丘,到底是詐尸還是另有隱情,我是刑警寧澤辽话,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布肄鸽,位于F島的核電站,受9級(jí)特大地震影響油啤,放射性物質(zhì)發(fā)生泄漏典徘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一益咬、第九天 我趴在偏房一處隱蔽的房頂上張望烂斋。 院中可真熱鬧,春花似錦础废、人聲如沸汛骂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帘瞭。三九已至,卻和暖如春蒿讥,著一層夾襖步出監(jiān)牢的瞬間蝶念,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工芋绸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留媒殉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓摔敛,卻偏偏與公主長得像廷蓉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子马昙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容