Power BI マトリックスビジュアルの列幅を等幅で固定する

# はじめに
Power BI でレポートを作成する際に、マトリックスビジュアルを使うことはよくあるかと思います。しかし、Excel や PowerPoint は**表の列幅を等幅にする設定**があるのですが、Power BI のマトリックスビジュアルにはその設定が標準ではついていません。
列幅を等幅にする方法は、海外のサイトではよく紹介されており、知る人ぞ知るという Tips なのですが、日本語化された記事が見当たらなかったため、当記事でご紹介しようと思います。（ただし、今回の方法はマトリックスビジュアル限定で、テーブルビジュアルには適用できません。）

ちなみに、海外サイトだと以下のサイトあたりが参考になるかと思います。
[Set Fixed Column Width in Matrix in Power BI](https://www.youtube.com/watch?v=4ZtuifazEHk) (動画) 
[Automatically Set Equal Column Width in a Matrix Visual for Power BI - Goodly](https://goodly.co.in/equal-column-width-matrix-visual-power-bi/#:~:text=Power%20BI%20has%20no%20option%20to%20set%20the,columns%20and%20set%20the%20width%20to%20let%E2%80%99s%20say..10.)



なお、標準機能への搭載は、Power BI Ideas の以下のサイトに Idea が投稿されておりますので、投票数が上がれば製品チームの目に止まりやすいかと思います。
[Ability to "Apply Width to All Columns" of Table, Matrix & Matrix Preview](https://ideas.powerbi.com/ideas/idea/?ideaid=752b995d-630f-4ab7-9651-7d41e6465c2b)

# マトリックスビジュアルにおける列幅設定の問題
Power BI でマトリックスビジュアルを作成すると、列幅は、
- 列幅は自動で調整される（既定値がONでOFFに切り替えることも可能）
- その列に入っている値の最大サイズとなる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/4f7c0eae-0a0e-f946-e30a-a593756be8da.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/2cc599e4-85b7-7cb4-6eec-ed68449e4a8d.png)
※上図のマトリックスは、視覚的にわかりやすくするために、罫線及び垂直目盛り、水平目盛りをONにしています。

となります。

表として見やすくするために、列幅を等幅に設定したり、手動で列幅の数値を入れられればいいのですが、
マトリックスビジュアルにはその設定はなく、列幅を手動で調整したい場合は、自動調整をOFFに設定したうえで、**列幅をマウスでドラッグしながら微調整する**という非常にアナログな作業になってしまいます。
手動で1列ずつマウスで幅を合わせる必要があるため、列を狙ったサイズに合わせたり、**等幅に合わせることが非常に困難**です。

# 今回対処を行うマトリックスビジュアル

今回は、例として、曜日別時間帯別のツイート数を、マトリックスビジュアルで表現する場合の設定手順を掲載します。
曜日×時間帯の組み合わせをした場合、等幅にした方が見映えがよくなりますので、今回紹介する等幅設定がおすすめです。

- ディメンション：縦軸「曜日」、横軸「時間」
- ファクト：ツイート数

※今回対処を行うマトリックスビジュアル（再掲）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/2cc599e4-85b7-7cb4-6eec-ed68449e4a8d.png)

列によって、1～4桁の列幅になっており、少々見づらい感じになっています。
今後の拡張性も考え、**すべての時間帯を4桁の列幅にあらかじめ合わせる**設定を行います。

# マトリックスビジュアルにおける等幅設定手順

設定手順は以下の通りです。
1. 等幅設定用のメジャーを作る
2. マトリックスビジュアルの値を等幅設定用のメジャーへ入れ替える
3. 列幅の自動調整をOFFにする
4. 等幅設定用のメジャーを元のフィールド値へ入れ替える


## 1. 等幅設定用のメジャーを作る
以下の通り、表示したい桁数の値が入ったメジャーを作成します。
固定値で "0000" と記載しても良いですし、DAX関数のREPTを使っても良いです。

```
等幅設定用メジャー = "0000"
```

```
等幅設定用メジャー = REPT("0", 4)
```

※DAX関数 REPT はテキストや列の値を指定した回数繰り返した値を返す関数です。以下を参照ください。
[DAX関数 - REPT](https://learn.microsoft.com/ja-jp/dax/rept-function-dax)

## 2. マトリックスビジュアルの値を等幅設定用のメジャーへ入れ替える
マトリックスビジュアルの値から「ツイート数」を取り除き、1.で作成した「等幅設定用メジャー」を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/bb676303-930e-c91a-861f-ea2df9810b87.png)
設定すると、以下のようなビジュアルとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/82d27e76-4501-80e5-5557-42b3f10518fc.png)

## 3. 列幅の自動調整をOFFにする
マトリックスビジュアルの書式設定で、「列見出し」－＞「オプション」－＞「幅の自動サイズ調整」を OFF にします。
これによって、"0000"で設定された列幅が固定されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/6817bede-6f20-a62b-73f0-0ab06635ec22.png)

## 4. 等幅設定用のメジャーを元のフィールド値へ入れ替える
列幅が等幅で固定されたので、ここで改めて元のフィールドを元の値に戻します。(2.の作業の逆)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/351f4380-f629-8a11-788e-4f08ad33e9f3.png)
設定すると、以下のような4桁のサイズの等幅の列のマトリックスビジュアルとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/847fe7e1-251b-552f-1466-3ff22e5285b4.png)

# まとめ
こちらの Tips を使えば、簡単にマトリックスビジュアルの列幅を指定したサイズで等幅に設定することが可能です。
本来であれば、標準機能として搭載されることが望まれますが、搭載されるまではこちらの Tips で乗り切っていただければと思います。