Power Query中避免刷新出錯(cuò)的注意事項(xiàng)

(一) 仔細(xì)檢查公式欄

不同的公式空運(yùn)達(dá)到同樣的效果,所以觀察產(chǎn)生結(jié)果的公式就很重要,別把公式欄給隱藏了,需要打開(kāi)它,如圖1所示。
例如:
刪除列和刪除其他列可能得到的效果是一樣的,但是如果數(shù)據(jù)有變動(dòng)刷新后得到的結(jié)果卻有可能不同。

Table.RemoveColumns(源,{"成績(jī)", "學(xué)科"})
Table.SelectColumns(刪除的列,{"姓名"})
圖1  打開(kāi)公式編輯欄
圖1 打開(kāi)公式編輯欄

(二) 刪除不必要更改的類型

很多時(shí)候錯(cuò)誤的原因在于改變數(shù)據(jù)類型的時(shí)候出錯(cuò),尤其是在提升標(biāo)題等動(dòng)作后會(huì)自動(dòng)生成,如圖2所示。在Power Query中對(duì)于數(shù)據(jù)的類型要求比較嚴(yán)格,如果在中間步驟不是計(jì)算必要的數(shù)據(jù)類型,可以暫時(shí)不更改,而等到最后的時(shí)候在進(jìn)行數(shù)據(jù)類型的更改,這樣也能夠更方便的發(fā)現(xiàn)問(wèn)題的所在。

圖2  自動(dòng)更改數(shù)據(jù)類型
圖2 自動(dòng)更改數(shù)據(jù)類型

(三) 使用動(dòng)態(tài)參數(shù)而不是固定參數(shù)

如果數(shù)據(jù)不是固定格式,會(huì)有變動(dòng),那使用固定參數(shù)就非常有可能會(huì)在刷新數(shù)據(jù)的時(shí)候進(jìn)行報(bào)錯(cuò),這時(shí)就可以使用動(dòng)態(tài)參數(shù)來(lái)進(jìn)行。
例如:
表格中的標(biāo)題列名稱可能會(huì)進(jìn)行變化,但是位置不會(huì)變,那此時(shí)就可以使用變量參數(shù)來(lái)進(jìn)行,而不是直接使用列名稱來(lái)進(jìn)行操作,如圖3所示,此時(shí)不管第2列的標(biāo)題改為什么,只要第2列是代表數(shù)字的,這樣使用動(dòng)態(tài)參數(shù)都不會(huì)產(chǎn)生錯(cuò)誤。

圖3  使用動(dòng)態(tài)參數(shù)列名
圖3 使用動(dòng)態(tài)參數(shù)列名

(四) 篩選的技巧

一般來(lái)說(shuō)篩選很簡(jiǎn)單,只需要在界面進(jìn)行操作即可,但是有時(shí)候需要注意的是,計(jì)算機(jī)識(shí)別出的操作和人的操作思想不一樣,

1. 邏輯不一樣

同樣的篩選結(jié)果,如果只希望選擇大于90份的結(jié)果,直接選擇和邏輯選擇會(huì)不同。

圖4  直接選擇所需要的邏輯數(shù)據(jù)
圖4 直接選擇所需要的邏輯數(shù)據(jù)
圖5  根據(jù)邏輯來(lái)進(jìn)行篩選
圖5 根據(jù)邏輯來(lái)進(jìn)行篩選

2. 不完整的數(shù)據(jù)中篩選

如果數(shù)據(jù)量很大,就會(huì)有可能產(chǎn)生未全部加載完成的數(shù)據(jù),因?yàn)檫@里直接篩選的數(shù)據(jù)依據(jù)的只是前1000行,有可能展現(xiàn)出來(lái)的篩選數(shù)據(jù)并不完整。

圖6  不完整數(shù)據(jù)的篩選
圖6 不完整數(shù)據(jù)的篩選

(五) 移動(dòng)列的差異

一般情況下,移動(dòng)列的順序使用的是Table.ReorderColumns函數(shù),也就是重新把列名給排下序,如圖7所示。

圖7  排序標(biāo)題列
圖7 排序標(biāo)題列

在此函數(shù)中,使用的列排序都是常量,而不是變量,如果只想讓成績(jī)這個(gè)字段根據(jù)所需要的位置進(jìn)行插入,用變量的方式最好,只需要在列的名稱上進(jìn)行改變。
例如:
要把成績(jī)放到最后一列,甚至都不清楚列的數(shù)量及列的名稱的情況下來(lái)實(shí)現(xiàn)操作。

圖8  動(dòng)態(tài)的標(biāo)題排序
圖8 動(dòng)態(tài)的標(biāo)題排序

(六) 刪除數(shù)據(jù)列

刪除列以及選擇列都是屬于刪除數(shù)據(jù)的一種操作。這個(gè)時(shí)候可以利用此類操作函數(shù)的第3個(gè)參數(shù)來(lái)避免產(chǎn)生錯(cuò)誤。
正常的刪除是沒(méi)有問(wèn)題的,如圖9所示。

圖9  刪除學(xué)科列
圖9 刪除學(xué)科列

如果常量參數(shù)填寫(xiě)錯(cuò)誤,則就會(huì)出錯(cuò),如圖10所示。

圖10  刪除不存在的列的出錯(cuò)狀態(tài)
圖10 刪除不存在的列的出錯(cuò)狀態(tài)

