3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Power BI]スナップショットABC分析を実装する② ~TREATAS関数や中間テーブルを使うぞ編~

Posted at

はじめに

スネップショットABC分類についての続編です。

前の記事はこちら。

また、別記事にて静的ABC分類をまとめています。

元ネタはみんな大好き、DAX Patternsです。

ABC分類ごとに売上を表示する

前回記事の最後に年ごとにABC分類をクラス分けされているスナップショットテーブルを作成することができました。

image.png

ABC分類別に年ごとの売上を表示するマトリクスビジュアルを作成

マトリクスビジュアルを作成すると、全て同じ売上金額が表示されてしまい、期待した数字ではありません。
これは作成した 「年」 列が、日付テーブルとリレーションの関係がなくなってしまっているのが原因です。

image.png

TREATAS関数

この状態を解消するためには、TREATAS関数を使用します。

  • 指定する列の数は、テーブル式の列数と一致するとともに、同じ順序である必要があります。

  • テーブル式で返された値が列に存在しない場合、その値は無視されます。 たとえば、TREATAS({"Red", "Green", "Yellow"}, DimProduct[Color]) では、列 DimProduct[Color] に対して、3 つの値 "Red"、"Green"、および "Yellow" を使用してフィルターが設定されます。 DimProduct[Color] に "Yellow" が存在しない場合、有効なフィルター値は "Red" と "Green" になります。

  • テーブル間にリレーションシップが存在しない場合の使用に最適です。 関連するテーブル間に複数のリレーションシップがある場合は、代わりに USERELATIONSHIP を使用することを検討してください。

ABC by Yearテーブルは、下図の項目・順番で並んでいることを確認した上で、

image.png

下記のような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

このメジャーで算出した売上を使用してマトリクスビジュアルを作成すると、
期待通りの数字が出ていることが確認できます:smiley:

image.png

モデリングの工夫

TREATAS関数は強力な関数である一方、概念がわかりにくいところがあります:sweat_smile:
今度は中間テーブルを作成してDAX式をよりシンプルにしていく方法を模索します。

中間テーブルの作成

先程TREATAS関数で関連付けた 「年」 の中間テーブルを作成します。
年のみを抽出したテーブルを下記のDAXで記述していきます。

新しいテーブルを作成.dax
Years = DISTINCT ( '日付テーブル'[年_yyyy年] ) 

そして、リレーションをこのように設定します。

image.png

ここまで下準備をおこなっておけば、売上を算出するDAXは下記のようにシンプルになります。

ABC Sales Amount Opt = 
CALCULATE (
    [受注額],
    'ABC by Year'
)

このDAXを使用してマトリクスビューを作成すると、こちらも期待した数値になりました。

image.png

まとめ

TREATAS関数を使ったり、モデリングの工夫でDAXをシンプルにしたりと、スナップショットABC分類を読み解くのは勉強になるなぁ:relaxed:
業務に応用をきかせやすい考え方なので、マスターしたい:muscle:

3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?