LoginSignup
9
3

More than 1 year has passed since last update.

[Power BI] 新DAX関数 EVALUATEANDLOG を試してみる🎉

Posted at

はじめに

SNS界隈で、「新しいDAX関数が使えるようになった」とざわざわしていたので実際に試してみました。参考にした記事は下記です。Microsoftの中の人。

その名も…EVALUATEANDLOG関数

現時点(2022/08/27)で公式ドキュメントはありません。
Power BI Desktop 2022年8月version 以降でないと動きません。
Power BI Serviceでは評価されません。

関数名はEVALUATEANDLOG

EVALUATE

AND

LOG

ということで、なにやら実行してログを出してくれるような関数らしい。

使ってみる

構文は下記。

EVALUATEANDLOG(<scalar or table expression>[,<label>[,<max rows>]])

使い方はいたって簡単、既存のDAX関数を

既存のDAX.dax
Profit = SUMX(Sales,[SalesAmount]) - SUMX('Sales','Sales'[Unit Cost])

ログを出したい部分をEVALUATEANDLOG()で囲むだけ。

EVALUATEANDLOG().dax
Log_Profit = EVALUATEANDLOG(SUMX(Sales,[SalesAmount])) - EVALUATEANDLOG(SUMX('Sales','Sales'[Unit Cost]))

ツールをインストール

ログを出力する前に、ツールをインストールします。SQL Server Profilerで見ることもできますが、表示項目をいじったりしないといけないため、より簡単にみるためのツールを開発してくれています。

DAX Debug Output

image.png

Power BI Desktop に接続

左上のConnectボタンを押して、接続します。

image.png

Logを出力してみる

DAX Debug OutputをPower BI Desktopに接続した状態で、先程のDAXをビジュアルにセットしてqueryを走らせます。

EVALUATEANDLOG().dax
Log_Profit = EVALUATEANDLOG(SUMX(Sales,[SalesAmount])) - EVALUATEANDLOG(SUMX('Sales','Sales'[Unit Cost]))

ビジュアルにセットすると、ツールの画面上にログが出力されます。
DAXEvaluationLogというイベント名の部分がDAX実行時のLogになります。

2022-08-27_22-24-20.gif

出力されたLogをみてみよう🎈

まず最初にSUMX('Sales','Sales'[Unit Cost])の部分が計算されています。ブランド名ごとにコストが合計されています。

image.png

次はSUMX(Sales,[SalesAmount])の部分。ブランドごとの売上が計算されていることがわかります。

image.png

そのあと2つのログは合計行を計算しているログになります。

image.png

image.png

という感じで、DAXの計算がどのように行われているのか、ログとビジュアライズされたテーブルを見ながら流れを追うことができます。

今回は下記のDAXを実行し、Logを出力しましたが、

EVALUATEANDLOG().dax
Log_Profit = EVALUATEANDLOG(SUMX(Sales,[SalesAmount])) - EVALUATEANDLOG(SUMX('Sales','Sales'[Unit Cost]))

下記のように全体をひとまとめにくくると、最終的に引き算をしているLogも確認することができます。

EVALUATEANDLOG()改.dax
Log_Profit = EVALUATEANDLOG(SUMX(Sales,[SalesAmount]) - SUMX('Sales','Sales'[Unit Cost]))

注意事項

いくつか注意があり、冒頭に紹介したブログの中でも言及されていますが、通常DAXが処理される場合は合計行のみ別に計算するわけではないので、この処理はEVALUATEANDLOG()で囲ったときだけの特別な流れなります。Power BI Serviceはこの新関数に対応しておらず、評価しないことになっているのですが、本番環境にこの関数を残したままにしておくと、いらぬ処理が増えてレポートが重くなってしまう可能性もあります。
ドキュメントも整備されておらず、まだプレビュー中なので、テスト環境でのみご使用ください。

まとめ

現状でもDAX StudioやTabular Editorを使用してDAXの処理の流れを追っていくことはできます。やっていることは一緒でも、それぞれのツールで見え方、捉え方が違うので、いろいろなツールで試していくと、少しDAXと仲良くなれる気がしますよ😁

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3