Excelパワークエリのデータ収集・整形をRPAロボ開発に組み合わせてみよう
目次
はじめに
業務のRPA化を推進しているロボ開発者の皆さん、こんにちは。
RPA化において、Excel上に一覧化した社内システムのデータを一行ずつ処理・更新したり、繰り返し処理の一つ一つのステータスをExcelに持たせるなど、Excelの参照・更新を絡めたロボを作る機会はかなり多いのではないでしょうか。
今回は、上記のようなExcelを扱うロボの開発において役立つような、ExcelのPower Query(以降パワークエリ)という機能を活用したロボ作成の例やメリットについて紹介したいと思います。
パワークエリってなんだろう、と思われた方も、是非ご一読いただけると幸いです。
パワークエリとは
パワークエリとは、Excel 2016からExcelに標準搭載された機能であり、一言でいうと「Excelに内蔵されたETLツール」です。ETLツールとは、一定の形式やパターンを持った定型データについて、決められたルールのもとで収集(Extract)、変換(Transform)、送出(Load)することができるツールを指します。言い換えると、データの収集・整形ロジックを前もって決めておけば、同一パターンのデータを、自動で繰り返しそのロジックに合わせた形で加工し取り出せるという機能になります。
例えば、週ごとにシステムからダウンロードしたExcelデータを集計・分析できるよう同じ形へ加工したり、営業日ごとのデータを月末に一つのExcelファイルにまとめたり、といったExcelを扱う定型作業があったとします。作業の度に毎回同じ関数を手入力したり、同じシートや行・列をコピーペーストしたりなど、慣れてしまえばルーチンとはいえ、それなりに時間のかかる作業はよくあると思います。パワークエリでは、これらのExcelデータの収集・整形ロジックを「クエリ」として作成・保存することで、以降同じ処理をワンクリックだけで済ませることができるようになります。
Excel処理をするRPAの課題
例として、あるカード会社の社内システムAから出力される下図のような一覧データを、一行ずつ別の社内システムBの内部データと照合して承認処理を行うようなロボがあったとします。
データを制約なく上から全行処理するだけの要件であれば、処理対象行の選択ロジックはシンプルですが、例えば以下のような要件が組み込まれていたり、また新しく追加された場合はどうすればよいでしょうか?
- 「優先」列に〇のついているものだけ先に処理してほしい。
- 「締日」が近いものから順に処理してほしい。
- 「ステータス」列が「保留」のものは処理しないでほしい。
これらの要件を追加したり、また簡単に元に戻せるようにするには、例えばロボのソースコードとは別に設定ファイルを設けて、下図のように項目の値(ON・OFFなど)で処理パターンを切り替えられるようにするなどの方法が考えられます。
この方法ならロボを動かすユーザーは処理の切り替えが簡単ですが、一方ロボの開発者は設計段階で複雑な処理対象選択のロジックを組み込まなければならず、またロボ開発終了後に追加要件が決まった場合は、その都度ロボを改修・再リリースする必要が出てきてしまいます。
このように仕様が固定されない業務の効率化においては、RPAツールの導入のみではロボの保守性に課題が残ってしまうのではないでしょうか。
Excelデータ整形をパワークエリにやらせてみる
上記の要件は、ロボ化するにあたりExcelデータの処理パターン分岐が厄介でした。このExcelデータ整形を、ロボではなくパワークエリに任せてみようというのが今回のねらいになります。
具体的には、処理行の取捨選択や並び替えロジックをパワークエリ側で管理し、ロボ側は整形されたデータをただ一行ずつ処理するだけのシンプルな作りにすることで、要件の追加をクエリの作成だけで対応できるようになりロボ改修の必要がなくなります。
クエリの作成は非常に簡単です。例えば、先程箇条書きにした3つの条件を全て盛り込んだクエリを作成してみます。
1)データの取得
Excelファイルを新規作成し、下記の手順で処理対象としたいブックからデータを取得します。
④をクリックすると下記のような画面が表示されるので、フォルダからデータ元のファイルを選択してインポートします。
下図のようにナビゲータが表示されるので、対象データのシートを選択して読み込みます。
2)データの加工
読み込み後、下図のように「クエリ」メニューが追加されるので、「編集」をクリックしてPower Query エディターを表示させます。データの加工パターンはこのPower Query エディター上で作成することになります。
今回は「行」の削除とソートが必要なので、これらを行います。Excelのテーブルにフィルターをかける要領で、ヘッダー横の🔽ボタンから必要な処理を進めます。行った処理は「適用したステップ」に自動でロジックとして追加されていきます。
3)保存
目的の加工が終了したら、Power Query エディターの左上「閉じて読み込む」をクリックします。こうすることでクエリが保存され、先程の3つの要件を満たすように元のデータが加工されたものが新しいSheetとして出来上がりました。非常に簡単ですね。
4)クエリの繰り返し実行
例えば、先程最初に読み込んだExcelブックのテーブルの下に新しくデータ行が追加されたとします。再度データ加工を行う場合、先程作成したクエリを実行すれば手動での加工作業は一切必要なくなります。
先程クエリ作成してできたSheetを開き、「データ」メニュー内の「クエリと接続」から「すべて更新」をクリックします。これだけです。
たったこれだけの操作で、追加・更新された読み込み元データに対する収集・加工処理が行われて、Sheetの内容が更新されてしまいます。
Excelが整形できたら、あとはこれをロボットに処理させるだけです。ロボに処理の分岐ロジックを実装することも、設定ファイルに持たせたフラグを業務担当者に変えてもらうことも必要ありません。処理パターンに応じたクエリをあらかじめ作っておき、ロボを動かす前にそれを実行するだけで要件通りにロボの処理を進めることが可能になります。
パワークエリによるInputデータ加工のメリットまとめ
いかがだったでしょうか。今回はごく簡単な行フィルター機能にしか触れませんでしたが、他にも表どうしの結合や計算式の追加など、パワークエリでできることはたくさんあります。ひとまずここまでで、処理パターンの選択をロボからパワークエリにさせることのメリットをまとめたいと思います。
- 新しい要件(処理パターン)が増えてもロボの改修が必要ない
- ロボの実装をシンプルにできるので開発工数やバグの削減に繋がる
- クエリの作成が容易であり、手順に慣れてくれば業務担当者側でもできる
- ロボでのGUI操作よりデータ収集・加工速度が速い
また、上記のような処理パターンの選択以外にも、RPAとパワークエリを組み合わせることでRPAの簡略化や保守性向上を狙えるようなケースはたくさんありそうです。参考までに、いくつか例を挙げてみます。
- 複数データのDLと、それらをExcelのGUI操作でレポートに整形するような要件があったとして、データDL部分をRPA、Excel整形部分をパワークエリに分担させる
- 扱うデータは同じだが、部署や担当者ごと等で出力するレポートが異なるような業務において、データ出力部分は同じRPAを共通利用し、レポート生成部分にそれぞれ異なるパワークエリを組むことでRPA自体を汎用化させる
こうしてみると、まだまだ多くのことに応用が利きそうです。パワークエリはCSV、テキストファイル、Webサイト、データベースなど様々なデータを取り込むことができるので、RPAと組み合わせる、組み合わせないに関わらずかなり幅広く業務活用することができそうです。パワークエリについてさらに気になった方、使ってみたいと思った方は是非ご自分でもいろいろ調べてみてください!
おわりに
ここまでお読みいただきありがとうございました。上記でも触れたとおり、パワークエリは他にも様々なデータ収集・整形作業を再利用できる形に落とし込めるので、業務効率化において大きな可能性を秘めた機能であると言えます。パワークエリの更なる機能や用途については、またいずれ記事にしてまとめさせていただければと思いますので、今後のコラム更新をどうぞお楽しみに。
弊社では、RPAツールやその他幅広いソリューションでお客様の業務効率化に向けてサービスを提供しております。今回のコラム内容に限らず、RPA全般に関するご相談やご質問などあれば、是非こちらまでご問い合わせのほどよろしくお願いいたします。
最新情報をお届けします!
RPAに関する最新コラムやイベント情報をメールで配信中です。
RPA領域でお仕事されている方に役立つナレッジになりますので、ぜび登録してください!
- December 2024 (1)
- 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)