テクテク日記

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

データフロー(Power Query Online)④_Q&A

前回はデータフロー(Power Query Online)の便利なショートカット等について触れてきました。データフローはPower Queryと同じ体験ですが、クラウドサービスということで料金の問題であったり、使い勝手がデスクトップ版のPower Queryと異なったりすることがあります。使いこなせるようになると非常に便利ですが、今回はデータフローの気になるポイントをまとめてみました。

Q1: Power BIデータフローはそもそも何ですか?賢い利用法について教えてください

A: データフローは複数のデータソースを統合して分析するためのツール。Excelのデータモデリングと同様、複数のテーブルを統合して洞察を得ることができます。これにより、データの再利用性と信頼性が向上し、堅牢な分析基盤を構築することができます。なお、Power BIデータフローは、ユーザーが視覚的にデータを統合することができるグラフィカルなインターフェースを提供しており、利用者にとっても使いやすいものとなっています。

データフローはステージングクエリという概念を持っており、取得と変換が複雑でソースシステムに負担が掛かるような作業を以下のステップを行うことで最適化することができます。

  1. ソースからデータフローへデータ変換を行うことなく、いったん読み込む
  2. 読み込んだデータフロー(データが読み込まれたもの)を参照し、Power BIのデータセットに使用できるデータフローとして保存
  3. そのデータフローに対して各ユーザーが接続し、Power BIや他のサービス使用する

なお、ここで紹介した活用事例はあくまでサンプルであり、全てが上記ストラクチャーに従う必要はありません。気を付けるべきは、データソースが早い場合、すなわち、クエリフォールディングが可能である場合、直接ステップ②に飛んで作業したほうが良いケースもあると思います。

Pro Tips:
1つのデータフロー内に入っているテーブル(クエリ)をどのようなものにするか、かつ、どれほど入れるかを事前に決めておくと良いでしょう。なぜなら、データフローを更新する場合、同じデータフロー内に更新に時間を要するクエリがあれば、それだけそのデータフローの更新が遅くなってしまうからです

Q2: データフローはPower BIでしか利用できないのですか?

2023年2月現在、データフローを利用することができるMicrosoftのデータ関連サービスは以下の通りです。

ここで特に面白いのがアプリケーションから離れることなく、Teamsの中でPower Query Onlineを使ってデータの取得と変換ができることでしょうか。Dataverseを活用される方はTeamsの中で開発ができたりするので、これは非常に面白いと思います。

なお、Excel for MacというのはMacExcelには現在、Windows版のPower QueryのUI(ユーザーインターフェース)ではなく、Power Query Online(データフロー)のUIが搭載されていることを意味します。私はiPadiPhone以外は全てWindowsで統一していますので、MacExcelでPower Queryを使っている人が非常に羨ましいと思いました。ちなみに、なぜMacExcelにはPower Query OnlineのUIが搭載されているかについては、下記にて説明します。

Q3: Power Query Online(データフロー)についてもう少し教えて

Power Queryは現在、Windows版のExcel、Power BI Desktopに関わらず、全てPower Query Onlineベースによる開発が行われています。従って、現在ExcelやPower BI DesktopのPower Queryでバグを発見したとしても、それがよほどユーザー体験を阻害してしまうものでない限り、修正は今後のモダンUI(Power Query OnlineのUI)になった時に行われる予定です。

私も少し前にBinaryファイルに対して、Power BI DesktopではOpen Asというコマンドで解析しようとしたところ、Excelのようにアイコンが出現せず解析できないことを報告したものの、Power Query製品チームのMiguel Escobar氏(M is for Data Monkeyの共同著者かつMicrosoftのデータ・インテグレーションチーム所属)によると、

”今後の計画は、新しいモダンなUIにギャップやバグがないことを確認すること、言い換えれば、問題がPower Query Online(PQO: Power BIデータフローなど)で再現されているかどうかを検証するよう依頼している”

ということになったようです。

ちなみに、上図の問題はPower Query Onlineにおいてこのコンテキストメニューが存在しないため、劣後扱いとなりました。確かにこの要改善機能で被害を受ける人はこれを発見した私でさえも被害を受けない・・ん?ちょっと何を言っているのか分からなくなりましたが、無視できるレベルの話だと思います。

