Power BI パレート図・ABC分析

#パレート図・ABC分析
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/1e1564bb-3c3e-a622-e222-927f7affea2b.png)
グラフの見た目は[こちらの記事](https://www.cdatablog.jp/entry/2020/06/18/161435)、DAXメジャーは[こちらのウェビナー](https://info.microsoft.com/JA-AABD-WBNR-FY19-03Mar-14-BIAnalyticsADS-MCW0011832_02OnDemandRegistration-ForminBody.html)で紹介されたものを
組み合わせてみました。

この記事では3段階に分けて作っていきます。
[STEP１－シンプルなパレート図を作る](#step１パレート図)
[STEP２－パレート図を色分けしてABC分析する](#step２abc色分け)　
[STEP３－スライサーで色分けの境い目を変える](#step３スライサーで色分けの境界値を変える)

#作り方

##サンプルデータ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/a1c6f10e-475e-4a8d-8eba-0d2f2ac1ea33.png)

|商品名|金額|
|:---|---:|
|商品A|60|
|商品B|40|
|商品C|180|
|商品D|30|
|商品E|120|
|商品F|50|
|商品G|60|
|商品H|20|

##手順
###STEP１－パレート図
まず累積金額を計算するメジャーを作ります。

```text:新しいメジャー
累積金額 = CALCULATE(
    SUM('テーブル1'[金額]),
    FILTER(
        ALLSELECTED('テーブル1'),
        ISONORAFTER(
            'テーブル1'[金額],   MAX('テーブル1'[金額]),   ASC,
            'テーブル1'[商品名], MAX('テーブル1'[商品名]), DESC
        )
    )
)
```
`金額`の大きい商品から順に並べた累積を計算します。
金額が同じだったら`商品名`順です。

IsOnOrAfterがよくわからない人は、[こちらの記事](https://qiita.com/PowerBIxyz/items/fec8b60a049bb0589662) がオススメ。

次に 累積金額÷金額すべて の計算により比率(パレート線)を作ります。

```text:新しいメジャー
パレート線 = 
DIVIDE(
    [累積金額],
    CALCULATE(
        SUM('テーブル1'[金額]), 
        ALLSELECTED('テーブル1')
    )
)
```

折れ線グラフ＋縦棒グラフを選んで、このように項目セット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/125589c1-18b0-3ff8-1063-a2ea646553a9.png)

完成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/c17ae78a-a61b-16c3-7acf-1cd02f2e5def.png)

同じ金額の項目が２つあった場合は商品名の昇順に並びます（商品Aと商品Gなど）


###STEP２－ABC色分け
続いてABC分析のため、棒グラフを塗り分けます。

データの色 設定で *fx* を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/ee1590a0-fab2-9d6f-14cd-b8882e7fe8b5.png)
次に出てくる設定画面で
パレート線（＝金額の大きい順に累積した比率）が70%以内は赤、90%以内は黄、それ以上は青にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/8fa48db9-cd99-dfe1-5106-cfdafc812e0c.png)

完成！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/39e82c4e-9c5c-c360-0514-773c7df39883.png)

###STEP３－スライサーで色分けの境界値を変える
ABC分析は70%、90%を閾値とすることが多いようですが、
これをスライサーで変更できるように作り変えてみます。

まずパラメータを２つ作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/e1e71047-66ef-0833-31e9-85c1ee79eec5.png)
1つ目のパラメータ`para1`。AグループとBグループの境目。
最初は70%として、5% 単位で動かせる設定にしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/4b9aa870-72d0-1dc0-b284-33be32756fe9.png)
２つ目のパラメータ`para2`。 BグループとCグループの境目。
同じように作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/a971b218-0845-6ceb-397b-1d8c386bb49f.png)

次にパラメータと`パレート線`から、カラーコードを返すメジャーを作ります。

```text:新しいメジャー
ABC分析の色 = 
    IF( [パレート線] <= [para1 値],"#E66C37",   //赤のカラーコード
    IF( [パレート線] <= [para2 値],"#D9B300",   //黄のカラーコード
    "#118DFF"                                  //青のカラーコード
    )
    )
```

IF文のネストが深くて読みにくくなったらSWITCH文を使うとすっきりしますね。

```text:別の書き方
ABC分析の色 = 
    SWITCH( TRUE,
        [パレート線] <= [para1 値], "#E66C37",  //赤のカラーコード
        [パレート線] <= [para2 値], "#D9B300",  //黄のカラーコード
        "#118DFF"                              //青のカラーコード
    )
```
※この`ABC分析の色`メジャーが返すのは、カラーコードを表す**ただのテキスト**ですよ。

そして データの色 の設定画面にて、
書式設定基準を`ABC分析の色`が返す値にすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/dd6141df-0702-13d9-fc3a-43fc9e316c8a.png)

完成！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/45fbfad0-7fee-7830-5994-3d08b7781a38.png)
グラフ下に置いたpara1とpara2を動かすと境界値が変わります。

試しに 60% と 95% にしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239983/65d8899a-fca7-9b01-2c21-ed904a8eed2e.png)

以上です！

最後までお読みいただき
ありがとうございました。

#参考・関連情報

- [Power BI で実践！ビジネスでよく使うグラフの作り方 [ウェビナー]|大石 美沙|株式会社ジール](https://info.microsoft.com/JA-AABD-WBNR-FY19-03Mar-14-BIAnalyticsADS-MCW0011832_02OnDemandRegistration-ForminBody.html)

- [Power BIを使ってスマレジの売上データから売れ筋商品を分析する|CData Software Blog](https://www.cdatablog.jp/entry/2020/06/18/161435)

- [ISONORAFTER 関数ってのがありまして、その話|PowerBIxyz](https://qiita.com/PowerBIxyz/items/fec8b60a049bb0589662)

- [Power BIでパレート図を作成する|covao](https://qiita.com/covao/items/c1e68a462e15c114053e)