こんにちは。IT企画本部 開発1部 開発1Gです!
開発1Gでは主によりよいサービス提供のための新しいサービスや仕組み作りによるサービスアップを目的とした開発案件を主に請け負っています。
前回Azureを使用した新規サービスのコラムを掲載しましたが、その中で利用したPower BIの機能であるメジャーと列の使い分けについて紹介します。
【メジャーと列の使い分けについて】
Power BIで取り込んだデータに対して、加算や割合計算を行いたいケースあると思います。
Power BIにはDAXというExcelの関数に似た機能が実装されており、DAXを利用することで加算や割合計算を行う機能が提供されています。
DAXは計算列とメジャーで利用することができ、それぞれの特徴は以下になります。
○計算列:データテーブルのレコード単位でデータを新しく追加します。
結果はテーブル内の項目として保持されます。
○メジャー:データテーブルのレコードを集計します。
結果はレポートへの操作ごとに計算され、データとして保存は行われません。
例えば以下の身長体重データが存在するとします。
それぞれのBMIを算出したい場合、各レコードに対して新しくBMI列の追加を行います。
対してメジャーは平均などのレコード全体に使用します。
人毎の平均BMIの表示は各レコードで保持ではないためメジャーを使用します。
既存のデータと新規で作った列・メジャーを表で表示すると以下となります。
メジャーと列の最大の差異は結果が計算されるタイミングになります。
上記でメジャーを使用し平均BMIを算出しましたが、列でもBMIの平均値を計算することは可能です。
表で出力しましたが、メジャーと列で同一の値が表示されています。
これだけ見ると列とメジャーどちらでもいいと思うかもしれませんが、スライサーによる項目の絞込みを行った場合に差異が発生します。
Dさんをスライサーで非表示に変更しました。
メジャーの平均BMIはDさんを除いた3人の平均値になっていますが、列は4人の時と同一の値が表示されています。
これはデータの計算タイミングが異なるため動作差異が発生しています。
メジャーはスライサーによるレポートの操作が行われたため表示対象となっている3人の平均を計算していますが、列はレポートの操作が行われても再計算が行われないため4人の平均をとる動作となっています。
纏めると、
フィルターによって結果の再計算を行いたい場合やレコードの平均などレコードを集計したい場合はメジャーを、
レコードごとに値を保持したい場合は列を使用するように使い分ける必要があります。
ご覧頂きありがとうございました。