[Power BI Tips] Power BI で信号機が作りたい

# BI ってさ、パッと見てわかりたいじゃん？
BI って聞くと、表やグラフに凝ってしまって、かっけえやつ！が欲しいっていう人、めっちゃ多いんですが、何よりも大事なのって、単純でわかりやすいことだと思うんです。

![murano_dashboard.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/e042797e-7a6e-831a-a6c0-e63cf5b18f16.jpeg)
ダッシュボードってのがありますが、クルマが一番いい例で、パッと見てわからなければ、事故になっちゃうわけです。
で、お仕事の場合だと、売上とか受注件数とか、何らかの KPI があって、そこにあとどれくらいで達するのか？みたいなことが大事ですよね。

もっと言うと

- 「異常があるのか？」
- 「順調なのか？」
- 「このままで大丈夫か？」

だいたいこういうことが知りたいわけです。
で、それを最も簡単に表すのは「信号機」なわけです。

Power BI にはカスタムビジュアルという、標準の表やグラフにはないビジュアルが無償で提供されていますが（一部有償）そこにも信号機ってないんですよ。
でも、欲しい！信号機。ないものは作るしかない。というわけで、作ってみました。開発は不要です。

↓↓↓ こんな感じです ↓↓↓
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Power BI で信号の作り方を整理した。こんな感じで説明できそう😎<br><br>This is a signal sample for Power BI Report. This signal is not a custom visual, but made of a TextBox and three Buttons. Color Control is used by measures with DAX functions.<br><br>Please try it😄 <a href="https://twitter.com/hashtag/PowerBI?src=hash&amp;ref_src=twsrc%5Etfw">#PowerBI</a> <a href="https://twitter.com/hashtag/Signals?src=hash&amp;ref_src=twsrc%5Etfw">#Signals</a> <a href="https://twitter.com/hashtag/PBIJP?src=hash&amp;ref_src=twsrc%5Etfw">#PBIJP</a> <a href="https://t.co/HjwOHJqXj9">pic.twitter.com/HjwOHJqXj9</a></p>&mdash; Yugo Shimizu | Power BI MVP (@yugoes1021) <a href="https://twitter.com/yugoes1021/status/1282572443572293632?ref_src=twsrc%5Etfw">July 13, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

同じ方法で実際に使ってるレポートがこれです。
レポートへのアクセス ⇒ https://bit.ly/PBI-Tokyo-Covid19
![TokyoCovid-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/8e3f9c2c-c736-ab5b-e4a5-db96de969a08.png)

# 作り方
難しくありません。Power BI Desktop でレポートを普通に作っている人なら、↑ のツイートを見ただけでできちゃうかもしれません。
![Signal_details.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/8f2984e1-aff5-6fc4-118d-16226d4a0bf2.png)

## 1. テキストボックスを置いて、背景と罫線に同じ色を指定して、罫線は丸くします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/dd6ded0e-d8c5-4f1f-b322-8f58a882a755.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/cb5def17-3bd1-e513-8a1d-45b9701d065b.png)
こうすると、以下の様になります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/e4a8c8ad-9886-c20c-a7df-eff39652f762.png)

## 2. 何らかの値が必要なので、とりあえず [新しいパラメーター] でやります
もし既に信号の色を制御するのに使える値（売上とか受注件数とか）があるなら、この手順は不要です。
試しにやってみたいというかたのみこの手順を実行してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/92b9dc70-77ab-c5e7-f0c6-8bfc43d7e72b.png)
What-if パラメーターという画面が出てくるので以下の様に入力します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/a6407a05-ca42-ae37-d0a7-d44fba20d449.png)
30 までにする理由は

青 : 0 - 10
黄 : 11 - 20
赤 : 21 - 30

と３つに分けたいからです。他の値でも構いません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/d64816c1-efe2-e187-622d-eeff2285a519.png)
そうするとこんなテーブルが追加されます。日本語環境だと名称が異なるかもしれませんが気にしないでください。

## 3. メジャーを全部で6つ追加します
```DAX:Signal_Blue.dax
Signal_Blue = 
SWITCH(
    TRUE(),
    [Parameter Value] <= 10, "#0F80E7",
    "#000000"
)
```
```DAX:Sinal_Yellow.dax
Signal_Yellow = 
SWITCH(
    TRUE(),
    [Parameter Value] > 10 && [Parameter Value] <= 20, "#FFB300",
    "#000000"
)
```
```DAX:Sinal_Red.dax
Signal_Red = 
SWITCH(
    TRUE(),
    [Parameter Value] > 20, "#FF0006",
    "#000000"
)
```

内容は難しくありません。
Parameter_Value というメジャーの値が

10 以下 ⇒ #0F80E7
10 より大きく、20以下 ⇒ #FFB300
20 より大きい ⇒ #FF0006

そしていずれの場合も、上記の条件に当てはまらないのであれば、#000000 つまり黒というカラーコードを返してます。
で、これの逆パターンも作っておきます

