據(jù)清洗實(shí)戰(zhàn)指南)
做數(shù)據(jù)分析的人應(yīng)該都有過這種經(jīng)歷從業(yè)務(wù)系統(tǒng)導(dǎo)出來的表看著整整齊齊一用就發(fā)現(xiàn)根本不是那么回事。尤其是那種一個(gè)單元格里塞了五六個(gè)值的數(shù)據(jù)比如訂單表里一個(gè)訂單對(duì)應(yīng)多個(gè)商品所有商品ID擠在一個(gè)格子里用逗號(hào)隔開又或者一張寬表日期、區(qū)域、品類全鋪在列上想分析的時(shí)候卻需要讓它們站成一排。這類問題在PowerBI里其實(shí)有非常成熟的解法核心就是PowerQuery里的兩個(gè)動(dòng)作按列分行和按列分列。也就是說一個(gè)是把一列里的多個(gè)值拆到多行一個(gè)是把一列里的多個(gè)值拆到多列。再加上一個(gè)經(jīng)常被混在一起說的逆透視列基本能覆蓋日常90%以上的表格重排需求。這篇文章我會(huì)把這兩個(gè)操作從原理到實(shí)操完整拆一遍用一個(gè)貫穿始終的訂單數(shù)據(jù)案例演示每一步怎么做還會(huì)把我在實(shí)際項(xiàng)目中踩過的坑和排查思路整理出來。適合剛接觸PowerQuery的初學(xué)者照著抄也適合已經(jīng)會(huì)用一些功能但老是弄混拆分邏輯的進(jìn)階用戶系統(tǒng)梳理一遍。1. 先搞清楚要分的是行還是列兩種場(chǎng)景的本質(zhì)區(qū)別1.1 按列分列到底解的是什么問題按列分列在PowerQuery的菜單里其實(shí)叫拆分列。我習(xí)慣把按列分列理解為選中的這一列里每一個(gè)單元格都含有多個(gè)被分隔符隔開的信息片段我們要把這些片段重新排列到同一行的不同列中。舉個(gè)例子。你的CRM系統(tǒng)導(dǎo)出過這樣的數(shù)據(jù)客戶ID聯(lián)系方式C00113800000001;zhangsanemail.comC00213900000002;lisiemail.com這里的聯(lián)系方式里存了手機(jī)號(hào)和郵箱兩個(gè)片段用分號(hào)隔開。如果不上PowerQuery直接在Excel里用分列也能做但問題在于一旦數(shù)據(jù)源更新你每次都要重新操作一遍。而在PowerQuery里做拆分列相當(dāng)于把按照分號(hào)拆成兩列這個(gè)邏輯固化進(jìn)了查詢里刷新數(shù)據(jù)的時(shí)候自動(dòng)執(zhí)行。這才是它作為PowerBI清洗數(shù)據(jù)環(huán)節(jié)的真正價(jià)值。還有一種是智能拆分的場(chǎng)景。比如地址字段是廣東省深圳市南山區(qū)xx路xx號(hào)你要拆出省、市、區(qū)用固定分隔符不好使因?yàn)槟銢]法確定分隔符在哪個(gè)位置。這時(shí)候可以用按字符數(shù)拆分或從非數(shù)字到數(shù)字的轉(zhuǎn)換等高級(jí)選項(xiàng)。這些都屬于按列分列的范疇只是拆分依據(jù)從固定的逗號(hào)分號(hào)變成了位置特征或內(nèi)容特征。1.2 按列分行和逆透視長表 vs 寬表按列分行和按列分列對(duì)應(yīng)的是同一個(gè)功能入口的不同選項(xiàng)。還是拿剛才那個(gè)聯(lián)系方式字段舉例如果我們的分析目標(biāo)是每個(gè)客戶和號(hào)碼、郵箱分別建立一行關(guān)聯(lián)記錄那就需要把一列拆分成多行而不是多列??蛻鬒D聯(lián)系方式C00113800000001;zhangsanemail.com分列之后變成客戶ID拆分后的值C00113800000001C001zhangsanemail.com這個(gè)才是真正的按列分行。但這里必須多說一句在實(shí)際項(xiàng)目里還有一個(gè)經(jīng)常被叫作按列分行的操作——逆透視列。兩者的區(qū)別在于拆分列處理的是一個(gè)單元格里有多個(gè)值逆透視處理的是多個(gè)列名其實(shí)是一個(gè)字段的不同取值。比如業(yè)務(wù)給你一張這樣的表門店一季度二季度三季度上海店10012090這里的一季度、二季度、三季度其實(shí)是季度這個(gè)字段的取值你要做趨勢(shì)分析就必須把這三列變成三行。這個(gè)動(dòng)作在PowerQuery里叫逆透視列本質(zhì)上是把列變成行。很多人習(xí)慣把這個(gè)也叫按列分行因?yàn)樗_實(shí)讓數(shù)據(jù)從寬變長了。從功能目標(biāo)上說拆分行和逆透視列都是把橫向鋪開的數(shù)據(jù)變縱向堆疊的數(shù)據(jù)但底層邏輯完全不同實(shí)操時(shí)選錯(cuò)入口是新手最常見的錯(cuò)誤。2. 實(shí)操前先把底子打好數(shù)據(jù)源與工具入口2.1 進(jìn)入PowerQuery的三種方式PowerBI里的PowerQuery編輯器入口其實(shí)不止一個(gè)。我在項(xiàng)目里最常用的是主頁 - 轉(zhuǎn)換數(shù)據(jù)這樣會(huì)直接進(jìn)入編輯器的獨(dú)立窗口。如果你是從Excel里拿數(shù)據(jù)Excel 2016以上版本也有數(shù)據(jù) - 從表格/區(qū)域進(jìn)入PowerQuery和PowerBI里的編輯界面幾乎一模一樣所以這篇文章講的操作你在兩邊都能用。還有一個(gè)很多人不知道的入口在PowerBI里選中某個(gè)表右鍵選擇編輯查詢也能進(jìn)入PowerQuery。區(qū)別不大只是入口路徑不同。但有個(gè)使用習(xí)慣我強(qiáng)烈建議你養(yǎng)成進(jìn)入PowerQuery編輯器之后先看一眼右側(cè)的查詢?cè)O(shè)置面板里面記錄了每一步操作歷史。PowerQuery最重要的特性之一就是每一步操作都會(huì)生成一個(gè)步驟記錄你可以在后續(xù)隨時(shí)修改中間的某個(gè)步驟而不是像Excel操作那樣做一步忘一步。這個(gè)特性意味著一次數(shù)據(jù)整理流程可以反復(fù)調(diào)整不必從頭再來。2.2 判斷該用拆分列還是逆透視的四步自查法工具入口清楚了之后下一步是判斷數(shù)據(jù)該用哪種處理邏輯。我在帶新人的時(shí)候總結(jié)過一個(gè)四步自查法你可以直接拿去用第一步看目標(biāo)結(jié)構(gòu)。目標(biāo)是列數(shù)變多行數(shù)不變還是行數(shù)變多列數(shù)變少前者是分列后者大概率是分行或逆透視。第二步看多個(gè)值藏在哪。值都縮在同一個(gè)單元格里用分隔符隔著——這是拆分列或拆分行。值分散在多個(gè)列名里列名本身是數(shù)據(jù)的一部分——這是逆透視。第三步看分隔符是否統(tǒng)一。同一個(gè)字段里如果既有中文逗號(hào)又有英文逗號(hào)還混著分號(hào)拆分之前必須先清洗分隔符否則拆出來的結(jié)果會(huì)有大量空行和殘缺值。第四步看是否要保留原列。拆分的時(shí)候PowerQuery默認(rèn)保留原列你也可以選擇不保留。逆透視的時(shí)候則要考慮哪些列要作為屬性、哪些列要作為值還有沒有需要保持原樣的上下文列。這個(gè)自查過程看起來簡(jiǎn)單但能幫你省下大量反工時(shí)間。我見過太多人上來就點(diǎn)逆透視列結(jié)果發(fā)現(xiàn)數(shù)據(jù)里根本不存在需要逆透視的結(jié)構(gòu)純粹是因?yàn)槁犝f這個(gè)功能很常用也見過有人對(duì)一個(gè)包含多個(gè)值的單元格反復(fù)用替換值手工清理卻不知道直接拆分行就能解決。3. 核心實(shí)操按分隔符分列與分行的完整步驟3.1 打開拆分對(duì)話框看懂三個(gè)關(guān)鍵選項(xiàng)當(dāng)你選中目標(biāo)列后點(diǎn)擊拆分列下拉菜單里會(huì)有按分隔符按字符數(shù)按大寫和小寫字符之間的轉(zhuǎn)換按非數(shù)字到數(shù)字的轉(zhuǎn)換等選項(xiàng)。日常用得最多的是按分隔符。點(diǎn)擊后彈出對(duì)話框你有三個(gè)關(guān)鍵選項(xiàng)需要理解第一個(gè)是選擇或輸入分隔符。下拉框里預(yù)置了逗號(hào)、分號(hào)、制表符、空格、自定義等。這里有個(gè)細(xì)節(jié)PowerQuery里的逗號(hào)默認(rèn)匹配的是英文逗號(hào)如果你數(shù)據(jù)里用的是中文全角逗號(hào)拉到底部選自定義然后手動(dòng)輸入中文逗號(hào)又或者直接用插入特殊字符來指定。第二個(gè)是拆分為——這是分列和分行的分水嶺。選擇列就是按列分列選擇行就是按列分行。這個(gè)位置藏得很深很多新手在這里點(diǎn)錯(cuò)導(dǎo)致后續(xù)整個(gè)數(shù)據(jù)形態(tài)完全不對(duì)。第三個(gè)是高級(jí)選項(xiàng)里的拆分為多個(gè)列。比如一列地址拆分成省市區(qū)縣分隔符相同如果每個(gè)單元格里的省市區(qū)段數(shù)一致可以用按最多列數(shù)拆分來保證統(tǒng)一結(jié)構(gòu)。如果各單元格的段數(shù)不一致建議用按分隔符拆分到盡可能多的列讓系統(tǒng)自動(dòng)按最多段數(shù)的行決定列數(shù)。3.2 按列分列實(shí)操訂單渠道拆列場(chǎng)景演示現(xiàn)在用一個(gè)實(shí)際案例走一遍完整流程。假設(shè)你拿到一張訂單表里面有一列渠道訂單ID渠道金額A001線上-自營199A002線下-分銷350任務(wù)要求把渠道列拆成兩列一列是銷售場(chǎng)景一列是銷售方式。操作步驟選中渠道列點(diǎn)擊拆分列 - 按分隔符分隔符選擇自定義輸入-拆分為選擇列高級(jí)選項(xiàng)里按盡可能多的列拆分點(diǎn)擊確定。PowerQuery會(huì)生成兩個(gè)新列默認(rèn)命名是渠道.1和渠道.2系統(tǒng)還自動(dòng)執(zhí)行了一個(gè)更改的類型步驟。我一般會(huì)馬上把新列重命名成銷售場(chǎng)景和銷售方式然后刪掉原始渠道列。最后點(diǎn)擊關(guān)閉并應(yīng)用回到PowerBI報(bào)表界面。這里要注意PowerQuery默認(rèn)使用-做分隔符時(shí)如果有單元格里出現(xiàn)了多個(gè)-比如線上-自營-會(huì)員日拆出來的列會(huì)超過兩列。所以如果你的業(yè)務(wù)里分隔符本身也可能出現(xiàn)在數(shù)據(jù)內(nèi)容里拆分前最好先確認(rèn)數(shù)據(jù)里分隔符出現(xiàn)的次數(shù)規(guī)律。這一步可以用分組依據(jù)做一次統(tǒng)計(jì)看看分隔符數(shù)量分布再?zèng)Q定用固定列數(shù)還是盡可能多的列。3.3 按列分行實(shí)操商品明細(xì)拆行場(chǎng)景演示繼續(xù)用同一張訂單表把場(chǎng)景改一下?,F(xiàn)在表里有商品清單列一個(gè)訂單里包含了多個(gè)商品ID和商品數(shù)量。訂單ID商品清單金額A001P001 x1, P002 x2299A002P003 x1150這個(gè)數(shù)據(jù)里商品清單是由逗號(hào)連接的多個(gè)商品片段每個(gè)片段里又有商品ID和數(shù)量兩層信息。如果我們要做每個(gè)訂單對(duì)應(yīng)每個(gè)商品的明細(xì)分析就需要先按逗號(hào)拆分成行得到每個(gè)商品的獨(dú)立一行然后再繼續(xù)處理。操作步驟選中商品清單列點(diǎn)擊拆分列 - 按分隔符分隔符選擇逗號(hào)拆分為選擇行點(diǎn)擊確定。此時(shí)系統(tǒng)會(huì)變成這樣訂單ID商品清單金額A001P001 x1299A001P002 x2299A002P003 x1150原始訂單的金額被自動(dòng)復(fù)制到了每一行這就是拆分行和分列最大的行為差異分列不增加行數(shù)分行會(huì)讓一行變成多行其他列的值自動(dòng)重復(fù)填充。到這一步還沒結(jié)束。因?yàn)镻001 x1這個(gè)片段里還包含著商品ID和數(shù)量兩層信息需要再做一次拆分列用空格作為分隔符再拆成兩列。整個(gè)過程就是分列和分行交替使用非常典型的處理鏈路。3.4 逆透視列實(shí)操季度匯總寬表轉(zhuǎn)長表再看寬表轉(zhuǎn)長表的場(chǎng)景。門店一季度二季度三季度四季度上海店10012090110北京店13095105120要在PowerBI里畫一條按季度的趨勢(shì)折線圖這個(gè)表是不行的。季度應(yīng)該在橫軸上所以必須把四個(gè)季度的列變成一行一行的數(shù)據(jù)。操作步驟在PowerQuery里選中門店列點(diǎn)擊轉(zhuǎn)換 - 逆透視其他列。這里我建議你用逆透視其他列而不是逆透視列因?yàn)榍罢卟恍枰謩?dòng)勾選所有季度列你只需要選中那些需要保留原樣的上下文列這里就是門店其他列自動(dòng)變成屬性值對(duì)。點(diǎn)擊之后PowerQuery會(huì)生成兩列默認(rèn)叫屬性和值。屬性列里存的是原來那些列名一季度、二季度等值列里存的是數(shù)值。然后還有一些細(xì)節(jié)要處理。把屬性列里的季度兩個(gè)字去掉讓它變成純數(shù)字方便后續(xù)按季度排序。方法是用替換值把季度替換成空。再把值列的數(shù)據(jù)類型改成整數(shù)。改完之后這張表就可以直接用來生成趨勢(shì)折線圖或者拖進(jìn)矩陣可視化做交叉分析。逆透視列為什么會(huì)這么重要因?yàn)镻owerBI的很多可視化控件要求數(shù)據(jù)是長表結(jié)構(gòu)——一個(gè)維度列用來做軸一個(gè)度量列用來做值。業(yè)務(wù)系統(tǒng)導(dǎo)出的數(shù)據(jù)卻常常是寬表列名就是維度值。逆透視就是打通這兩者之間的橋。4. 進(jìn)階場(chǎng)景多級(jí)拆分、智能拆分與自定義列4.1 一次拆分不干凈時(shí)的多級(jí)處理鏈路實(shí)際業(yè)務(wù)中遇到的數(shù)據(jù)往往比剛才演示的例子復(fù)雜得多。常見的一種情況是一個(gè)單元格里既有多個(gè)字段又有多個(gè)記錄。比如員工ID名下項(xiàng)目E001項(xiàng)目A/開發(fā);項(xiàng)目B/測(cè)試;項(xiàng)目C/運(yùn)維這里項(xiàng)目A/開發(fā)是一個(gè)項(xiàng)目記錄里面包含項(xiàng)目名和擔(dān)任角色兩個(gè)字段記錄之間用分號(hào)隔開。處理鏈路是先用分號(hào)按拆分行把三個(gè)項(xiàng)目變成三行再用/按拆分列把項(xiàng)目名和角色拆開。這樣的多級(jí)處理在PowerQuery里沒有任何問題因?yàn)槊恳徊讲僮鞫紩?huì)被記錄下來你隨時(shí)可以插入中間步驟。但這里有一個(gè)必須留意的點(diǎn)多級(jí)拆分后一定要重新審查每一列的數(shù)據(jù)類型。尤其當(dāng)你拆出來的片段里包含數(shù)字編號(hào)比如P001, PowerQuery有時(shí)會(huì)自作主張轉(zhuǎn)換成數(shù)字1導(dǎo)致原始編號(hào)丟失。預(yù)防方式是在拆分之后馬上檢查更改的類型步驟或者干脆在拆分之前就把整列的數(shù)據(jù)類型設(shè)為文本避免自動(dòng)類型轉(zhuǎn)換。4.2 中文數(shù)字混合內(nèi)容的按字符數(shù)拆分還有一種不依賴分隔符的場(chǎng)景。信息片段之間沒有逗號(hào)但有固定長度。比如月報(bào)表202401銷售數(shù)據(jù)你要把中間的202401年份月份字段單獨(dú)取出來。這種時(shí)候按字符數(shù)拆分就有用了。選中列后拆分列 - 按字符數(shù)輸入起始位置和長度就能把固定位置的值切出來。實(shí)際項(xiàng)目里另一種常見場(chǎng)景是身份證號(hào)、銀行卡號(hào)等固定長度編碼的拆分。但我不建議用固定字符數(shù)去拆這種字段因?yàn)橐坏?shù)據(jù)源格式有微調(diào)整個(gè)拆分就廢了。更穩(wěn)妥的辦法是用從示例中添加列或者寫M公式提取指定模式。PowerQuery里有個(gè)功能叫從示例中添加列你只需要給一兩個(gè)例子告訴它我要取第7到14位或者我要取前6位它會(huì)自動(dòng)幫你推斷規(guī)則。這個(gè)功能在添加列選項(xiàng)卡下用起來非常順手尤其適合處理不規(guī)則文本。4.3 自定義分隔符陷阱多個(gè)分隔符并存講一個(gè)真實(shí)踩坑案例。有次我處理一個(gè)渠道平臺(tái)的導(dǎo)出數(shù)據(jù)里面的用戶標(biāo)簽字段是這么存的用戶ID用戶標(biāo)簽U001高價(jià)值新品偏好, 活躍用戶U002低價(jià)值沉默用戶同一個(gè)字段里既有中文逗號(hào)又有英文逗號(hào)還有分號(hào)。我直接選擇分號(hào)做分隔符結(jié)果那些用中文逗號(hào)連接的值根本沒被拆分?jǐn)?shù)據(jù)行數(shù)少了一半。解決方案是在拆分前做一步清洗分隔符。用替換值功能先把所有中文逗號(hào)替換成英文逗號(hào)再把所有分號(hào)也替換成英文逗號(hào)。這樣整個(gè)字段的分隔符就統(tǒng)一了之后無論拆行還是拆列一步到位。這個(gè)坑非常典型幾乎隔一段時(shí)間就會(huì)遇到一次。所以我的建議是凡是遇到手動(dòng)錄入的數(shù)據(jù)Excel表格、CRM系統(tǒng)、后臺(tái)管理系統(tǒng)導(dǎo)出的數(shù)據(jù)第一步不是急著拆分而是先檢查這個(gè)字段里到底存在多少種不同的分隔符。可以用篩選器查看這個(gè)列里唯一值的分布也可以用分組依據(jù)統(tǒng)計(jì)包含特定字符的行數(shù)幾分鐘就能摸清規(guī)律。5. 常見問題與排查技巧實(shí)錄5.1 分列后列數(shù)不一致、錯(cuò)位怎么辦這是按列分列最常遇到的問題。同一個(gè)字段A行有3個(gè)片段B行有5個(gè)片段用盡可能多的列拆分后B行多出來的列有值A(chǔ)行對(duì)應(yīng)的列就是null。如果后續(xù)用這些列做計(jì)算null會(huì)造成數(shù)據(jù)缺失視覺上報(bào)表里也會(huì)出現(xiàn)大片空白。我的處理經(jīng)驗(yàn)是拆分之前先用分隔符計(jì)數(shù)。假設(shè)分隔符是逗號(hào)你可以添加一個(gè)自定義列用Text.Length函數(shù)計(jì)算每行逗號(hào)的數(shù)量再按分組依據(jù)看最大值和分布。如果發(fā)現(xiàn)數(shù)量差異很大就要考慮是不是數(shù)據(jù)錄入不規(guī)范或者分隔符本身在內(nèi)容里出現(xiàn)過。如果確認(rèn)數(shù)據(jù)本身沒問題只是列數(shù)不一致可以在拆分后用填充功能或者用合并列重新組合某些字段保證結(jié)構(gòu)統(tǒng)一。5.2 空值和空格帶來的坑按列分列時(shí)PowerQuery遇到連續(xù)兩個(gè)分隔符比如項(xiàng)目A,,項(xiàng)目B默認(rèn)會(huì)產(chǎn)出一個(gè)空值行。在拆分行的時(shí)候這會(huì)直接產(chǎn)生一行全部為空的數(shù)據(jù)污染后續(xù)計(jì)算。最穩(wěn)妥的清理辦法是拆分之后立即加一步篩選行篩選條件設(shè)為拆出的列不等于null且不等于空字符串。如果你不需要保留空記錄這一步不要省略。還有一個(gè)小細(xì)節(jié)從Excel導(dǎo)入的空白單元格在PowerQuery里會(huì)顯示為null而從CSV導(dǎo)入的可能顯示為空字符串這兩種都要清理方法不同。null可以用替換值替換成統(tǒng)一標(biāo)記空字符串則要替換值把替換掉。實(shí)戰(zhàn)中建議把這兩步合并處理防止后面做數(shù)據(jù)建模時(shí)因?yàn)閚ull報(bào)錯(cuò)。5.3 數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換導(dǎo)致的編號(hào)丟失PowerQuery默認(rèn)會(huì)在很多操作之后自動(dòng)執(zhí)行一次更改的類型。比如你把P001,P002拆成行后系統(tǒng)默認(rèn)把結(jié)果列設(shè)為文本但如果拆出來的純粹是數(shù)字可能會(huì)被轉(zhuǎn)成整數(shù)類型。這看起來人畜無害其實(shí)坑在后續(xù)。舉個(gè)例子你把001拆出來了類型被改成整數(shù)變成102變成2。等你回頭發(fā)現(xiàn)再想改回文本已經(jīng)丟了前導(dǎo)零原始編號(hào)徹底找不回來了。所以處理編碼型數(shù)據(jù)我建議你在拆分操作后馬上檢查查詢?cè)O(shè)置里的步驟看到更改的類型這個(gè)步驟如果里面出現(xiàn)了可疑的整數(shù)轉(zhuǎn)換直接刪掉這個(gè)步驟或者手動(dòng)把列類型改回文本。當(dāng)然更治本的方法是在數(shù)據(jù)源導(dǎo)入階段就聲明好哪些列是文本列用選擇列或更改類型把整列設(shè)為文本這樣后續(xù)所有操作都會(huì)保留前導(dǎo)零。5.4 大數(shù)據(jù)量拆分性能變慢怎么辦PowerQuery處理幾千行數(shù)據(jù)通常很快但當(dāng)你處理幾十萬行、且每行都要拆分成幾十行時(shí)查詢會(huì)明顯變慢。很多人以為是電腦配置不行其實(shí)很多時(shí)候是操作步驟順序的問題。我見過一個(gè)典型案例一張20萬行的訂單表用戶先用展開功能處理嵌套表產(chǎn)生了幾百萬行數(shù)據(jù)才發(fā)現(xiàn)需要拆分于是又加了一步拆分行。PowerQuery每步操作都會(huì)重放全部上游數(shù)據(jù)所以懲罰不是線性增長的。這種情況下我建議盡量在數(shù)據(jù)導(dǎo)入早期就完成拆分不要等到后面做了大量合并、篩選再拆。另一個(gè)辦法是拆分前先用刪除其他列把無關(guān)列去掉減小數(shù)據(jù)寬度PowerQuery處理行的速度會(huì)明顯提升。如果實(shí)在慢還有一個(gè)備用方案把拆分邏輯放到SQL端。如果數(shù)據(jù)源是數(shù)據(jù)庫直接寫個(gè)字符串拆分查詢或者用數(shù)據(jù)庫自帶的Split函數(shù)效率比PowerQuery高一大截。PowerQuery在ETL流程里定位是清洗和轉(zhuǎn)換不適合做超大數(shù)據(jù)的逐行字符串操作。6. 我自己一直在用的三個(gè)實(shí)操習(xí)慣分享幾個(gè)每次處理分列分行任務(wù)時(shí)都會(huì)主動(dòng)做的事。第一每做一步拆分就在查詢?cè)O(shè)置里給步驟重命名比如把已拆分列-按分隔符改成拆分商品清單或者按逗號(hào)拆用戶標(biāo)簽。別小看這個(gè)動(dòng)作PowerQuery查詢多了以后步驟名混亂是排查問題最大的絆腳石。第二拆分前一定備份原始列或者至少不要急著刪除原列。有時(shí)候拆完發(fā)現(xiàn)分隔符判斷錯(cuò)了原列還在的話只需刪掉拆分步驟重新來原列刪了就得重新加載數(shù)據(jù)源。第三所有拆分操作做完之后用數(shù)據(jù)視圖或者按列統(tǒng)計(jì)信息檢查一下每一列的最大值、最小值、空值數(shù)量這個(gè)習(xí)慣能幫你發(fā)現(xiàn)很多隱藏在拆分行里的異常數(shù)據(jù)。按列分行和按列分列之所以值得單獨(dú)寫一篇是因?yàn)樗鼈兪荘owerQuery數(shù)據(jù)整理里最常用、也最容易被誤用的核心操作。理解兩者的本質(zhì)區(qū)別熟悉完整操作鏈路再把本文提到的坑都提前規(guī)避掉處理絕大多數(shù)表格重新結(jié)構(gòu)的需求就不會(huì)再手忙腳亂了。這套能力練熟之后你會(huì)發(fā)現(xiàn)PowerBI最花時(shí)間的往往不是做可視化而是把數(shù)據(jù)整理到能用的狀態(tài)而PowerQuery正是解決這個(gè)問題的關(guān)鍵工具。