Power Query(パワークエリー)とはどんなものなのかを解説します。
試しにPower Queryエディターを起動してみても、ピンときません。見慣れないコマンドが多数あってとにかく複雑そう、といった印象ではないでしょうか。
しかし、Power Queryの用途や機能の目的は実はとてもシンプルなのです。
既存のデータからデータテーブルを作成する作業を自動化すること
データテーブルは、ピボットテーブル/グラフにしたりデータベースに読み込んで活用する
Power Queryの機能目的は2つだけ
複数の既存データを取り込んで統合すること
取り込んだデータをデータテーブルに成形すること/成形の仕組みを作ること
機能① 既存データの流用
Power Query では、Excelファイルに限らず様々な場所にある多様な形式の既存データを取得できます。
取得するデータは整理されたテーブルである必要はありません。例えば、報告書形式にまとめられたページの一部にある表でも構いません。
データを取得すると、そのデータに対して接続した状態となります。
例えばフォルダーに接続している場合は、フォルダー内のファイルの変更や追加に応じてデータを最新状態に更新できるようになります。
機能② データの加工処理の仕組み作り
ここがPower Queryの要であり、もっとも時間と頭を使うところです。
Power Query上では、目的の形態になるようにメニューコマンドを使って実際のデータを加工します。この目的は、作業自体ではなくその工程を記録するためです。
加工内容は次の三つに大別できます。
情報のデータ化 … 入力情報を整理・整合されたデータに変換します。例えば「10個」を「10」に、「2ダース」を「24」に置き換えます。また、セル結合などによるデータ上の欠落を補正します。
不要情報の除去 … データ(レコード)として不要な行・列を削除・統合します。例えば、小計行や空行などを削除します。
補完情報の追加 … 不足データを既存データから導出します。例えば、利益を原価と売上から、平均を数と合計から導出します。
テーブルの分割 … 種別ごとにテーブルを分割します。分割したテーブルはPower Pivotで紐づけ(リレーション)設定できます。
Power Query に適するデータ/適さないデータ
ルール化されたデータ … 共通のルールで扱えることが前提です。データベースなどのシステムからの出力データはもちろんですが、ある程度の不統一があっても対応可能です。
同じ処理を多数行うデータ … Power Query はデータ処理の仕組みを作って繰り返し使うものなので、一点物のデータに用いてもメリットがありません。ただし、データの読み込み機能だけを使う場合はこの限りではありません。
部署ごとに少しフォーマットが違っていたり個人ごとに入力値が異なっていたりする情報を、データテーブルに一律化・統合できます。
マクロとの違い
Power Query での「仕組み作り」は、具体的には以下のトピックで紹介しているような作業の積み重ねです。
同様の加工ならPower Queryでなくてもマクロを使えば可能なのでは? と思ったかたも多いでしょう。はい、実はそのとおりなんです。
では、マクロを使う場合と何が違うのでしょうか。ポイントは、Power Query はローコード/ノーコード開発ツール ということです。
プログラミング言語は習得必須ではない
原則的には記録結果を改変しないでコマンド記録だけでクエリーを完成させられるので、その点ではノーコードといえます。コマンド記録はM式言語に変換されるので、その記述を改変することでカスタマイズもできます。この言語は、従来言語よりも簡易・単純なローコード言語と呼ばれるものです。
マクロ(VBA言語)の場合、言語の習得が必須になりますし、作った当人にすら容易に改修できないものになったりします。
コマンドのパズル
従来のワークシート関数やマクロも、提供されているコマンドをどう組み合わせるかというパズル性がありましたが、Power Queryではその性質がより濃くなります。
Power Queryにはテーブル加工用のメニューコマンドの多数ありますが、関数やマクロのコマンドに比べればずっと少ない数です。つまり少ない手段をいかにうまく組み合わせるかのアイデア勝負なのです。
できないこともある
Power Queryにはテーブル加工のためのコマンドが網羅されていてほとんどのことは実現可能ですが、さすがにマクロでできることをすべて代用できるわけではありません。また、可能だとしてもマクロだと1行で済む処理が多量のクエリーになるようでは、「簡易」のメリットが逆転してしまいます。
Power Query のみでたいていのテーブル加工処理が実現できる。ただし、データによっては前処理・後処理としてマクロの併用もありうる、と考えておけばよいでしょう。