はじめに
フィールドパラメーターのTipsを紹介しています。
第一弾の記事がこちらになります。こちらから読んでもらえると幸いです😁
2022/06/25現在、フィールドパラメーターはプレビュー機能です。ご利用は計画的に👨🦰
選択した項目を表示したい🤔
フィールドパラメーターで任意に項目を切り替えることができるようになるのは、超絶便利な半面、いま何の指標が表示されているのかわかりにくくなるということも考えられます。
通常よく用いられるのがSELECTEDVALUEというDAXです。
SelectedValue = SELECTEDVALUE('Date'[Year],"すべての年")
一般的に上記のようなDAXを用意してあげると、下の画像のような動きをつくることができます。
その名の通り、選択している項目を表示しています。
フィールドパラメーターで同じことをすると・・
SELECTED Measure = SELECTEDVALUE('Chosen Measure'[Chosen Measure])
MdxScript(Model) (18, 48) メジャー 'cso FactOnlineSales'[SELECTED Measure] での計算エラー: 列 [Chosen Measure] は複合キーの一部ですが、複合キーのすべての列が式またはその依存式に含まれているわけではありません。
というエラーメッセージが表示されます。この現象についてはSQLBIでも記事がかかれており、原因はフィールドパラメーターを設定するときに自動生成されるテーブルにおいて、スライサー名として扱われる列と、[~フィールド]として生成される列がGroup By Columnsとしてデータモデルに定義されているからです。Group By Columnsは複合キーとして動きます。
TabularEditorで確認
データモデルに定義されている・・ので、TabularEditorで確認をしてみます。
Power BI Dedsktopでサポートされていない項目なので、Toolsから赤枠で囲った部分にチェックをつけます。
チェックをつけたら、フィールドパラメーターのカラムをクリック。プロパティウィンドウを下にスクロールしていくと、Group By Columnsという項目があります。
Chosen Measure列とChosen Measure フィールド列がGroup By Columnsとして設定されていることを確認することができます。
Group By Columnsの影響
この設定はExcelでサポートされていないため、フィールドパラメーターはExcelで使用することができません。外部ツールの「Analyze in Excel」などで検証してみても、期待した動作をしないことがわかります。
また、複合キーとして動作をするので、どちらかの列だけを使用して絞り込むようなDAXを書くとエラーが出ます。書くとすれば2つの列を含めなければいけないです。ということで、下記のようなメジャーはエラーを返してしまうわけです。
SELECTED Measure = SELECTEDVALUE('Chosen Measure'[Chosen Measure])
回避策①
上記記事で紹介したように、パラメーター名をただコピーするだけのDAXで列を追加します。
このようにして作成した列はGroup By Columnsの設定がされていないので、単独で扱うことができます。
Measure Name = SELECTEDVALUE('Chosen Measure2'[Measure Name])
この列をもとにすれば、いつもどおりSELECTEDVALUE
関数を使用することができます🎉
回避策②
SQLBIの記事で解説されている通り、絞り込みにGroup By Columnsで設定されている2列を使用すれば同じ動作を期待することができます。詳しくはこちらの記事を読んでみてください。
動作確認
ほらこの通り。
まとめ
フィールドパラメーターの内部で定義されている設定を理解することで、なぜExcelで使えないのか、なぜSELECTEDVALUE
が使えないのか少しだけわかりますよね。Power BIのどの機能も、それがそういった技術背景をもとに動いているのかを理解することが重要だなと改めて感じました~😄