Excelパワークエリを業務効率化に活用してみよう
目次
はじめに
こんにちは。蒸し暑い日が続いておりますが、皆さん日々のパフォーマンスは落ちてきてはいないでしょうか。
さて今回は、以前コラムでご紹介したExcel PowerQuery(以降パワークエリ)活用の続編です。先日、RPAで処理を行ったデータの再鑑作業にパワークエリを活用する、という事例がありましたので、その事例について紹介しつつ、パワークエリ活用のさらなる可能性に迫っていきたいと思います。
パワークエリって何だろう、と思われた方など、前回のコラム記事が気になる方はこちらをご覧ください。
今回は、パワークエリがどんなものなのか、ある程度把握されていることを前提に読み進めていただけると幸いです。
パワークエリのおさらい
パワークエリとは、Excelに内蔵されたETLツール(収集(Extract)、変換(Transform)、送出(Load)することができるツール)の一種です。データの収集・整形ロジックをあらかじめ「クエリ」という形に作成・保持しておくことで、週や月ごとなど、繰り返し行われる同一パターンのデータの集計や加工処理といった定型業務をワンクリックで自動的に行うことができます。
クエリの作成は、Excelの「データ」タブにある「データの取得」から加工元のデータにアクセスすることですぐに始めることができ、少し慣れればごく簡単な操作でデータの集計や加工を自由自在に行えます。
今回ご紹介する事例について
今回の事例の現場では、RPAツールであるUiPathを使ったロボ開発・業務自動化が行われておりました。ある日、日次で行われている下記のような業務についてご相談を受けました。
①Excelのインプットファイル(左図)の表データの各行ごとに、社内システム内の検索と該当データの更新を行う(※ロボ化済み)
②更新作業の完了後、別部署から、システム更新の履歴(更新を行った担当者・更新の内容など)を一覧化したリスト(右図)が連携される
③②でロボを実行した担当者が、ロボで実行したインプットファイルと②の連携リストを見比べながら、ロボが想定通りの更新作業を実施できていたかを突合して再鑑する
上記 3. のロボ処理の再鑑作業は、日次で行う必要があり、またインプットファイルと連携されたリストに差分があった場合、誰が動かしたどのロボで差分があったのか確認する必要があり、リカバリーに大きな時間を要していました。
そこで、このインプットファイルと連携リストの突合をパワークエリを活用して自動化することにしました。具体的には、下記の処理をワンクリックで実行できるようにすることを目指します。
- ロボが処理したファイルと連携されたリストを読込(集計)
- それぞれのファイルの行データをロボ実行日とロボ実行者の情報でグルーピング(加工)
- グルーピングしたデータ同士を突合(集計・加工)
クエリを作成する
ここからは、上記の要件を自動化するために実際に作成したクエリ(処理ロジック)の作成手順をご紹介します。作成手順を見ていただくことで、パワークエリ実装のシンプルさや簡単さを感じていただけるのではと思います。
クエリの作成は大きく3つのステップに分かれます。まずは集計・加工元となるデータの読込を行います。
1)インプットファイル・連携リストのデータ読込
Excelファイルを新規作成し、下記の手順で処理対象のフォルダからデータを取得します。今回は、インプットファイル格納用のフォルダと、連携リスト格納用のフォルダをあらかじめ作成し、数行分のデータが記載されたサンプルファイルをそれぞれに格納しておきます。
④をクリック後、下記のような画面が表示されるので、まずはインプットファイルの格納フォルダを選択します。
そのまま「結合」→「結合および読み込み」を選択し、シート名を選択して「OK」をクリックします。
これでインプットファイルの読み込みは完了です。連携リストについても、同様の操作を行います。
2)データのグルーピング
読み込み後、下図のように「クエリ」メニューが追加されます。まずはインプットファイルを読み込んだシートを開き、「編集」をクリックしてPower Query エディターを表示させます。データの加工パターンはこのPower Query エディター上で作成することになります。
今回は不要列の削除と、「処理日」「担当者」列でのグルーピングを行います。不要列の削除は、エディターの「ホーム」→「列の管理」→「列の削除」で行います。グルーピングは「ホーム」→「変換」→「グループ化」を選択します。
グループ化の画面の「詳細設定」をクリックすると、グルーピングできる列を増やせます。「処理日」「担当者」を選択します。集計は、今回は各グループごとの件数(行数)と、更新情報の合計値を出力します。グループ内の最大/最小値や、平均値を出すことも可能です。
グルーピングが完了したら「閉じて読み込む」をクリックすることで、先程読み込んだプレビューが更新されます。インプットファイルのデータ読込・整形はこれで完了です。
連携リストも、インプットファイルと同様に不要列の削除とグルーピングを行います。ここまで、かなりシンプルな操作で進められます。整形したデータが揃ったら、次は突合処理に進みます。
3)データの突合
ここでは、先程の2つのクエリを突合するための、3つ目のクエリの作成方法をまとめます。今度は、「クエリの結合」→「マージ」を選択します。
テーブルに、先程作成した2つのクエリ名を設定し、「処理日」「担当者」列を選択します。結合の種類は、今回は「完全外部」を選択します。これは、インプットファイル・連携リストの両方ともに不足行が発生する可能性がある場合に有効です。
プレビューでは、片方のデータのみ展開された状態となっているので、もう一方のデータも展開します。「処理日」「担当者」列は突合には用いないので、チェックは外しておきます。
最後に、データの突合結果を「OK」または「NG」で返却するような条件列を追加します。「列の追加」→「全般」→「条件列」を選択します。
例えば、件数列の突合をする場合は、下の図のように条件の設定を行います。こうすることで、データの突合結果がぱっと見ただけでわかるようになります。もちろん、Excelの関数を用いることでもこのような条件列は作成可能ですが、折角なのでパワークエリでの実装方法を記載してみました。
これで突合用のクエリも作成完了です。「閉じて読み込む」をクリックし、ファイルを保存します。クエリの作成は以上ですが、かなり短時間で作成できると思います。
4)クエリの実行
実際にクエリを実行してみます。営業日ごとに、インプットファイルの格納フォルダと連携リストの格納フォルダに新しいファイルが格納されます。突合を行う際は、先程クエリ作成した突合用ファイルを開き、「データ」→「クエリと接続」→「すべて更新」をクリックするだけです。このワンクリックのみで、各フォルダ内のファイルが瞬時に読み込まれ、最新の突合結果が更新されます。例えば、2~30ファイル計1万行程度のデータ量であれば、ものの十数秒で突合結果の更新は完了します。処理速度が非常に速いのも、パワークエリのメリットであると言えます。
今回の事例のまとめ
いかがだったでしょうか。今回はグルーピング機能を用いたExcelファイルのデータ突合、という事例について紹介いたしました。記事内では記載を省きましたが、実際の現場では、インプットファイルがCSVファイルであったり、突合前にデータの書式統一が必要だったりと、もう少し複雑な要件でした。今回のような要件は、もちろんRPAでも実装できると思いますが、パワークエリを活用することでかなり短時間で実装することができ、また処理速度の速さとクエリ実行の手軽さから、テストや動作確認も気軽に実施できてよかったです。今回の事例から、他のRPAツールと比較した上でのパワークエリ活用のメリットを下記にまとめました。
- クエリの作成・テストが容易であり、開発工数が少なくて済む
- ロボでのGUI操作よりデータ収集・整形速度が速い
- Excelファイルなので要件の追加にも対応しやすい
また、今回はRPAが処理したファイルをパワークエリで再鑑するという事例でしたが、RPAと組み合わせたパワークエリの活用事例について、想定される例を前回のコラム記事にまとめて記載しております。気になる方はこちらをご覧ください。
前回・および今回の記事で紹介しきれていない、パワークエリの機能もまだまだたくさんあります。パワークエリについて興味を持った方、活用してみたいと思った方は、是非ご自分でもいろいろ調べてみてください!
おわりに
ここまでお読みいただきありがとうございました。前回および今回の記事では、新規要件をパワークエリで1から実装することをテーマに記事をまとめさせていただきました。次回またパワークエリについて触れる場合は、パワークエリのメリットの1つでもある保守性に着目し、既存クエリの改修などをテーマにしても面白いかもしれません。今後のコラム更新をどうぞお楽しみに。
弊社では、RPAツールやその他幅広いソリューションでお客様の業務効率化に向けてサービスを提供しております。今回のコラム内容に限らず、RPA全般に関するご相談やご質問などあれば、是非こちらまでご問い合わせのほどよろしくお願いいたします。
最新情報をお届けします!
RPAに関する最新コラムやイベント情報をメールで配信中です。
RPA領域でお仕事されている方に役立つナレッジになりますので、ぜび登録してください!
- November 2024 (2)
- October 2024 (3)
- September 2024 (2)
- August 2024 (4)
- July 2024 (1)
- June 2024 (2)
- May 2024 (3)
- April 2024 (1)
- March 2024 (1)
- February 2024 (1)
- January 2024 (1)
- December 2023 (1)