保留重復項(Power Query 之 M 語言)


數據源:

“姓名”“基數”“個人比例”“個人繳納”“公司比例”“公司繳納”“總計”,共7列7行數據,其中姓名列,第1、2行與第6、7行內容重復

目標:

留下第1、2、6、7姓名列中內容重復的行

操作過程:

選取指定列》【主頁】》【保留行】》【保留重復項】

 

M公式:

= let columnNames = {"指定列名"}, addCount = Table.Group(步驟名, columnNames, {{"Count", Table.RowCount, type number}}), selectDuplicates = Table.SelectRows(addCount, each [Count] > 1), removeCount = Table.RemoveColumns(selectDuplicates, "Count") in Table.Join(步驟名, columnNames, removeCount, columnNames, JoinKind.Inner)

說明:

= let columnNames = {"指定列名"}, addCount = Table.Group(步驟名, columnNames, {{"Count", Table.RowCount, type number}}), selectDuplicates = Table.SelectRows(addCount, each [Count] > 1), removeCount = Table.RemoveColumns(selectDuplicates, "Count") in Table.Join(步驟名, columnNames, removeCount, columnNames, JoinKind.Inner)

  • 給指定的列名一個說法,叫作“columnNames”

 

= let columnNames = {"指定列名"}, addCount = Table.Group(步驟名, columnNames, {{"Count", Table.RowCount, type number}}), selectDuplicates = Table.SelectRows(addCount, each [Count] > 1), removeCount = Table.RemoveColumns(selectDuplicates, "Count") in Table.Join(步驟名, columnNames, removeCount, columnNames, JoinKind.Inner)

  • 【分組依據】計算指定列里各個值出現次數,並將這結果命名為addCount

 

= let columnNames = {"指定列名"}, addCount = Table.Group(步驟名, columnNames, {{"Count", Table.RowCount, type number}}), selectDuplicates = Table.SelectRows(addCount, each [Count] > 1), removeCount = Table.RemoveColumns(selectDuplicates, "Count") in Table.Join(步驟名, columnNames, removeCount, columnNames, JoinKind.Inner)

  • 【保留行】保留“Count”列中值大於1的行

 

= let columnNames = {"指定列名"}, addCount = Table.Group(步驟名, columnNames, {{"Count", Table.RowCount, type number}}), selectDuplicates = Table.SelectRows(addCount, each [Count] > 1), removeCount = Table.RemoveColumns(selectDuplicates, "Count") in Table.Join(步驟名, columnNames, removeCount, columnNames, JoinKind.Inner)

  • 【刪除列】將“Count”列刪除

 

= let columnNames = {"指定列名"}, addCount = Table.Group(步驟名, columnNames, {{"Count", Table.RowCount, type number}}), selectDuplicates = Table.SelectRows(addCount, each [Count] > 1), removeCount = Table.RemoveColumns(selectDuplicates, "Count") in Table.Join(步驟名, columnNames, removeCount, columnNames, JoinKind.Inner)

  • 將原表和只保留重復值的表進行【合並查詢】,連接種類使用“內部”

 

將所有步驟拆分如圖所示。

 

其中核心部分:

addCount = Table.Group( 更改的類型,"姓名", {{"Count", Table.RowCount, type number}}),

selectDuplicates = Table.SelectRows(addCount, each [Count] > 1),

removeCount = Table.RemoveColumns(selectDuplicates, "Count"),

最后一步 = Table.Join(更改的類型, "姓名", removeCount, "姓名", JoinKind.Inner)

最終效果:

數據只剩下姓名列中重復的四行數據

 

多說一句:

好吧,我承認,我被這個公式驚到了!這其實已經不是一個簡單的公式,而是一段M代碼,這不是有let開頭,in結尾么……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM