日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

列运算_Power Query列运算的几种方法比较

發(fā)布時(shí)間:2024/1/23 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 列运算_Power Query列运算的几种方法比较 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有時(shí)候我們需要在報(bào)表中進(jìn)行列之間的運(yùn)算,例如下面這個(gè)例子:

在Excel中,這種計(jì)算很常見(jiàn)、很簡(jiǎn)單,只需要新增一列,把相關(guān)的兩列相加,然后替換掉原來(lái)的“總客戶數(shù)”列中的數(shù)據(jù)就可以了,那么在PQ中可以怎么做呢?

方法1:Table.AddColumn

最簡(jiǎn)單的方法是新增一列,把兩列相加,但本例要求計(jì)算結(jié)果要放在原來(lái)的位置,并保持相同的列名稱,而PQ中新增的列只能在原表的最右側(cè),這就需要調(diào)換列順序,而新增列的時(shí)候又不能和原列名稱重復(fù),這意味著新列必須新重名,比如說(shuō)把它重名為“總客戶數(shù)1”,然后刪除原來(lái)的“總客戶數(shù)”列,再把“總客戶數(shù)1”重命名為“總客戶數(shù)”,方法雖然簡(jiǎn)單,但很是繁瑣,以下是詳細(xì)步驟。

第1步:添加自定義列,把兩列數(shù)值相加,同時(shí)因?yàn)椴荒芘c原列重名,所以只好命名為“總客戶數(shù)1”;

第2步:原來(lái)的兩列計(jì)算之后已不再需要,把它們刪除;

第3步:新列順序要和原來(lái)保持一致,需要調(diào)整列順序,在列數(shù)不多的情況下還算容易,當(dāng)列數(shù)較多時(shí)這一步需要列出所有列名,很繁瑣,而且刷新的時(shí)候也容易出錯(cuò),所以需要優(yōu)化代碼,這在另一篇文章中會(huì)講到;

第4步:把“總客戶數(shù)1”改回為原來(lái)的名稱“總客戶數(shù)”,工作完成。

方法2:Table.TransformRows配合Record.TransformFields

PQ中無(wú)法把一列數(shù)據(jù)直接加到另一列上(excel中也不行,都需要另加一列進(jìn)行計(jì)算),但是通過(guò)代碼分解,分步運(yùn)算,在運(yùn)算的過(guò)程通過(guò)命名數(shù)據(jù)來(lái)達(dá)到目的,具體方法為:

第1步:用Table.TransformRows把表轉(zhuǎn)化為記錄,然后在記錄中修改字段值,來(lái)達(dá)到列間直接運(yùn)算的目的:

s1兩列相加 = Table.TransformRows(源, each let 總客戶數(shù) = [總客戶數(shù)], 新增客戶數(shù) = [新增客戶數(shù)],修改字段值 = Record.TransformFields(_, {"總客戶數(shù)", each 總客戶數(shù)+新增客戶數(shù)})in 修改字段值),

得到的結(jié)果是:

第2步:然后用Table.FromRecords把Records重新轉(zhuǎn)化為表,得到如下結(jié)果:

可以看出,新增客戶數(shù)已經(jīng)被直接加到總客戶數(shù)中,不需要再新加列且重命名了。

第3步:然后只需刪除已不需要的“新增客戶數(shù)”列就可以了。

方法3:用Table.CombineColumns直接得出結(jié)果

其實(shí)在PQ中Table.CombineColumns的用途很廣,不只是合并文字列這一點(diǎn)用處,它還可以進(jìn)行列之間的各種組合運(yùn)算,比如本例中就可以利用它來(lái)進(jìn)行兩列數(shù)字的加和運(yùn)算,并且是直接相加,不用新增不必要的列,只需要寫(xiě)一行簡(jiǎn)單的代碼就可以了;

s1合并的列 = Table.CombineColumns(源,{"新增客戶數(shù)", "總客戶數(shù)"},each List.Sum(_), "總客戶數(shù)")

處理結(jié)果如下:

可以看出,只需一步,只需一步,只需一步,就可得出和前面的方法1和方法2同樣的結(jié)果,新增客戶數(shù)被直接加到總客戶數(shù)上了,然后它就不再保留,直接刪掉了。

Table.CombineColumns(table as table, /* 參數(shù)1 */sourceColumns as list,/* 參數(shù)2 */ combiner as function, /* 參數(shù)3 */column as text /* 參數(shù)4 */) as table

分析Table.CombineColumns函數(shù)語(yǔ)法,可以看出關(guān)鍵在參數(shù)3,在這個(gè)例子中,處理的對(duì)象是{451, 58}, {372, 87}, {247, 126}這三個(gè)List,對(duì)于每個(gè)List我們都要把其中的兩個(gè)數(shù)字相加,這就是each List.Sum(_)所進(jìn)行的操作,每一個(gè)List都求和,就這么簡(jiǎn)單。

對(duì)比三種方法,可以說(shuō)各有優(yōu)勢(shì):

  • 方法1最好理解,但略顯繁瑣,在剛開(kāi)始玩PQ的時(shí)候可以用這種方法,但玩了一段時(shí)間之后會(huì)發(fā)現(xiàn)有時(shí)候它相當(dāng)繁瑣,效果也不高,這時(shí)候可以玩一下方法2:
  • 方法2的原理就是先把表轉(zhuǎn)化為記錄,在記錄里處理好了之后再轉(zhuǎn)化為表,它可以進(jìn)行表格列之間的各種復(fù)雜運(yùn)算:
  • 而方法3的效率是最高的,它一步到位,充分利用了合并列公式的功能,其實(shí)它本來(lái)的目的就是列間運(yùn)算,而不僅是合并這么簡(jiǎn)單,但是它會(huì)把多列合并為一列,在需要保留原有各列的情況下還需要對(duì)合并之后的列進(jìn)行展開(kāi),在這種情況下可以先增加一列輔助列,復(fù)制需要保留的那一列數(shù)據(jù),然后把這加在需要合并的那一列上就行了。

好了,PQ中的列間運(yùn)算就是這樣玩的,這是我總結(jié)出來(lái)的幾種玩法,親愛(ài)的讀者朋友們學(xué)會(huì)了嗎,當(dāng)然可用的方法可能不止這三種,如果你有更聰明的玩法,一定要記得告訴我喲,寓教于樂(lè),是最高效的學(xué)習(xí)方法,樂(lè)在其中,使我們能夠更充分地享受工作,享受生活。

實(shí)例下載:

https://pan.baidu.com/s/1DfzsiXEMzKCcN5Bh48FWxw?pan.baidu.com

提取碼:rndy

總結(jié)

以上是生活随笔為你收集整理的列运算_Power Query列运算的几种方法比较的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。