そのほか
2024/02/26
末川 愛梨

PIVOT関数を使わずに縦列変換を行う方法

データの縦列変換を行いたい方に向けてサンプルを用いて方法を説明しています。

はじめに

みなさん縦列変換というデータ加工処理を知っていますか?もしかすると「初めて聞いた!」「車の駐車?」と思われるかもしれませんが、縦列変換はデータを扱いやすくするための重要な処理方法なのです。本記事では「データの縦列変換をやってみたいけど、いまいち考え方が理解できない」だったり「SQLで縦列変換するにはどんな処理が必要になるか」について気になっている方へ、お話しできればと思います。

縦列変換とは?

縦列変換とは縦横変換の一種であり、縦横変換とはデータの用途に合わせて行と列を入れ替えることです。


私たちが普段扱うデータは横に列が広がっていって、下にその値が続く横長なデータが馴染みのあるものかもしれません。しかし、データ分析においては縦型のデータがより適していると言われています。そこでまず縦列変換処理を通じてデータを縦型にするメリットを説明したいと思います。


縦列変換を行うことで得られる良さ

縦列変換を行うメリットは以下のようなものがあります。


・データ分析や可視化が容易になる


変数や属性を一列にまとめることができるため、属性の値に基づいてグラフの表示方法やフィルタリングを変更しやすくなり、データ分析やデータの可視化に適した形になります


・データの柔軟性が高く修正や追加が容易


縦長のデータは各行が持つ観測値が横長のデータよりも少ないので、null値が少なく行・列の追加に対応しやすい


・データが正規化される


データを縦に持つことは「データの正規化」を行なっていると同義で、データの冗長性を排除しながらユニークな値をとる正規化を行なっています。


縦列変換のやり方~Bigquery使用~

縦列変換のやり方~Bigquery利用~


縦型のデータに変換する際、pivot関数が多く使われています。しかし中には


・pivot関数に適したデータの形でない


・pivot関数が使えない


などの事態を想定し、今回はpivot関数を使わずselect文とwith句を組み合わせて縦列変換を行いました。本記事ではその手順についてご紹介させていただきます。



  1. 縦列変換


まずは元テーブル”table1”があるとします。




これだと売上月が増えるたびに列が増えていってしまうので、今後大変になりそうですね、、そこで縦列変換を行ってみると以下のようになります。



これでデータが縦長になり、売上が増えていっても行が増えていくだけの状態になりました!上記のような縦列変換を行う方法は様々な方法がありますが、pivot関数を使わずとも以下のようなクエリで縦列変換することが可能です。


まとめ

本記事ではデータを縦に持つ縦列変換の良さやSQLコードについてお話ししました。考え方は少し難しいかもしれませんが、処理自体はそれほど複雑ではと思われるので、ぜひ本記事を参考に試してみてください!分からないことがあれば、お気軽にお問い合わせください。

New call-to-action