[Power BI]スナップショットABC分析を実装する② ~TREATAS関数や中間テーブルを使うぞ編~
はじめに
スネップショットABC分類についての続編です。
前の記事はこちら。
また、別記事にて静的ABC分類をまとめています。
元ネタはみんな大好き、DAX Patternsです。
ABC分類ごとに売上を表示する
前回記事の最後に年ごとにABC分類をクラス分けされているスナップショットテーブルを作成することができました。
ABC分類別に年ごとの売上を表示するマトリクスビジュアルを作成
マトリクスビジュアルを作成すると、全て同じ売上金額が表示されてしまい、期待した数字ではありません。
これは作成した 「年」 列が、日付テーブルとリレーションの関係がなくなってしまっているのが原因です。
TREATAS関数
この状態を解消するためには、TREATAS
関数を使用します。
-
指定する列の数は、テーブル式の列数と一致するとともに、同じ順序である必要があります。
-
テーブル式で返された値が列に存在しない場合、その値は無視されます。 たとえば、TREATAS({"Red", "Green", "Yellow"}, DimProduct[Color]) では、列 DimProduct[Color] に対して、3 つの値 "Red"、"Green"、および "Yellow" を使用してフィルターが設定されます。 DimProduct[Color] に "Yellow" が存在しない場合、有効なフィルター値は "Red" と "Green" になります。
-
テーブル間にリレーションシップが存在しない場合の使用に最適です。 関連するテーブル間に複数のリレーションシップがある場合は、代わりに USERELATIONSHIP を使用することを検討してください。
ABC by Year
テーブルは、下図の項目・順番で並んでいることを確認した上で、
下記のようなDAX式を記述します。
ABC Sales Amount =
var RemapFilterABC =
TREATAS(
'ABC by Year',
'Products'[商品ID],
'日付テーブル'[年_yyyy年],
'ABC by Year'[ABC Class]
)
VAR Result =
CALCULATE (
[受注額],
KEEPFILTERS ( RemapFilterABC )
)
RETURN
Result
このメジャーで算出した売上を使用してマトリクスビジュアルを作成すると、
期待通りの数字が出ていることが確認できます
モデリングの工夫
TREATAS
関数は強力な関数である一方、概念がわかりにくいところがあります
今度は中間テーブルを作成してDAX式をよりシンプルにしていく方法を模索します。
中間テーブルの作成
先程TREATAS
関数で関連付けた 「年」 の中間テーブルを作成します。
年のみを抽出したテーブルを下記のDAXで記述していきます。
Years = DISTINCT ( '日付テーブル'[年_yyyy年] )
そして、リレーションをこのように設定します。
ここまで下準備をおこなっておけば、売上を算出するDAXは下記のようにシンプルになります。
ABC Sales Amount Opt =
CALCULATE (
[受注額],
'ABC by Year'
)
このDAXを使用してマトリクスビューを作成すると、こちらも期待した数値になりました。
まとめ
TREATAS関数を使ったり、モデリングの工夫でDAXをシンプルにしたりと、スナップショットABC分類を読み解くのは勉強になるなぁ
業務に応用をきかせやすい考え方なので、マスターしたい
Author And Source
この問題について([Power BI]スナップショットABC分析を実装する② ~TREATAS関数や中間テーブルを使うぞ編~), 我々は、より多くの情報をここで見つけました https://qiita.com/hanaseleb/items/49fe30e107b0936ad156著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .