人數(shù)統(tǒng)計(jì)代碼(人數(shù)統(tǒng)計(jì)函數(shù))
PowerQuery很強(qiáng)大,但也非常容易出錯(cuò),尤其是初學(xué)者,經(jīng)常會(huì)碰到不知道做了什么突然就報(bào)錯(cuò)了,然后就不知道怎么辦,剛剛?cè)计鸬膶W(xué)習(xí)勁頭可能因此而退卻甚至放棄了,所以我將整理一些常見(jiàn)的錯(cuò)誤以及解決的辦法,幫你輕松應(yīng)對(duì)各種報(bào)錯(cuò)問(wèn)題。
今天介紹一個(gè)很多人經(jīng)常問(wèn)的問(wèn)題,源文件的列名修改以后,在PowerQuery中刷新很可能會(huì)報(bào)錯(cuò),來(lái)看看這種情況該如何處理。
假設(shè)數(shù)據(jù)源是下面這個(gè)Excel文件,一個(gè)簡(jiǎn)易的訂單表數(shù)據(jù):
導(dǎo)入到PQ以后是這樣的界面:
如果源數(shù)據(jù)格式不發(fā)生變動(dòng),刷新是正常的,不會(huì)出問(wèn)題。
但是假如源數(shù)據(jù)的列名被修改了,比如最后一列的"金額",修改成了"銷售額",PQ刷新后將報(bào)錯(cuò):找不到表的"金額"列。
展開(kāi)全文
你肯定見(jiàn)到過(guò)這種錯(cuò)誤,應(yīng)該怎么處理呢?
最直接的方法就是將數(shù)據(jù)源修改的列名再改回來(lái),如果無(wú)法修改源數(shù)據(jù),你可以重新導(dǎo)入處理一遍,但是假如整理的步驟非常多,那么因?yàn)檫@個(gè)小小的錯(cuò)誤而重新做一遍就太浪費(fèi)時(shí)間了,其實(shí)我們只需要找出報(bào)錯(cuò)的步驟,相應(yīng)的修改M公式就可以了。
下面來(lái)看看如何修改M。
從上到下用鼠標(biāo)依次點(diǎn)擊右側(cè)的步驟,檢查是從哪個(gè)步驟開(kāi)始出錯(cuò)的,這里例子中,點(diǎn)到第三個(gè)步驟“更改的類型”,發(fā)現(xiàn)是在這個(gè)步驟開(kāi)始報(bào)錯(cuò)的:
然后在公式編輯欄中,可以看到有個(gè)代碼是更改“金額”列的數(shù)據(jù)類型,
但是由于數(shù)據(jù)中不存在這一列,所以導(dǎo)致報(bào)錯(cuò)了。
如果你提前并不清楚數(shù)據(jù)源的列名被更改過(guò),那么也就不知道具體被更改成什么名字,這時(shí)可以去查看這個(gè)步驟的上一步,該列的列名到底是什么:
點(diǎn)擊上一步“提升的標(biāo)題”,在這個(gè)界面,可以看到最后一列的列名是“銷售額”,確實(shí)是不存在“金額”列,那么這個(gè)報(bào)錯(cuò)原因就很清楚了,只需要將“更改的類型”這個(gè)步驟公式中的“金額”,改成“銷售額”就行了,報(bào)錯(cuò)消失:
這樣就把錯(cuò)誤解決了,并不需要去修改源文件或者重新導(dǎo)入一遍。
其實(shí)熟練掌握以后,只需要根據(jù)這個(gè)報(bào)錯(cuò)信息,點(diǎn)幾次鼠標(biāo)就可以找到錯(cuò)誤原因,不需一分鐘就可以處理掉錯(cuò)誤。
以上方法不僅適用于修改列名引起的報(bào)錯(cuò),只要你看到PQ界面出現(xiàn)報(bào)錯(cuò),都可以按這種方式一個(gè)個(gè)步驟去排查,從出錯(cuò)步驟的編輯欄公式中找原因并相應(yīng)修改。
以上是直接將M中的原列名修改為新列名的方式,但是如果這個(gè)列名經(jīng)常被改動(dòng),比如明天又被人改成了"金額"、后天又改成了"銷售收入",那么每次刷新都會(huì)報(bào)錯(cuò),都要手動(dòng)去修改也挺麻煩。
還有一種做法是用M函數(shù)提取這一列的列名,比如這個(gè)示例中,最后一列的列名"銷售額",就是"提升的標(biāo)題"這個(gè)步驟表的第4列,
"提升的標(biāo)題"這個(gè)步驟表的第4列的列名可以用這個(gè)M公式替代:
Table.ColumnNames(提升的標(biāo)題){3}
Table.ColumnNames返回表中所有列名組成的一個(gè)列表,PQ中,表是從0行開(kāi)始的,第一行的行號(hào)是0,第4行的行號(hào)是3,所以上述公式中,提取列名表的第4行,用的是{3}。
然后將出錯(cuò)步驟的列名,也就是將之前錯(cuò)誤的“金額”替換成這個(gè)M公式:
這樣,無(wú)論源數(shù)據(jù)中第四列的列名被別人怎么改,都不會(huì)再報(bào)錯(cuò)了。
如果有其他列的列名同樣可能會(huì)被修改,你都可以相應(yīng)的將具體的列名替換為M公式,只要在每個(gè)步驟的M中不出現(xiàn)源數(shù)據(jù)中具體的列名,PQ報(bào)錯(cuò)的概率就會(huì)大大降低。
不過(guò)這種方法的前提是你清楚哪列的列名可能會(huì)被更改、列的前后順序位置是不變的,如果你的數(shù)據(jù)源每一列的列名都可能會(huì)被修改,甚至每一列的位置也會(huì)發(fā)生變動(dòng),那么這種方式就不適用了,可能還是需要你去檢查出錯(cuò)的步驟手動(dòng)修改。
對(duì)于最后這種情況,我想你該做的不是去找各種PQ技巧去應(yīng)對(duì)雜亂無(wú)規(guī)律的數(shù)據(jù),而是去規(guī)范你的數(shù)據(jù)源,不要讓別人隨意更改,將格式固定下來(lái)才是明智的做法。
更多精彩內(nèi)容
巧用微軟輸入法,輕松為Power BI可視化添加圖標(biāo)
Power BI父子函數(shù)怎么用?利用這個(gè)場(chǎng)景輕松學(xué)會(huì)
Power BI 如何連接OneDrive的數(shù)據(jù)?
采悟 | PowerBI星球
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。