テクテク日記

テクテク=テクノロジー&一歩ずつ(テクテク)

Power Queryについて

Power Query(パワークエリ)*1DAX / Data Model(データモデル)*2の両方について解説していくと書きましたが、この2つのテクノロジーは似て異なるものです。何より重要なのは、紹介していく順番ですが、殆どの方は最初にPower Queryから学んでいくことになると思います。

なぜならば、

Power QueryはDAX / Data Modelを構築する前工程(前処理的な機能)

だからです。

f:id:marshal115:20200415173646p:plain

詳細は今後話していくとしますが、Power QueryとDAX / Data Modelの関係性は上図の通りです。簡単に言えば、Power Queryなしにはデータモデルや分析用言語であるDAXを活用するのが非常に難しいからです。

DAX / Data Modelは別記事に書きますが、Power Queryによって生成されたデータセット*3が分析に適した書式になっていない場合、先に進めなくなることを意味します。

前置き長くなりましたが、以下本文になります。

Power Queryとは

Power Queryはデータの取得・変換・出力を行うETL*4ツール(あるいは機能)です。この説明だけでは「何が何だかよくわからない」と思いますので、具体例にしてみます。

例えば、あなたは全国200店舗を有する大手家電小売の地域担当者であるとします。あなたの仕事は毎週各店舗から報告されたデータを集計し、経営陣向けに販売実績や在庫状況、更にそれらに関する分析結果を報告する必要があるとします。詳細な数字は基幹システムから取得できるが、最新の数字は各店舗が集約した数字が正しいとします。システムのデータはCSV*5、各店舗から提出された数字はExcelで管理されていた場合、これらのデータを結合して最新の状態に反映させる必要があります。

ここであなたが取りうる手段は以下の4つで、No.4以外はPower Queryを使用しない前提とします。

  1. データ集計を部下に任せる
  2. チームでデータ集計を行う
  3. マクロを作ってデータを結合させる
  4. Power Queryでデータ集計を行う

f:id:marshal115:20200415163913p:plain

1は優秀な部下がいれば問題ないであろうが、大抵の場合、仕事の丸投げという形で嫌われます。私自身が経験したことなので、全てに当てはまるとは限りませんが、特に金曜日の午後にこのような形で仕事が来ると大抵の場合、あなたは”できない上司”と認定されてしまいます。

2はチーム制による分業で効率を引き上げることに等しいですが、各人のスキルレベルの違いにより誤集計が発生しやすくなります。

3は今までのベスト・プラクティスとして考えられていたが、Excelのマクロは使用バージョンによって動作が不安定だったり、何よりマクロを構築した後のメンテナンスの難しさや、ブラックボックス化を招くことになります。

となると、残すは4のPower Queryを使った集計になりますが、これであれば1人で集計できるだけでなく、集計用に作ったクエリ*6が来週にも再利用でき、多くの場合、ボタン1つで半自動化を実現することが可能になります。

なぜPower Queryか

上述の通り、Power Queryを使えばデータを簡単に集計することができると書きました。Power Queryを使う理由は単純明快であり、

  • 異なるデータソースからデータを集計できる
  • 集計したデータ同士を結合し、新たなデータセットとして使っていける
    ExcelのVLOOKUPのイメージ)
  • 一度作成したクエリで手軽にデータ更新が可能
  • その他(データベースの基礎が身につく)

等が挙げられます。上記以外にもメリットは多くありますが、ここではいったん割愛するとして、最も注目すべき点は上述のメリットにより、

集計時間の大幅な削減

を実現することが可能になることです。生産性が上がり、他人の時間を奪うことなく集計結果に対して責任を持てることが何よりのメリットであり、更にその先の分析業務に使用できる時間を確保できる、夢のような機能であると言えます。

Power Queryの実用例

期待値があまりにも高くなるといけないので、具体例を1つ書きます。とその前に、誰かが言いましたが、

世の中のデータは常に汚い

という事実を知って頂きたい。そんな私も担当する案件で定期的にデータ集計だけでほぼ半日以上を費やしてしまう時期があったが、Power Query(PQ)を使用した結果、凡そ15分程度で作業が完了した。今では日常的に使っているので慣れてしまったのですが、この時の衝撃は今でも忘れられないほど大きいものでした。

f:id:marshal115:20200415175202p:plain

Power Queryの対象ユーザー

Power Queryを使うメリットが得られるユーザーは誰でしょうか?この質問は私が答えるのではなく、皆さんが実際にこの機能を使って初めてわかることですが、一言でいえば、

何かしらのデータ処理を行う必要がある全ての人

と考えています。

前述の具体例の続きですが、私がPower Queryを使って時間短縮に成功したことをチームの1人に伝えたところ、

「へ~そうなんだ。すごいですね」

という返事だった彼ですが、社内向けにPower Queryを導入して数か月後の反応は

「やばい・・・これ本当にやばいです!」

に変わっていました。そんな彼も今ではプロフェッショナル・クエラー(造語:Power Queryを使う人)になり、元の生活(コピペといった手作業時代)には戻れなくなったとか。 

Power Queryのまとめ

ここまでいろいろ話をしてきましたが、実際に使ってみないと分からない、という意見が大多数だと思います。論より証拠とはまさにその通りで、Power Queryは使ってみて初めてその威力に感動するものと確信しています。

Power QueryはExcelとPower BIのどちらでも使用可能ですが、Excelの場合はバージョンが2013以降であることが条件となります。なお、このブログではクラウドベースのOffice 365 Excelを使って説明していきますが、基本的な機能に関しては違うバージョンとさほど大きな違いはありません。

対応するExcelのバージョンが古いという方はPower BI(※無料)をダウンロードしてください。 これにより、Excelと同等、あるいはそれ以上のことが可能になります。Power BIについては別途記事にしますが、Excelにはない機能がたくさん搭載されており、ExcelとPower BIの概念については上図 a) Power QueryとDAX / Data Modelの関連性をご参照ください。

powerbi.microsoft.com

次は本ブログのもう一つのトピックであるDAX / Data Modelの紹介をしたいと思います。

*1:データの取得・変換機能

*2:DAX: Data Analysis eXpressionの略で、データ分析用言語。Data Model: データセットをリレーションで定義付けしたもので、この作業の後にDAXを記載する

*3:プログラムで処理されるデータのまとまりであり、Excelでいうテーブルのこと

*4:ETL: Extract, Transform, Loadの略。ETLという言葉はデータ処理の基礎用語であり、今後も頻出するワード

*5:Comma Separated Valueの略で、Comma(カンマ)で Separated (区切った)Value(値)となる。ほぼ全てのデータベースと互換性があり、データを格納する最もユニバーサルな書式の1つ

*6:本来の意味はデータベースに対する命令文であるが、Power Queryでは単にデータセットとして使われる