shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Query】列のピボット解除で、マトリクス表をリストに変換

Power Query(パワークエリ)には、マトリクス表をリストに変換できる「列のピボット解除」という機能があります。

「列のピボット解除」には、「その他の列のピボット解除」と「選択した列のみをピボット解除」を含めて3種類あり、それぞれの処理の違いについての備忘録です。

内容:

アウトプットイメージ

行方向の値を列方向に変換

マトリクス表をリストに変換

実施方法

Power Query(パワークエリ)の基本操作が不明な場合は、【Power Queryの初歩】簡単な事例説明(使いながら覚える最初のポイント) をご覧ください。

列のピボット解除

列方向に変換したい列を選択して「列のピボット解除」をクリック(事例では年度列(20X1~20X5)のデータを選択している)。

行方向に変換したい列を選択して「列のピボット解除」をクリック

列のピボット解除

その他の列のピボット解除

列方向に変換しない列を選択して「列のピボット解除」をクリック。この場合、前述の「列のピボット解除」の選択と逆側を選択することになる。

行方向に変換しない列を選択して「その他の列のピボット解除

その他の列のピボット解除

選択した列のみピボット解除

列方向に変換したい列を選択して「列のピボット解除」をクリック。最初の「列のピボット解除」の選択と同じであるが、数式が異なるため(下図の黄色下線)、元データが変化したときの処理が異なる。詳細は次項で説明する。

選択した列のみ選択してクリック。最初の「列のピボット解除」と同様

選択した列のみピボット解除

それぞれの方法の違い

基本は「列のピボット解除」か「その他の列のピボット解除」で設定のイメージが持ちやすい方でよい。操作方法は違うが、M数式の結果は同じであった。

「選択した列のみピボット解除」はM数式がUnpivotで異なり、他の2つ(UnpivotOtherColumns)とは違った。こちらは、ピボット解除の対象が固定の場合に利用が良さそう。

なお、それぞれの説明(Microsoftの公式サポートページ)と、数式の事例は次のとおり。

項目と説明 上記事例で作成されるM 数式言語
列のピボット解除
現在、非選択の列以外の全ての列を属性/値のペアに変換します。
= Table.UnpivotOtherColumns(ソース, {"顧客","商品"}, "属性", "値")
その他の列のピボット解除
現在選択されている列以外のすべての列を属性/値のペアに変換します。
= Table.UnpivotOtherColumns(ソース, {"顧客","商品"}, "属性", "値")
選択した列のみをピボット解除
現在選択されている列のみ、属性/値のペアに変換します。
= Table.Unpivot(ソース, {"20X1","20X2","20X3","20X4","20X5"}, "属性", "値")

 

以上、Power Queryの「列のピボット解除」でマトリクス表をリストに変換と、それぞれの機能の違いの備忘録でした。