「ピボット解除」とは?
ピボット解除とは、端的に言うと選択した列を縦(行)に並べる機能です。耳慣れない言葉ですが、これは数あるPower Queryの機能の中でも屈指の機能です。
例えば、以下のように横に12か月並んだデータがあるとします。
ここでB列からM列までの12か月を選んでピボット解除すると、選択した列名(12か月)は属性として、予算金額は値として列になります。つまり、元の列名とその値が縦にデータとして並びます。なお、ピボット解除されなかった列(「部門」)は、同じ値がその分だけ繰り返します。今回の例では3部門あるので、3×12=36行のデータに変換されます。
なお、似た機能として入れ替えがありますが、こちらは選択せずに列と行を完全に入れ替えるので、ピボット解除のような値の繰り返しは発生しません。
使い方として、二つのパターンを紹介します。
例1:横に入力された予算データを縦に並べ、数字テーブル(Fact Table)化する
サンプルデータ
予算データとして、横に年月が12列、縦に部門が3行並んだデータを使用します。
手順
「予算データ」テーブルの上にカーソルを置きます。
データの取得と変換のテーブルまたは範囲からをクリックします。
Power Query エディターが開きます。
201901と201912までの列を選択します。
変換メニューから列のピボット解除‐列のピボット解除を選びます。
ピボット解除され、選択された12列が行に並びます。
閉じて読み込むで、テーブルに読み込みます。
三つのピボット解除について
ピボット解除には列のピボット解除、その他の列のピボット解除、選択した列のみをピボット解除の三つがあります。それぞれ数式で違いを確認します。
「列のピボット解除」と「その他の列のピボット解除」
= Table.UnpivotOtherColumns(変更された型, {"部門"}, "属性", "値")
列のピボット解除とその他の列のピボット解除の二つの数式は同じです。UnpivotOtherColumnsなので、数式の中にある”部門”以外のものをピボット解除する表現です。したがって、データソースの年月に増減があったとしても対応できる数式です。
以下、「その他の列のピボット解除」を使った別解の動画です。
「選択した列のみをピボット解除」
= Table.Unpivot(変更された型, {"201901", "201902", "201903", "201904", "201905", "201906", "201907", "201908", "201909", "201910", "201911", "201912"}, "属性", "値")
それに対して、選択した列のみをピボット解除はUnpivotで、"201901", "201902"・・・"201912"といったピボット解除をする個別の列を指定しています。つまり、年月以外の列に増減があったとしても対応ができるという違いになります。
例2:隣に並んだ税抜金額と税額を「勘定科目」として縦に並べる
これは、例えば集計結果をシステムへインポートするファイルに形式に変換するときに便利です。
サンプルデータ
サンプルデータとして、税抜金額と税額が横に並んだデータを用意します。
手順
まず、サンプルデータのテーブルを元にPower Query エディターを開きます。
税抜金額と税額を選択します。
列のピボット解除を行います。
「属性」列を選択して、条件列をクリックします。
以下の条件列を作成します。
不要になった「属性」列を削除します。
閉じて読み込むを実行します。
これで横に並んでいた「税抜金額」と「税額」を縦に「勘定科目」として並べ替えました。