Power BI Desktopを触ってみたいと思ったきっかけを記事にします。
最近、データの抽出を頼まれることが多く、年々データ量が増えており
少しでもPower Queryの速度が向上できればと思っておりました。
そもそも今までは
ExcelのPower Queryを使用していました。
Excelを使用していた理由は・・・
VBAでPower Queryを実行して後処理までできる
業務改善するにあたり最初に覚えたのがVBAで、次がPower Queryでした。
それであればVBAでPower Queryも起動してしまえばもっと楽になる!という考えです。
現にこちらの書籍でもマクロと連携したノウハウが書かれてます。
VBAでPower Queryを起動するのは簡単。以下2つの設定で可能です。
1.VBAコードを書く
以下を記載します。
ActiveWorkbook.Connections("クエリ - クエリ名").Refresh
クエリを一括更新するには以下記載します。
ActiveWorkbook.RefreshAll
クエリの参照をよく使っていたので、RefreshAllではなく、Refreshをクエリ毎に記載して順番に実行されるようにしていました。
2.クエリプロパティの設定
クエリの接続タブからクエリを右クリックして、プロパティを選択、使用タブ(G)の「バックグラウンドで更新する(G)」のチェックを外します。
※このチェックを外さないとクエリの更新を待たずに後続のVBAの処理が走ってしまいます。
ちなみに以下チェックは意図せずクエリが起動されてしまうので、チェックを外しています。
・定期的に更新する(R)
・ファイルを開くときにデータを更新する(O)
・すべて更新でこの接続を更新する(A)
Power Queryの結果はテーブル形式で出力して、以下コードで列をコピーしています。
Sheets("シート").ListObject("テーブル").ListColumns("列名").DatabodyRange.Copy _
Destination:=Sheets("フォーマット").Range("A2")
この方法に味を占めて、Power Queryでデータを取得して様々なフォーマットにデータを転記していました。
データ量が多いと・・・
この方法では時間が掛かってしまうんです。
少し前はデータ量が1万件にも到達しなかったのですが、最近4~5万件ほどになってきました。
クエリ起動するにも30分位かかってます。
まぁ、手作業でやるよりは速いからよいか。と考えてましたが、今回は200万件ほどあります。
どうしようか迷う
Excelの限界を超えているので、ChatGPTに質問すると「Power BI DesktopでPower Queryを使う」と回答がありました。
ExcelとPower BI DesktopではPower Queryの速度が違うのか?という疑問が浮かびました。
これだけだと決め手に欠けるので、続けて以下の質問もしました。
すると「数十万件以上・複雑な処理はPower BI Desktop一択」とあります。
実際、Power BI Desktopで起動してみるとExcelより速度が速かったです。
※すみません。実際時間を計測したわけではなく、私の体感です。
yuni.さんも「大量データ扱うならPower BI Desktopで整理するほうがやりやすい」とお教えいただきました🙇♂️
Power BI Desktopは経験があまりないので、背中を押してもらったように思え、挑戦してみようという気になります。大変ありがたいです。
Power BI Desktopについて調べてみる
使うなら知らないといけない。そう思い、清水さんの書籍を拝読しました。
引用させていただくのですが「Power BI Desktopは専用のAnalysis Servicesのマッシュアップエンジンが搭載されている」と記載いただいてます。
今まで、Power BI Serviceが使用できない場合は、Excel一択と考えてました。
まだ知識が未熟なのですが、今後はPower BI Desktopも積極的に使ってみたいです。
何より、直近の100万件のデータ処理したいです。
Power BI Desktopでは
SharePointフォルダーのファイルをまとめて取り込めるそうです。
またyuni.さんにお教えいただきました🙇♂️
ブログはYellow11さんです。
こんな方法があったとは。
作業性向上しそうです。大変ありがとうございます。
最後に
まだ、自分自身がこれから使う段階ということもあって、もし内容(特に処理速度)に誤りがありましたらたい申し訳ありません。
今後もPower BI Desktopを活用していって自分なりに気づきがあったことを記事にしたいと思います。