最開始看到“刪除列”和“刪除其他列”,覺得Microsoft多此一舉崇摄,這兩個(gè)命令其實(shí)差不多。但仔細(xì)用過之后慌烧,真心覺得這兩個(gè)命令用好了就是如虎添翼逐抑,用差了就是噩夢(mèng)。
“刪除列”類似于Windows的“選擇”屹蚊,只不過這個(gè)命令選擇了列并立即刪除厕氨;“刪除其他列”相當(dāng)于反選命令,只不過反選之后立即刪除汹粤。
這兩個(gè)命令可以理解為一個(gè)完整的集合命斧,只不過是互為補(bǔ)集。如果我只需要表格中很少的列嘱兼,要?jiǎng)h除其他所有列国葬,理所當(dāng)然要選擇“刪除其他列”;如果我只有個(gè)別列需要?jiǎng)h除遭京,那么選擇“刪除列”就好了胃惜。
如果深入PowerQuery代碼,可以更深理解兩個(gè)命令的差別:
刪除的列 = Table.RemoveColumns(替換的值6,{"單位"}),
刪除的其他列 = Table.SelectColumns(刪除的列,{"聯(lián)系方式"})
可以看到哪雕,“刪除列”的代碼是Table.RemoveColumns船殉,“刪除其他列”的命令是Table.SelectColumns,所以斯嚎,“刪除其他列”其實(shí)也就是選中并保留列(沒選中的列就刪除了)利虫。
有意思的是PowerQuery在查詢編輯器設(shè)置了一個(gè)專門的“選擇列”按鈕,點(diǎn)擊它之后堡僻,會(huì)彈出一個(gè)列選擇器糠惫,通過勾選來選擇要保留的列,那些未被勾選的列則被刪除钉疫。這個(gè)命令的效果其實(shí)和“刪除其他列”的效果是一模一樣的硼讽;如果查看代碼,也都是用的Table.SelectColumns這個(gè)函數(shù)牲阁。所以固阁,實(shí)現(xiàn)同一個(gè)操作可以有不同的路徑。
啰嗦了這么多城菊,現(xiàn)在該到具體應(yīng)用場(chǎng)景了:
假設(shè)我們憂一個(gè)搜集信息的表格备燃,分發(fā)給客戶去填寫;客戶很配合凌唬,不僅提供了我們給的表格中的信息并齐,還新增了其他信息(字段)到表格中;不同的客戶增加的信息(字段)不同。
當(dāng)我們搜集了這些表格况褪,并匯總成一個(gè)單一的表格的時(shí)候撕贞,我們有兩種辦法保留我們最開始需要的信息:選中那些不屬于原始表格的列,然后選擇“刪除列”窝剖;選擇我們?cè)急砀窭镞叺哪切┝新榈В缓筮x擇“刪除其他列”酥夭。這兩種方法都會(huì)形成一個(gè)PowerQuery模板赐纱。我們給這兩種模板分別取名為模板A和模板B。
我們剛剛做好模板熬北,又有客戶提交了表格來疙描;或者,業(yè)務(wù)部門把原始信息表格發(fā)給了新的客戶讶隐,要求他們填寫起胰。當(dāng)我們把新數(shù)據(jù)分別導(dǎo)入到兩個(gè)模板,會(huì)發(fā)生什么巫延?
當(dāng)把新數(shù)據(jù)導(dǎo)入模板A效五,刷新,系統(tǒng)很快提示炉峰,找不到xx列畏妖,找不到xxx列,找不到xxx列疼阔;于是戒劫,我們不得不重新編輯PowerQuery代碼,重新選擇那些要?jiǎng)h除的列婆廊。每當(dāng)有新數(shù)據(jù)進(jìn)來迅细,我們都要做一次這樣的操作。煩不煩淘邻?
當(dāng)把新數(shù)據(jù)導(dǎo)入模板B茵典,刷新,很快宾舅,結(jié)果就出來了统阿,沒有任何錯(cuò)誤提示,一切都非常非常完美贴浙。爽不爽砂吞?
當(dāng)我們需要把模板A和B提供給其他完全不懂PowerQuery代碼的其他小伙伴(假設(shè)我們已經(jīng)用Parameters Table簡化了小伙伴們的輸入),我們會(huì)選擇哪個(gè)模板崎溃?很明顯是模板B蜻直!
所以,小命令有大用途。