Power BIのDAX関数に比較的最近に追加されたwindow関数。
同じタイミングで追加されたindex関数、offset関数と合わせてこれまでSQLでは容易にできていて、Power BIでは簡単に実装できなかったところに手が届くようになりました。
SQLのWindow関数と似ているところがあり、取り扱いが難しいのでこちらで使い方を紹介していきます。
index関数,offset関数の使い方について解説した記事はこちら。
目次
window関数
Microsoftの公式ページではwindow関数は下記のように定義されています。
指定された間隔内に配置されている複数の行を返します
関数としてはこちらになります。
WINDOW ( from[, from_type], to[, to_type][, <relation>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>] )
from
ウィンドウの開始位置を指定します。
from type
fromの動作を指定します。ABS (絶対) と REL (相対) が指定できます。
to
ウィンドウの終了位置を指定します。
to type
toの動作を指定します。ABS (絶対) と REL (相対) が指定できます。
relation
返される出力のもととなるテーブルを指定します。
orderBy
各パーティションの並び方法を指定します。
昇順、降順の指定も可能です。
blanks
空白値の処理を指定するところですが現在サポートされている値は DEFAULT のみとなります。
数値が空白の場合、値の順番は 0 と負の値の間になります。
文字列が空白の場合は、空の文字列を含めてすべての文字列の前に並べ替えられます。
partitionBy
パーティションを指定します。
SQLのWindow関数のように処理したい塊を指定できます。
matchBy
データの照合方法を指定します。
window関数の使い方
ここまではwindow関数の説明でしたが、この説明だけではわかりづらいので実際に挙動を見ていきます。
まずは簡単にデータを準備しました。
QごとにAさん、Bさん、Cさんのテストの点数をまとめたデータになります。
各メンバーごとに通期の平均値を算出したいと思います。
単純にPower BIの集計でメンバーごとに平均値を出すことをできますが、平均値を出し、各点数と比較するといったシチュエーションもあると思いますので、レコードごとに平均値のカラムをもたせてみます。
新しいメジャーを作成し、下記のようなDAX関数を作成します。
partitionbyで氏名単位で1行目から4行目の値を返すwindow関数となっています。
わかりやすくfromとtoは絶対値で指定しています。
これを実際に表示させてみるとこちらになります。
氏名単位で平均値を算出していることがわかります。
今回は単純な平均を例に挙げましたが、移動平均や累積等を求める際にも利用できます。
まとめ:Power BI window関数の使い方
Power BIのwindow関数の使い方を紹介しました。
指定するパラメータは多いですが、これまでSQLでできていてPower BIでは実装が難しかったことが簡単にできるようになっています。
可視化、分析の幅がより広がるのでぜひおさえてください!
Power BIをもっと学習していきたい方には書籍やUdemyがおすすめです。