[Power BI] Field Parameter フィールドパラメーターのTips② 選択したメジャーを表示したい🎊

# はじめに

フィールドパラメーターのTipsを紹介しています。
第一弾の記事がこちらになります。こちらから読んでもらえると幸いです😁

https://qiita.com/hanaseleb/items/b55643696c3a523b8875

:::note
2022/06/25現在、フィールドパラメーターはプレビュー機能です。ご利用は計画的に👨‍🦰
:::

# 選択した項目を表示したい🤔

フィールドパラメーターで任意に項目を切り替えることができるようになるのは、超絶便利な半面、**いま何の指標が表示されているのか**わかりにくくなるということも考えられます。

通常よく用いられるのが**SELECTEDVALUE**というDAXです。

https://docs.microsoft.com/ja-jp/dax/selectedvalue-function

```
SelectedValue = SELECTEDVALUE('Date'[Year],"すべての年")
```

一般的に上記のようなDAXを用意してあげると、下の画像のような動きをつくることができます。
その名の通り、選択している項目を表示しています。

![2022-06-26_10-41-05.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/e37feb30-2d18-4886-d490-4d4475b84fb7.gif)

## フィールドパラメーターで同じことをすると・・

```
SELECTED Measure = SELECTEDVALUE('Chosen Measure'[Chosen Measure])
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/4275a72a-49b6-bf4d-056c-a96de88cf8de.png)

> MdxScript(Model) (18, 48) メジャー 'cso FactOnlineSales'[SELECTED Measure] での計算エラー: 列 [Chosen Measure] は複合キーの一部ですが、複合キーのすべての列が式またはその依存式に含まれているわけではありません。

というエラーメッセージが表示されます。この現象についてはSQLBIでも記事がかかれており、原因はフィールドパラメーターを設定するときに自動生成されるテーブルにおいて、スライサー名として扱われる列と、[~フィールド]として生成される列が**Group By Columns**としてデータモデルに定義されているからです。**Group By Columns**は複合キーとして動きます。

https://www.sqlbi.com/blog/marco/2022/06/11/using-selectedvalue-with-fields-parameters-in-power-bi/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/6ced9713-1713-4fdd-31aa-78dc87be6ef7.png)

## TabularEditorで確認

データモデルに定義されている・・ので、TabularEditorで確認をしてみます。
Power BI Dedsktopでサポートされていない項目なので、**Tools**から赤枠で囲った部分にチェックをつけます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/a2a8679a-4da5-1f82-afad-ddd2fbe8e5b6.png)

チェックをつけたら、フィールドパラメーターのカラムをクリック。プロパティウィンドウを下にスクロールしていくと、**Group By Columns**という項目があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/9c253617-5614-621b-2906-dbeb5e393f35.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/cff779bd-1e61-69da-8c07-5d0a49a0fb3e.png)

**Chosen Measure**列と**Chosen Measure フィールド**列が**Group By Columns**として設定されていることを確認することができます。

## **Group By Columns**の影響

この設定はExcelでサポートされていないため、フィールドパラメーターはExcelで使用することができません。外部ツールの「Analyze in Excel」などで検証してみても、期待した動作をしないことがわかります。

また、複合キーとして動作をするので、どちらかの列だけを使用して絞り込むようなDAXを書くとエラーが出ます。書くとすれば2つの列を含めなければいけないです。ということで、下記のようなメジャーはエラーを返してしまうわけです。

```
SELECTED Measure = SELECTEDVALUE('Chosen Measure'[Chosen Measure])
```

# 回避策①

https://qiita.com/hanaseleb/items/b55643696c3a523b8875

上記記事で紹介したように、パラメーター名をただコピーするだけのDAXで列を追加します。
このようにして作成した列は**Group By Columns**の設定がされていないので、単独で扱うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/1b308fd9-a37d-b0d7-2b2d-81f4f49a9b6a.png)

```DAX
Measure Name = SELECTEDVALUE('Chosen Measure2'[Measure Name])
```

この列をもとにすれば、いつもどおり`SELECTEDVALUE`関数を使用することができます🎉

# 回避策②

SQLBIの記事で解説されている通り、絞り込みに**Group By Columns**で設定されている２列を使用すれば同じ動作を期待することができます。詳しくはこちらの記事を読んでみてください。

https://www.sqlbi.com/blog/marco/2022/06/11/using-selectedvalue-with-fields-parameters-in-power-bi/

## 動作確認

ほらこの通り。

![2022-06-26_13-06-16.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/b516c05e-03a6-fadc-10ec-658d5b31ced7.gif)

# まとめ

フィールドパラメーターの内部で定義されている設定を理解することで、なぜExcelで使えないのか、なぜ`SELECTEDVALUE`が使えないのか少しだけわかりますよね。Power BIのどの機能も、それがそういった技術背景をもとに動いているのかを理解することが重要だなと改めて感じました～😄