此時(shí)可以使用此函數(shù)的第3參數(shù)來(lái)規(guī)避錯(cuò)誤,3個(gè)參數(shù)分別可以用0,1,2代表,如圖11所示。

圖11  Table.RemoveColumns第3參數(shù)的介紹
圖11 Table.RemoveColumns第3參數(shù)的介紹

這樣就能避免產(chǎn)生錯(cuò)誤,可以使得操作繼續(xù)進(jìn)行,如圖12所示。

圖12  刪除不存在的列并忽略錯(cuò)誤
圖12 刪除不存在的列并忽略錯(cuò)誤

(七) 拆分?jǐn)?shù)據(jù)列

在進(jìn)行列的拆分時(shí),大部分會(huì)使用類似Excel中的分割功能,把數(shù)據(jù)分割成多個(gè)列,但是其中會(huì)有一個(gè)問(wèn)題就是如果后續(xù)更新的數(shù)據(jù)需要拆分的列數(shù)量不一致就有可能會(huì)漏拆分,如圖13所示拆分成如圖14所示。

圖13  需拆分列的原始數(shù)據(jù)
圖13 需拆分列的原始數(shù)據(jù)
圖14  拆分列后的數(shù)據(jù)
圖14 拆分列后的數(shù)據(jù)

你當(dāng)然可以這樣拆分,但是有一個(gè)問(wèn)題,仔細(xì)查看公式(避免錯(cuò)誤的第一個(gè)方法),其中的列名都是自動(dòng)生成的,是根據(jù)現(xiàn)有數(shù)據(jù)能拆分成幾行就寫(xiě)了幾個(gè)對(duì)應(yīng)的字段名和格式。但是如果下次的數(shù)據(jù)比本次所拆分的更多,那在刷新時(shí)就無(wú)法進(jìn)行同步更新,就會(huì)出錯(cuò)。
此時(shí)最好的做法就是把數(shù)據(jù)拆分成行,這樣就能避免固定的列的限制,如圖15這樣的操作。

圖15  拆分列的數(shù)據(jù)到行
圖15 拆分列的數(shù)據(jù)到行

(八) 合并數(shù)據(jù)列

在合并數(shù)據(jù)列的時(shí)候也需要注意一點(diǎn),組合的列必須是文本列,如果是其他格式會(huì)自動(dòng)轉(zhuǎn)換成文本格式,如圖16所示,如果合并的只是文本,會(huì)直接合并。如果是其他格式的話,則會(huì)自動(dòng)進(jìn)行格式的轉(zhuǎn)換,先轉(zhuǎn)換成文本格式在進(jìn)行合并,如圖17所示。

圖16  合并文本列
圖16 合并文本列
圖17  合并非文本列
圖17 合并非文本列

如果仔細(xì)觀察,在合并非文本列的時(shí)候,操作都是一樣的,但是在公式中會(huì)對(duì)原有的表格中需要合并的列進(jìn)行格式轉(zhuǎn)換,所以要合并的列不管是不是文本格式,都可以預(yù)先給轉(zhuǎn)換成文本格式,這樣在后續(xù)的合并中就不會(huì)出錯(cuò)。

(九) 合并查詢中的展開(kāi)表

合并查詢?cè)赑ower Query中使用的比例還是相對(duì)挺高的,在使用后都會(huì)把匹配的數(shù)據(jù)給展開(kāi),這里就會(huì)涉及到一個(gè)注意事項(xiàng),如圖18所示,合并查詢展開(kāi)時(shí)的公式,

圖18  合并查詢并展開(kāi)
圖18 合并查詢并展開(kāi)

這里同樣有一個(gè)問(wèn)題,就是所有的參數(shù)都使用了常量參數(shù),這樣就會(huì)導(dǎo)致之后如果數(shù)據(jù)有變動(dòng)則會(huì)產(chǎn)生錯(cuò)誤,盡量的使用可替代的來(lái)實(shí)現(xiàn)其相同的邏輯。
主要是第3參數(shù),同樣可以使用List.RemoveItems或者List.Difference來(lái)實(shí)現(xiàn)去掉匹配列來(lái)展開(kāi)所有的其他列。

(十) 刪除重復(fù)項(xiàng)

在創(chuàng)建維度表的時(shí)候,會(huì)常用的操作就是去除重復(fù)項(xiàng),要不然在Power BI中會(huì)產(chǎn)生多對(duì)多的關(guān)系,就會(huì)引起錯(cuò)誤,不過(guò)在去除重復(fù)項(xiàng)的時(shí)候也需要進(jìn)行仔細(xì)辨別。

1. 字母的大小寫(xiě)

在Power BI的模型關(guān)系中,不會(huì)區(qū)分大小寫(xiě),如果只是大小寫(xiě)的區(qū)分,則會(huì)直接判斷為多個(gè)關(guān)系,所以在Power Query中進(jìn)行清洗的時(shí)候就要特別留意,以避免因?yàn)榇笮?xiě)產(chǎn)生的錯(cuò)誤導(dǎo)致數(shù)據(jù)表之間的關(guān)系錯(cuò)誤。

2. 不可見(jiàn)的符號(hào)

此外就是不可見(jiàn)的符號(hào)了,這種也會(huì)經(jīng)常導(dǎo)致匹配錯(cuò)誤或者刪除重復(fù)項(xiàng)時(shí)未完全成功,所以在執(zhí)行刪除重復(fù)項(xiàng)之前使用修整和清除來(lái)把數(shù)據(jù)給清洗下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容