【PowerBIメモ】Excelユーザーが泣いて喜ぶPowerBIでのETLのすごいとこ

3年前のぼくは、Excelだったり、Rだったりを使っていたわけですが、
データクリーニングが億劫でしかたがなかったのです。

とくに昨今のオープンデータは、まだまだ発展途上で、
横持ちデータだったり、正規化されていなかったり・・・

そんな中PowerBIに出会って、データクリーニングのしやすさに驚嘆したのを今でも鮮明に覚えています。

ということで、単なる主観的なトピックスになりますが、
VBAを使いこなせないぼくのようなExcelユーザーが泣いて喜ぶPowerBIのETL機能紹介まとめます！


#１　そもそもETLとは？

ETL（Extract/Transform/Load）は以下の定義のようです。

>- Extract - 外部の情報源からデータを抽出
>- Transform - 抽出したデータをビジネスでの必要に応じて変換・加工
>- Load - 最終的ターゲット（すなわちデータウェアハウス）に変換・加工済みのデータをロード

引用：[Wikipedia](https://ja.wikipedia.org/wiki/Extract/Transform/Load)

ここでは、厳密な定義にこだわらず、データを取得、加工、利用するプロセスをETLと呼んでしまいます。

Excelを使っていると、データの取得や加工、利用の場面でこんなことに悩んだ経験が一度でもあるはず。

- データの中に一部文字や空白が含まれている
- 横に長い集計表（ピボット）の加工、利用がうまくいかない
- データを最新版に反映させるのが面倒
- WEB画面上のデータを使いたいけど、コピペしてもうまくいかない

この問題、PowerBIなら簡単に解決します。
*※というか、機能的にはほとんどPowerQuery（取得と変換）の話なので、別にExcelでもできちゃいますがw*

Excelライトユーザーが泣いて喜ぶ機能
いや、私が泣いて喜んだ機能をいろいろ紹介します。

#２　置換、削除で泣いて喜ぶ

不明文字の置き換え、空欄、数値以外のデータ・・・
多量かつ複雑なデータを使うと、各カラムには様々な"ゴミ"がデータに含まれているケースがあります。

これは、データベースに格納されているデータではなく、人の作業で作られたデータに多いですね。
Excelだと、置き換えや削除はSUBSTITUTE関数が定番でしょうか。

PowerBIは空白が含まれるカラムを行単位で削除できたり、
エラーの値や任意の値を置き換えるコマンドがあらかじめ用意されています。

<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/431c072d-0318-eb73-f693-52a60ff9f9c1.png" width=600>





どんなにデータが膨大でもボタン一つってのはやっぱり便利ですねー。


#３　ピボット解除で泣いて喜ぶ

横持ちデータを縦持ちデータに。
ExcelやSQLでこれをやるのはかなり骨がいる作業なのではないかと。
PowerBIならクリック一つ。感動ですね。


*こんな感じの横持ちデータ。これは人が見やすいデータの典型*
![図2.png](https://qiita-image-store.s3.amazonaws.com/0/165789/74395e0f-e41e-7354-cc12-8a3688a2aa46.png)

*ピボット解除を選択すると・・・*
![図3.png](https://qiita-image-store.s3.amazonaws.com/0/165789/84d11137-1954-a8ef-00da-76b653a0559e.png)

*これが縦持ちデータ。これは機械判読しやすいデータ*
![図4.png](https://qiita-image-store.s3.amazonaws.com/0/165789/95c36001-6e68-1cfb-cd49-07faacf28780.png)




#４　データソースからの取得で泣いて喜ぶ

Localにあるファイルから、クラウド上のデータ、WEB上のデータ、オンプレミスデータベースのデータ。
色々な場所に入っているデータを取得するのもクリック一つ。
オープンデータをよく使っていたため、
HTML上のtableタグ情報を読み取ってきてくれるのは嬉しかったなぁ。

試しに、大田区のAED設置場所一覧（HTML上のtableタグ）を取得して可視化してみましょう。

[大田区のAED設置場所一覧（12/21取得）](http://www.city.ota.tokyo.jp/seikatsu/hoken/aed/list_hu-yu.html)

*データを取得⇒Web*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/ae11ba6b-96da-159a-a809-4bd421b615ed.png" width=400>


*URLをコピペ*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/4d9f35f5-48b4-f3b4-21a5-f1a36a3340eb.png" width=600>

*ちゃんと読み込まれてます*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/c2419d7d-d408-d81d-d304-52f0afa7f042.png" width = 500>


*esriマップで可視化*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/8469a155-dcb4-303d-c9c3-f2aa1a345f8a.png">



#５　更新の容易性で泣いて喜ぶ

データを取得しても、データソースのファイルに変更や追加があれば、
更新によって最新値に反映してくれます。
所定のフォルダにExcelを保存→所定フォーマットでみんなが保存→PowerBIで即反映
のプロセスが可能。

*とあるフォルダに社員別の売上見込データがあるとする*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/0f1f9b5d-8a6b-40ee-531e-c6e5609b02ec.png" width = 500>


*PowerBIのデータ取得でフォルダを指定*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/2da1e231-7d1f-d506-5635-986d7d9c51e5.png" width = 400>


*ひとまず可視化*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/e8e25fa3-4b0f-0b0e-9665-a026f6690739.png" width = 400>

*フォルダにデータの追加があったら・・・*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/e79ebaf6-e6ea-0ac2-6fe5-b43462294a36.png" width=500>


*データの更新を押すだけで自動反映*
<img src="https://qiita-image-store.s3.amazonaws.com/0/165789/51d67262-8de3-6a4a-bec2-e356b3074d72.png" width=400>


#おわりに
VBA含め、いろいろなプログラミング言語を使いこなせなくても、
ここまで簡単にできてしまうんですね～。
ちなみに、PowerQueryを使いこなせればもっと複雑で機能的なことができるようになりそうです。
いつか習得したいっすね。