【PowerBI】Power Query 列の追加 vs DAX 新しい列

こんにちはMJです!Power BIのデータモデリングでは、Power QueryのM言語やDAXを使用して新しい列を作成することは一般的な作業です。

しかし、データモデルのサイズが大きくなるほど、その選択が開発パフォーマンスに与える影響は大きくなります。

特にデータの更新(Refresh)時には、この2つの方法の動作の違いが処理時間に大きな差をもたらします。

今回は、両者がどのように動作するのか、そしてレポート開発の観点からどのように選択すべきかを解説します。

 

Power Queryでの新しい列の作成

Power Queryで列を追加することは、データをモデルに読み込む前の変換処理にあたります。

Power Queryエディターの「列の追加」タブから新しい列を作成できます。

カスタム列では以下のようにM言語式で作成します。

作成した列は次のように表示されます。

処理した履歴は右の「運用したステップ」に表示されます。

 

主な動作:M言語とクエリフォールディング

  • 動作タイミング:データ読み込み前
  • 使用言語:M言語
  • メリット:ローカルで計算を行うのではなく、データベース側で計算を実行することで、Power BIとデータベース間のデータ転送量を最小化し、クエリのパフォーマンスを向上させます。

 

データ量による更新負荷

  • 全テーブルの再読み込み:Power Queryの変換ステップで新しい列を追加したり、既存の変換を修正すると、そのテーブル全体を再度ソースから読み込み、再計算します。
  • 処理時間の増加:データモデルが大きいほど、この再読み込みと変換処理に多くの時間がかかります。データ量が多い場合、Power Queryの変更は慎重に行う必要があります。
再更新中のデータ

 

DAXによる計算列(新しい列)

DAX計算列は、データがモデルに読み込まれ、テーブル間のリレーションシップが設定された後に定義されます。

上段のメニュー「新しい列」から列を作成できます。

DAX式で列を作成すると、名前の横にアイコンが表示され、Power Queryから取り込まれた通常の列と視覚的に区別されます。

 

主な動作:行コンテキストとモデル内計算

  • 動作タイミング:データモデル読み込み後
  • 使用言語:DAX
  • メリット:テーブル間の行ごとの計算を効率的に処理できる

 

メモリとパフォーマンスの負担

計算列を追加すると、データモデル全体のサイズが増加し、Power BIエンジンが処理するメモリの使用量も増えます。

その結果、レポートの操作レスポンスが遅くなる可能性があります。

DAX Studioから両者で追加した列を見るとデータのサイズが異なっています。

 

まとめ

Power BIで開発を進める中で、新しい列を追加する場面があると思います。

どのようなデータを使って開発するかによって、最適な方法も変わります。

本番データに近い結果を見たいなら多くのデータを使用すべきですが、その分データ更新に時間がかかるリスクもあります。

一方で、DAXで列を作成すれば素早く結果を得られますが、メモリ負担が増える可能性があります。

これらの特徴を理解した上で、レポート開発時にはパフォーマンスと効率を考慮した戦略的な選択が求められます。

 

BI製品のサポートはぜひKCMEで!

自然言語を使って簡単にデータの可視化ができるBIツール、ThoughtSpotの詳細はこちら

おすすめの記事