Power BIのカードとKPIを比較してみた

この記事は、**Microsoft Power BI Advent Calendar 2024** 12月17日担当分の記事です。

https://qiita.com/advent-calendar/2024/powerbi

# 1. はじめに
## 1-1. カード vs KPI
以下のビジュアルで**メトリック**を作成しました。
* カード
* KPI

![カードvsKPI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491213/af15f25e-69ff-2f6a-1147-d518a236c569.png)

ご覧のように**見た目は同じ**です。
どちらがよいか比較してみます。

## 1-2. やりたいこと
[Introducing the 3-30-300 rule for better reports](https://www.sqlbi.com/articles/introducing-the-3-30-300-rule-for-better-reports/)を参考にして、**3秒で把握できる メトリック** を作りたい。

前年度に比べて今年度は
* 良くなったのか？
* 悪くなったのか？
* 変わらないのか？

ひと目でわかるようにしたい。

色分けは、テーマの**センチメントカラー**
* 肯定的
* 否定的
* ニュートラル

を使いたい。

最後は、ダッシュボードにピン留めしたい。

![テーマのカスタマイズ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491213/0b5686f9-5d91-8c80-a7cd-195285fefea3.png)

# 2. ビジュアルの作成
## 2-1. サンプルデータ準備
1. サンプルデータ`financials`をダウンロード
1. ファクトテーブル'FactFinancials'を作成
1. 各ディメンションテーブル、日付テーブル'DimCalendar'を作成
1. スタースキーマにする
1. 以下のDAXメジャーを作成
```:売上（ベースメジャー）
Total Sales =
SUM(　FactFinancials{ Sales} )
```
```:前年度売上
Sales LY =
CALCULATE (
    [Total Sales],
    SAMEPERIODLASTYEAR ( 'DimCalendar'[Date] )
)
```
```:売上前年比（メジャー）書式：ダイナミック
Sales YoY =
DIVIDE (
    [Total Sales] - [Sales LY],
    [Sales LY]
)
```
```:売上前年比（書式）
VAR _UpArrow = UNICHAR ( 8599 )
VAR _DownArrow = UNICHAR ( 8600 )
VAR _RightArrow = UNICHAR ( 8594 )
RETURN
    _UpArrow & " #,##0.0%" & ";" & // Positive numbers
    _DownArrow & " #,##0.0%" & ";" & // Negative numbers
    _RightArrow & " #,##0.0%" // Zero
```

![リレーションシップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491213/65205c25-8594-d736-850f-eb5dd98f431b.png)


## 2-2. カードビジュアルの作成
テーマの **センチメントカラー**を指定したい場合、以下のDAXメジャーを作成します。
```:売上の前年比の色
Sales YoY Color =
SWITCH (
    TRUE (),
    [Sales YoY] > 0, "good",
    [Sales YoY] < 0, "bad",
    [Sales YoY] = 0, "neutral"
)
```
ビルドペイン＞フィールドに`Sales YoY`を設定します。
書式ペイン＞ビジュアル＞吹き出しの値＞カラー＞スタイルの書式設定に`フィールド値`、基準にするフィールドに`Sales YoY Color`を設定します。

![SalesYoYColorの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491213/1ad8e319-0fb2-d675-cc91-1ecbebf919f8.png)


## 2-3. KPIビジュアルの作成
**センチメントカラーの中間色のしきい値**を指定するために、以下のDAXメジャーを作成します。
```:中間色の下限しきい値
KPI Lower = 0
```
```:中間色の上限しきい値
KPI Upper = 0
```
前年度と今年度の差が0＝中間色としたい場合、**2つとも0を設定したらよいことがわかりました。** **概ね横ばい＝ゼロ**としたいのでRound()で値を丸め込んでおきましょう。

![中間色0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491213/a40bd471-4761-6f7a-59d9-cebf63ba2be0.png)

ビルドペイン＞値に`Sales YoY`、トレンド軸に日付テーブルの年度列`FiscalYear`、ターゲットに`KPI Lower`と`KPI Upper`を設定します。**ターゲットの設定が1つだと中間色が省かれて、正しい色と正しくない色の２色になります。**
書式ペイン＞トレンド軸＞方向 で`高いと良好`と`低いと良好`を**簡単に切り替える**ことができて便利です。例えば、COGS(売上原価)の場合、`低いと良好`に選択することで正しい色と正しくない色を入れ替えてくれます。

![KPIの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491213/58170af8-2cfc-938e-d2de-b44b977e0696.png)

# 3. まとめ
## 3-1. どちらがよい？

::: note warn
どちらも理解した上で選択すればよい
:::

* KPI：センチメントカラーがデフォルト
* KPI：`高いと良好`or`低いと良好`の入れ替え機能がある
* KPI：中間色を使う場合はターゲットを２つ設定する
* カード：DAXメジャーでセンチメントカラーとターゲットと`高いと良好`or`低いと良好`を全て指定する
* カード：ダッシュボードにピン留めをすると **色が反映されない**＿|￣|○
* 新しいカード：ダッシュボードにピン留めすると、色は反映されるが**矢印が反映されない**＿|￣|○

::: note
今回はセンチメントカラーと矢印を使用して、ダッシュボードにピン留めするメトリックを作成するために、**KPI** を選択しました。
:::

## 3-2. 完成イメージ

![完成したレポート2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491213/75d80930-d82c-eca5-4738-6dc535988930.png)

# 参考
https://data-goblins.com/power-bi/kpi-templates

https://workout-wednesday.com/pbi-2024-w26/

https://qiita.com/AkioSaitoh/items/49a7f5c0f57208a1b0bb