[Power BI] LOOKUPVALUE関数を使用した前行データとの比較

ブログのアイキャッチ。LOOKUPVALUE関数を使用した前行データとの比較

このページでは、Power BI のDAX関数を使用して、前の行(1行上)のデータと比較し、引き算や足し算を行う方法を紹介します。
使用する関数:LOOKUPVALUE

目次

はじめに

Power BIのDAXを使用したデータ分析は、複雑なデータ操作を可能にしますが、Excelでの操作とは異なり、行間の計算は直感的ではありません。例えば、前後の行と比較、1行上の値を足す、など。

ここでは、DAX関数のLOOKUPVALUE関数を使用して、前の行との比較を行う方法を紹介します。
LOOKUPVALUE関数はExcelのVLOOKUPと同じようなふるまいを行う関数になります。

DAXを使用した考えかた・計算方法

使用するデータ

本記事では、使用するデータとして下記のような日付データ[Date]と実際に計算を行う値[Score]で計算を行ってみます。テーブル名はtableにしています。
実際に計算を行う場合は、ご自身のデータに応じた値、列名に書き換えてください。

本記事で使用するサンプルデータ。

考え方

実際に計算を行う前に、tableに行の番号を記載した列をRANKX関数を使用して追加します。列名は[index]にしています。

index = RANKX('table',[Date],,ASC)
行番号をRANKX関数を使用して追加

行番号を基準にてして前後の行の比較を行うために追加しました。

日付データの基準に行番号を作成しました。もし、日付データがない場合やDAXで行番号を作成したくない場合は、Power Queryの機能を使用いて、indexを作成してください。

Power Queryの機能を使って行番号を追加。

計算式

追加した行番号を基に、LOOKUPVALUE関数を使用して今回は前日のScoreの返してみます。

LOOKUPVALUE([返してほしい値],[検索される値],[検索する値]

前日は現在の行番号-1になるので、[検索する値]に[index] – 1を入れます。

前日のScore= 
LOOKUPVALUE('table'[Score],'table'[index], 'table'[index]-1)
LOOKUPVALUE関数を使用して前日のScoreを計算。

このデータにはindex0が存在しないため、index1は空白(Blank)になっています。

前日のScoreとの比較は下記で表現できます。index1を空白にしたい場合は、if文などで、条件分岐してあげ類必要があります。

比較の計算結果。

参考:ビジュアル計算(新しい計算)を使用する場合

新しい計算を使用すれば、行番号の追加なしでそのまま計算できます。

Calculation = [Score の合計]-PREVIOUS([Score の合計])
新しい計算を使用した場合の参考例。

まとめ

  • LOOKUPVALUE関数はExcelのVLOOLUPと似たふるまいを行う。
  • 前後の行との比較は行番号を追加し、これを基準に計算。
  • ビジュアル計算を使用すればもっと簡単に計算できる。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

技術系職社会人:業務でPowerBI を活用/データ分析/インドア派/趣味:ゲーム、カプセルトイ収集/[III]Mosnterが好き/勉強中:Blender/日々習得した内容をアウトプットしていきます!

目次