【PowerQueryで重複削除】下の行(最新行)を残す方法/条件設定

PowerQuery/Pivot
スポンサーリンク

Excelのパワークエリで重複の削除方法を紹介します。重複削除の条件設定や、下の行(最新行)を残す方法、重複の保持についても詳しく説明していますので、ぜひご参考ください。

【本記事でできること】
・パワークエリで重複を削除する方法
・重複削除の条件(複数の列/1つの列)の設定方法
・下の行を残す重複の削除のやり方
・重複の保持で重複行のみを抽出する方法
重複の削除設定をしておけば、元データが変更されても自動で更新されるので便利です!

PowerQueryで重複の削除

Excelのパワークエリで重複削除を設定する方法を紹介します。

複数列を指定した重複の削除1つの列を指定した重複の削除をそれぞれ説明します。

【複数列を指定した重複の削除】
全列を指定し、全く一緒の行があった場合の重複の削除

1つの列を指定した重複の削除】
1つの列を指定し、その列の重複した項目の行を削除

【関連記事】
パワークエリ、パワーピポットまとめ
パワークエリでフォルダ内の全てのデータの取り込みと結合
パワークエリでデータの追加とマージ
パワークエリのエラー対策
DAX関数で重複削除した行の計算(DISTINCT関数)

Microsoft 重複する値の処理

https://learn.microsoft.com/ja-jp/power-query/working-with-duplicates
スポンサーリンク

重複削除の条件設定(複数の列を指定)

まずは基本の複数列を指定した場合の重複の削除の方法です。
全列を指定し、全く一緒の行があった場合に重複削除します。

今回取り込むデータは上記の「製品ID」「商品名」「売値」がのった製品マスタテーブルです。こちらをExcelのPowerQueryに取り込んだ状態です。

3列全てを選択し右クリックし「重複の削除」をクリックします。
※右クリックからでなくても、ホームタブの「行の削除」から「重複の削除」は選択できます。

これでデータにかぶりが無くすことができ、扱いやすいデータにすることができました!

あとは、「閉じて読み込む」をクリックすればExcelに重複消去された状態で反映されます。

全体データのかぶりを無くすには、全ての列を選択し重複の削除

スポンサーリンク

重複削除の条件設定(1つの列を指定)

次に1つの列を指定して重複を消去した場合を説明します。
1つの列を指定し、その列の重複した項目行を削除できます。

設定方法は一緒ですが、こんどは1つの列のみを指定して重複の削除をします。

今回指定した商品名列にかぶりがある行の重複を削除できました!

もちろん、1つの列ではなく任意の列を選択した重複の削除も可能です。

任意の列のみのかぶりを無くすには、その列のみを選択して重複削除

しかしこの方法で重複の削除すると、上の行が残り、下の行は消えます。マスタテーブルが下に更新される場合は下の行が最新なのでそちらを残したいですよね…。そこで、上の行を削除して、下の行(最新行)を残す方法を次で紹介します。

スポンサーリンク

PowerQuery 下の行(最新の行)を残す重複削除

下記のような売値が変わった場合に、下に最新情報が更新される場合を想定します。この場合には、最新情報である下の行を残して重複の削除をしたいです。

この方法は少々テクニックがいります。

PowerQueryエディターの画面から「列の追加」タブ→「インデックス列」をクリックします。

◆インデックス列とは?
行番号を自動的に追加してくれる列。
「0から」「1から」「カスタム」で連番の行番号や、設定した行番号の割り振りが可能。

すると、インデックスという列が追加され、0から行番号が割り振られました。

次に、インデックスを降順を設定しデータを並び替えます。

マウスですと、売値が2,000円に変更された行が上にきていることが分かります。重複の削除は重複した下の行を削除するので、残したい行を上にもってくるという考え方です。

しかし、これを商品名で重複消去しても、元データの並びをクエリ側が自動判定するため、結局できません(やっかいです…)。

そこで、テーブルが評価中に外部から変更されないようにM言語を修正します。元の式をTable.Buffer()で囲むだけです!

・変更前
= Table.Sort(追加されたインデックス,{{“インデックス”, Order.Descending}})
・変更後
= Table.Buffer(Table.Sort(追加されたインデックス,{{“インデックス”, Order.Descending}}))

Microsoft Table.Buffer

https://learn.microsoft.com/ja-jp/powerquery-m/table-buffer

これで、先ほどと同様に商品名で重複の削除を実行すればOKです。きちんと、下の行が残っていますね。

下の行(最新の行)を残す重複の削除は、
インデックス列を追加し降順設定
Table.Buffer()で囲む

スポンサーリンク

PowerQuery 重複の保持で重複行のみを抽出

次に、重複した行だけを抽出する方法を紹介します。
下記のように重複行のみを確認したい場合に活用します。

全ての列を選択し、ホームタブ→「行の保持」→「重複の保持」をクリックします。

重複の保持により、重複している行だけを抽出することができました。

更にこちらを重複の削除をしたら、何が重複していたかを一目で把握できますね。

重複した行のみを抽出するには「重複の保持」

スポンサーリンク

PowerQueryで重複削除 まとめ

今回はPowerQueryで重複を削除する方法を紹介しました。ExcelのPowerQueryもPowerBIのクエリも同様の方法ですので、ぜひマスターしてみてください!

・パワークエリで重複消去
・重複削除の複数条件設定(複数の列/1つの列)
・下の行(最新の行)を残す重複の削除
・重複の保持で重複行のみを抽出

Excelのパワークエリで重複削除の設定は必須レベルで使う頻度が高いです。特に下の行(最新行)を残す重複の消去は悩んでいる方も多いかと思いますので、ぜひマスターしてみてください!

下記でPowerQueryやPowerBIの便利機能とDAX関数をまとめています。こちらも ぜひご参考下さい!

▶PowerQuery、PowerBIの便利機能、学習方法まとめ

▶よく使うDAX関数まとめ

良ければクリック応援☟よろしくお願いします!励みになります!


にほんブログ村

コメント