【Query】グループ化された中で○○をする

グループ化された中でインデックスを付けたりフィルしたりはM言語を使わないと難しそうなので、その方法をメモしていきたいと思います。

ぴ

列の中のこのまとまりごとに何かしたい!って時に重宝するんだ

風場 輝


適当に作ったダミーデータでPower BI練習中。バージョンによっては画面がかなり変わることもあるのであしからず。
この記事作成時のPower BI Desktopバージョンは「2.144.679.0 64-bit (2025年6月)」

グループ化された中で下方向にフィル

列1に入っている「あ」に対応する列2のデータは「a」ですが「空白」もあります。
「あ」が入っている行の列2にはすべて「a」、「い」が入っている行の列2にはすべて「b」、「う」が入っている行の列2には空白しかないので空のまま、「え」が入っている行の列2にはすべて「c」が入るようにしたいです。

例えば、列1で重複の削除をすると列2でnullのほうが残ってしまう…というときなんかに便利でした。

ぴ

グループ化と下方向にフィルを使うよ

列1と列2を両方選択して重複の削除をしたいとき、並び替えをしてからでもなんかうまくいかない時があるんですよね。Table.Bufferを使えばいいんですが、なんかそれを使うとめちゃくちゃ読み込みが重くなって詰むことがままあったのでこっちの方法で解決チャレンジしてみたいと思います。

も

まずは空白をnullにしよう

下方向にフィルは空白だとできません。そのため「空白」を置換で「null」に置き換えましょう。

そのあとは列1(昇順)→列2(降順)の順番で並び替えをします。

この状態で下方向にフィルを使っちゃうと、「い」と対応している「b」のデータが「う」のところまでコピーされちゃいます。でも「う」に対応する列2はnullなので「い」のデータは入ってこないでほしいです。

ということでホームタブにある「グループ化」を押してください。

グループ化の設定画面が出てきます。新しい列名は好きな名前を入れてください。
操作は「すべての行」を選択して「OK」を押します。これで列1を基準にグループ化(なんかまとめてくれる)されます。

ぷ

なんかまとまった

そしたら列の追加タブから「カスタム列」を追加します。
「=」の後に Table と打って、出てくる選択肢の下のほうにある「Table.FillDown」を選んでください。

使用できる列には出てこないので手入力が必要ですが、グループ化された列の中にある「列2」で下方向にフィルしてねという式を描きます。

Table.FillDown([グループ化された列],{"列2"})
ぷ

なんか増えた

最初にグループ化で作った「グループ化された列」はもう使わないので削除しちゃってください。

新しくできた列「フィル(下)」の右横の矢印マークを押して、データを展開します。
列1はもともとあるので列2だけ選択しときます。

も

できた~!

グループ化された中でインデックスを付ける

同じ日付の中で1からインデックスを付け、日付が変わったらまた1からインデックスが付くようにしたいと思います。例えば、2025/6/20に対応する列2の行は3つあるので新しい列では1、2、3…となり2025/6/21の行からはまた1、2、3…って番号が振られる感じです。

下方向にフィルでやったようにグループ化していきます。
ホームタブから「グループ化」をクリックし、「すべての行」を選びます。

「OK」を押すと列1を基準にグループ化されますので、この状態で「カスタム列の追加」をします。

「=」の後に Table と打って、出てくる選択肢の「Table.AddIndexColumn」を選んでください。
「グループ化された列」に対して「インデックス」という名前の列を追加し、1から番号を振ってもらいます。

ぴ

手入力の列名は「””」で囲うのを忘れないように

Table.AddIndexColumn([グループ化された列],"インデックス",1)

M言語の中の赤文字「”インデックス”」はただの新しく作る列名です。適当に入力してください。

最初に作った「グループ化された列」はもういらないので削除し、今作った「インデックス」列の右横にある矢印マークを押してデータを展開します。

ぷ

ちゃんと日付ごとに順番が振りなおされてる

タイトルとURLをコピーしました