```DAX:Sinal_Blue_Reverse.dax
Signal_Blue_Reverse = 
SWITCH(
    TRUE(),
    [Parameter Value] > 20, "#0F80E7",
    "#000000"
)
```
```DAX:Sinal_Yellow_Reverse.dax
Signal_Yellow_Reverse = 
SWITCH(
    TRUE(),
    [Parameter Value] > 10 && [Parameter Value] <= 20, "#FFB300",
    "#000000"
)
```
```DAX:Sinal_Red_Reverse.dax
Signal_Red_Reverse = 
SWITCH(
    TRUE(),
    [Parameter Value] <= 10, "#FF0006",
    "#000000"
)
```

これでライトを表すボタンに指定するメジャーができあがりました。

## 4. ライトの部分はボタンです
次にボタンをまずひとつ置きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/45437349-11fe-4364-db50-ead4fb7b2d45.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/db502af4-8610-088b-59b7-0428b864990a.png)
ボタンを置いたら、[アウトライン] と [フィル] のみ オン にしてください。（ビジュアルヘッダーはオンでもオフでもどっちでもいいです。迷ったらオフにしてください）
まずは [アウトライン] を開いて、[輪郭の色] の [fx] をクリックしてください。
開いた画面で以下の様に [書式設定基準] をフィールド値、[フィールドに基づく] を Signal_Blue にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/dfb2a4c0-575c-c25d-a15f-da787dab3b18.png)
次に [フィル] を開いて、[塗りつぶしの色] の [fx] をクリックしてください。
開いた画面で以下の様に [書式設定基準] をフィールド値、[フィールドに基づく] を Signal_Blue にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/e7a7a16f-4f6a-0695-94ec-05744d670ccd.png)

おそらく現時点でこんな感じで青い長方形になってるはずです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/ebea7d5c-cc37-5bf4-8d8f-b3d4a38cf099.png)
この状態からどうやって丸くするか？
もう一度 [アウトライン] を開いて [線を丸める] を 30px にしてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/274cfd50-0ae9-a84b-d0af-3923beef4457.png)
そうするとこうなります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/75a7c23f-bd04-d8d7-750c-e7350e085f02.png)
あとはこれの幅を縮めます
[全般] の [幅] を 40 にしてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/3e7eb058-e494-baf2-9c0e-dd9097c62bd2.png)
そうすると、ほら！丸くなったでしょ😁⁉
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/08fe4a89-4eed-ceb1-a830-6607db92dcbf.png)

ここまでできたら、これを２つコピーして、指定するメジャーを Signal_Red と Signal_Yellow にすれば、信号機のライトは完成です。

## 5. 最初に作ったテキストボックスに重ねて位置を調整
テキストボックスに重ねて、位置を調整すればよいのですが、ピッタリ合わせたいですよね？
大丈夫です。Power BI のリボンには PowerPoint と同様、[配置] があって、オブジェクトを揃えることが可能です。
これについては操作方法を説明するのは不要ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/7ed80723-0bb9-e0e8-3335-2273af22fe1f.png)
私は3つのライトを Ctrl を押しながら選択して、[左右に整列] して [上下中央揃え] をした後、3つのライトをグループ化しました。
次にグループ化した3つのライトと先に作ったテキストボックスを Ctrl を押しながら選択して、[中央揃え] & [上下中央揃え] でピッタリ調整しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/3460250a-d2e2-e08c-33e6-dbf0a82de47e.png)

## 6. 最初に紹介した動画のように再生するには
見せるためにここは Play Axis というカスタムビジュアルを使用してます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/2d2ba888-75d8-d041-29d2-db17419bddcb.png)
Play Axis を画面に置いて、[Parameter] を指定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/2b72e2aa-ef8a-3b67-1113-f92481dc2a25.png)
あとは再生ボタンを押すと、信号が 10 刻みで変わるはずです。

## 7. 逆に 赤 ⇒ 黄 ⇒ 青 としたいなら
～_Reverse というメジャーを作っておいたので、信号機を丸ごとコピーして、各ライトに指定しているメジャーを ～_Reverse にすべて変えてください。
そうすれば、 赤 ⇒ 黄 ⇒ 青 と変化する信号機が作れます。

# まとめ＆おわり
いかがでしたでしょうか？
たぶん今回の内容は、応用範囲は非常に広く、業務で使用するレポートにもバッチリ使えるはずです。
ぜひ、いろいろと工夫＆応用してみてください！！
楽しいものが作れたら、教えてくださいネ😁

最後まで読んでいただきありがとうございました。また気が向いたら、Power BI Tips シリーズ書きます。
皆様からのリクエスト、お待ちしております。

何かリクエストがあれば、以下までー🤗
Twitter: https://twitter.com/yugoes1021
Facebook: https://www.facebook.com/yugoes1021
LinkedIn: https://www.linkedin.com/in/yugoes1021/