話を少し戻して、Power Queryはコードベースでの開発が進んでいるため、クラウド上の各種サービスに対してモダンUIベースでの実装ができるようになり、製品開発チームは開発コストを抑えつつ、集中的にそこにリソースを費やせるようになりました。

Power Queryが登場して10年程度経ちますが、昔ながらのPower Queryエディタ(ExcelやPower BI DesktopでのPower Query)と現在改良を重ねているモダンUIでコードベースで作られる2つの異なるバージョンのPower Queryが存在しているいるため、今後期待されるのは

いつ、モダンUIがExcelとPower BI Desktopに搭載されるか

となります。ただし、以下のように

  • ExcelにはExcelのチームが存在するため、より綿密なコラボが求められる
  • MacExcelのように、すぐにでもWindowsExcelにモダンUIを載せられない理由は、WindowsExcelを壊すと世界規模の大惨事になってしまう(上記、MacExcelにはPower Query OnlineのUIが搭載されていることに対する答え)

といったことを如何に解決していくかに掛かっているといえます。

最後に、先日紹介したVS Codeを使ってPower Queryを記述する

記事ですが、VS Codeにあるインテリセンス機能(=オートコンプリート機能)が現在まだPower Queryに搭載されていないが、統合に向けて動いているという噂だそうです。ちなみに、ここまで読んで興味深いと感じる方は、ぜひ下記Alex Powers氏(Power BI Customer Advisory TeamのMr. Mと呼ばれし男)のプレゼンテーションを見てもらうと良いでしょう(英語オンリーですが、個人的にはめちゃくちゃ面白かった&ここからの引用多数)。

Q4: データフローの更新履歴をダウンロードして確認したら、文字化けしてました

こちらは随分前から分かっていた仕様ですが、日本語環境でPower BIサービスからデータフローの更新履歴をダウンロードし、そのままダブルクリックしてExcelで開くと、中身が全て文字化けしてしまいます(下図)。

理由は日本語環境で使用するExcelShift_JIS形式となっているためだと思われますが、以下のような対処法があります。

テキストエディタで開くパターンですが、VS Codeで開くと以下のようになります。もちろん、Notepadでも構いませんが、開いたところでいろいろ調べるのに苦労しますので、結局はPower Queryで読み込ませたほうが良いことになります。

Power Query(ExcelでもPower BI Desktopでも)の場合、以下の形式で抽出されるようになります。

抽出ロジックを組むのが面倒だという人は、下記リンクよりサンプルで作ったものがありますので、そちらをダウンロードしてお使いください。

データフローの更新履歴抽出

>>ダウンロード

抽出用のファイルは.pbixと.xlsxの2つ用意しました。解凍したフォルダ内にある「RefreshStatus」の中にありますので、お好みに合わせて使ってみてください。

以下簡単な解説となります。

  • pbix版
    Power BIを使っていろいろ調べたい人向け(可視化重視)。言語パラメータをJP、ENのどちらかで指定することで、Power BIの言語環境に合わせてダウンロードしたcsvの両方を抽出できるようにしています。ただし、最初にJPを指定してその後ENに指定してデータを更新すると、テーブルビジュアルが壊れてしまい、再度ビジュアルを作り直す手間が発生します
    2023.2.26の下記ブログで、テーブルビジュアルが壊れないやり方を紹介しています。ダウンロード先は同じで、Dataflow_RefreshHistory_dynamic_header_pq.pbixを使用することでこれを実現できます

  • Excel
    pbix版と同じですが、パラメータを変更してデータを更新してもビジュアルが壊れることはありません(テーブルなので当たり前といえばそうですが)

Power Queryのソースコードが読める人はすぐに理解できると思いますが、個人的には多言語環境でデータフローを更新する場合にはExcel版のほうが使いやすく、日本語環境だけで運用する場合はpbix版が使いやすいと思います。

その他参考ソースは以下の通り。

  • 更新時の各用語解説

データフローの更新履歴は多くの有用な情報が載っており、パフォーマンスのチューニングを行う際に見るべきポイントとして、下記Guy in a Cubeの動画がお勧めです。

あ、最後に言い忘れましたが、実は今回の記事、ChatGPTを使って書いた部分があります。Power Queryにも今後ChatGPTが搭載される・・・かもしれないので、Stay tuned!

次回、Power BI Proの環境でデータフローを運用した場合のことについて書いていきます。