【Power Query】グループごとに連番をつける方法

【Power Query】グループごとに連番をつける方法 | Tableau-id Press -タブロイド-
power bi

Power Queryで連番(インデックス)を振る方法をご紹介します。

Power Queryには「インデックス列」という機能があり、全レコードに通し番号を振ることが簡単にできるのですが、グループごとに連番をつけたい場合は1ステップ加える必要があります。
今回は「全レコードに連番を振る」「グループに連番を振る方法(同じグループには同じ連番をつける)」「グループ内で連番を振る方法」の3点をやってみたいと思います。


今回使用するサンプルデータ

都道府県と属する地域が入ったデータです。

1.全レコードに連番を振る方法

単純に、全都道府県に連番を振ってみます。

列の追加>インデックス列を選択
インデックスの開始が「0から」「1から」「カスタム」から選択できます。
今回は1から連番を振りたいので1からにします。

簡単にできました!

今回は使いませんでしたが、カスタムにするとインデックスの開始と増分の両方を指定できます。

 

2.グループに連番を振る方法(同じグループには同じ連番をつける)

次に、グループごとに連番を振ってみたいと思います。
北海道地方は1、東北地方は全て2という感じで、同じ地域には同じ番号をつけます。

変換>グループ化を選択します。

グループ化ウィンドウが開くので設定をします。

①グループ化したい列
地方区分を指定します。
②新しい列名
グループ化した値を入れる列の名称を指定します。
今回は何でもよいので「TEMP」とつけておきます。
③操作
グループ化した値の処理を指定します。
今回は都道府県をそのまま残したいので「すべての行」を指定します。

次のような形になりました。都道府県は地方ごとにテーブルとして保持されています。

この状態で、列の追加>インデックス列 を使い連番を振ります。

地域ごとに連番が振られました。

テーブルに格納されている都道府県を行に展開します。
TEMP列の矢印アイコンを押します。

①展開/集計
今回は行に展開したいので「展開」をONにします。
②列の選択
展開対象の列を指定します。都道府県を選択します。
③元の列名をプレフィックスとして使用するか
ONにすると展開後の列名の接頭語に元の列名がつき、「TEMP.都道府県」のようになります。
今回は不要のためチェックをOFFにします。

このような形になり、地方ごとに連番が振られたデータができあがりました!

3.グループ内で連番を振る方法

最後に、それぞれの地方内で連番を振ってみたいと思います。
北海道地方は一つしかないので1、東北地方は1~6、関東地方は1~7がつく想定です。

最初だけ「2.グループごとに連番を振る方法」と同じステップを行いますが再掲します。

変換>グループ化を選択します。

グループ化ウィンドウが開くので設定をします。

①グループ化したい列
地方区分を指定します。
②新しい列名
グループ化した値を入れる列の名称を指定します。
今回は何でもよいので「TEMP」とつけておきます。
③操作
グループ化した値の処理を指定します。
今回は都道府県をそのまま残したいので「すべての行」を指定します。

次のような形になりました。都道府県は地方ごとにテーブルとして保持されています。

ここからは「2.グループごとに連番を振る方法」とは別のステップになります。

列の追加>カスタム列を選択します。

カスタム列ウィンドウで次の式を追加して保存します。
Table.AddIndexColumn([TEMP], "インデックス", 1)

カスタム列の名称は何でも良いです。今回は「カスタム」のままにします。

追加後、次のような形になりました。

カスタム列を展開します。

①展開/集計
今回は行に展開したいので「展開」をONにします。
②列の選択
展開対象の列を指定します。都道府県とインデックスを選択します。
③元の列名をプレフィックスとして使用するか
ONにすると展開後の列名の接頭語に元の列名がつき、「カスタム.都道府県」のようになります。
今回は不要のためチェックをOFFにします。

このような形になりました。同じ地方内で連番が振られています。

TEMP列は使わないので、削除して完成です。


【まとめ】
・全レコードに連番を振りたい場合は「インデックス列」
・グループに同じ連番を振りたい場合は「グループ化」と「インデックス列」
・グループ内で連番を振りたい場合は「グループ化」とテーブルにインデックスをつける「Table.AddIndexColumn」

の合わせ技で行う。