Power BI 棒グラフの定数線

棒グラフに定数線を入れたい場合、レポート作成者がビジュアルの書式設定の一部として定数線を入れるのが基本的な使い方となります。この記事では、「月別売上の縦棒グラフで予算の値を定数線で表示する」というお題について、基本の設定方法からユーザー入力を反映させる方法まで、4種類の方法を紹介します。

## ① 基本の定数線
レポート作成者がビジュアルの書式設定で定数線を設定します。定数線はその名前の通り、グラフの中で常に一定の値である線となります。

https://learn.microsoft.com/ja-jp/power-bi/visuals/power-bi-visualization-column-chart-format-settings?tabs=powerbi-desktop#reference-line

ビジュアルの書式設定で、[参照行] を開いて [+ 行の追加] をクリックし [型] に「定数線」を指定します。
さらに [線] の中の [値] に予算の値を手入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/b106f579-3b07-4d84-83cd-f7ba64081bd6.png)

::: note warn
細かい点ですが、定数線の [型] について、スクリーンショットで「Y軸の定数線」となっているものがありますが、これは棒と折れ線の組合せグラフの場合です。縦棒グラフでは「定数線」になります。
:::

## ② メジャーや列の値を使用したい場合
### ファクトのメジャー
上記と同様に定数線を追加したら、[線] の中の **[値] の右側にある [fx] ボタン** をクリックします。
[基準にするフィールド] として、使いたいメジャーを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/7d181149-58c3-43ea-a849-10737ac31042.png)

あくまで定数線なので、すべての行コンテキストは無視されます。つまり、**毎月異なる予算が設定されていても、月別の値では表示されません**。
サンプルのモデルでは、BudgetAmt は予算を SUM するメジャーなので、すべての年月の予算の合計値が定数線として表示されてしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/8e58a84c-3d42-47b2-a645-40e1cb11fa6c.png)

### ディメンションの列
予算が X軸に指定されている列と同じ日付テーブル (ディメンション) 側に用意されていれば、思った通りに表示できます。ただし、要約処理 (集計方法) を「平均」にするのがポイントです (予算の値が月ごとに異なる場合、それらは平均されます)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/d95209bc-4e0a-4886-833e-1b5d7b207d3c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/f6881556-aab1-4e9c-923a-435bbd7e8646.png)

## ③ 月別に異なる値をもつメジャーや列を表示する場合
もし月別に異なる予算を表示したい場合は、定数線ではできないので、グラフの種類を変えて対応します。棒と折れ線の組合せグラフに変更して、折れ線の値に予算を指定します。
その際、ビジュアルの書式設定で [行] → [線] → [補間の種類] を「ステップ」にすると下図のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/908ee89b-2fbe-4495-9aad-b0a2674e71a9.png)

## ④ 毎月一定だけど、その数字を参照者に指定させたい場合
これは定数線を引く要件としては少ないかもしれませんが、例としてご紹介します。
参照者に数値データを指定させる方法として「パラメーター」があります。

https://learn.microsoft.com/ja-jp/power-bi/transform-model/desktop-what-if

この機能を使用すると、ユーザーがスライドバーで数値を指定できるようになり、その値をビジュアルやメジャーの計算に利用できます。

1. Power BI Desktop で、[モデリング] → [新しいパラメーター] → [数値範囲] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/af7bf0a8-3769-4164-a975-327d34efeb9e.png)

1. 	パラメーターの内容を入力します。最小値、最大値、増分、既定はスライサー (スライド バー) の設定に関わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/76a0688f-239b-4b70-aaa4-810514d68454.png)

    :::note warn
    増分の値は、桁数が大きい場合あまり細かく設定することはできません。なぜなら、パラメーターには一意の値を 1,000 個までしか設定できないからです。 パラメーターに設定されている一意の値が 1,000 個を超えている場合、パラメーター値は均等にサンプリングされます。
    つまり、最小値が「1」、最大値が「10,000」の場合、増分は「10」より小さくすることはできません。(スライサーに手入力で一の位を入力しても、近い値にされます。)
    :::

    <details><summary>数値範囲パラメーターのしくみ</summary>
    最大1,000行の計算テーブルが作成されます。
    
    ``` 予算 = GENERATESERIES( 最小値, 最大値, 増分 ) ``` 
    [DAX GENERATESERIES](https://learn.microsoft.com/ja-jp/dax/generateseries-function-dax)
    
    数値範囲パラメーターは最大1,000行なので、設定された増分が細かすぎる場合は自動で調整されます。
    </details>

1. 作成すると、[データ] ペインにて計算テーブルと列とメジャーが作成されているのが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/3dbf38f3-b504-474f-8864-3b99f255f3fd.png)

1. 定数線の値の [fx] ボタンを押して、[基準にするフィールド] に作成された「予算 の値」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/e1ebc0cf-7cca-43a3-83f2-7630c393dfed.png)

1. 書式を整えるとこんな仕上がりになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/9251aad4-85e0-4e63-84b8-adb9928dd0a7.png)

スライドバーを操作したり、直接値を入力してスライサーの値を変更すると、指定した値に合わせて定数線の位置が変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/6c7a0a59-1a45-4e73-a546-93cb09f5769a.png)

## まとめ
棒グラフに定数線を入れる方法を案内しました。
元々パラメーターは、為替や税率などの変更影響をシミュレートするような What-if 分析用として用意されている機能です。本来の用途でも、ぜひ使ってみてください。