こんにちは、チュニです。
記念すべき1本目は、愛着のある Power BI の話題を。
テーマは 「数値範囲パラメータで作った単一値スライサーが勝手に値を変える問題の原因と対処法」 です。
ニッチですが、同じ現象で悩んでいる方の助けになればうれしいです。
はじめに
Power BI でダッシュボードを作るとき、「ユーザーがリファレンスラインを自由に動かせるグラフ」をデザインしたいことがあります。
たとえば、以下のような上がりすぎても下がりすぎても困るような指標をモニタリングしたいとき、範囲を指定するイメージです。
これは次の手順で簡単に作れます。
- モデリング → 新しいパラメーター → 数値範囲
- 名前・データ型・最小/最大値を設定(「このページにスライサーを追加する」に✔)
- 作成された「パラメーターの値」を【視覚化】ペインの「分析」にあるY軸定数線へ追加
2で作成されたスライサーの設定がデフォルトで「単一値」になっているのですが、この単一値スライサーには思わぬ落とし穴が…。
入力した値が勝手に近い別の値に変わるんです。
- 1600000 と打つと → 1500500
- 10000000 と打つと → 999000
この現象は公式コミュニティや Reddit でも報告されています。
🔗 Fabric Community: Generateseries Not Working
🔗 Reddit: Parameter Single Value Issue(規約上、URLは記載しませんが検索すれば出てきます)
なぜ起きるのか?どう対処するのか?を掘り下げていきます。
原因調査
数値範囲パラメータの裏側
パラメータ作成時、Power BI は次の2つを生成します。
-
テーブル形式の配列:
パラメーター = GENERATESERIES(最小, 最大, ステップ) -
選択値メジャー:
パラメーターの値 = SELECTEDVALUE('パラメーター'[値])
この「単一値スライサー」は UI では一見、変数を受け付ける方式に見えますが、内部はリスト選択になっているのです。
スライサー内のリストを観察
「テーブルとして表示」を使うと、スライサーの裏で保持しているリストが見えます。
GENERATESERIES関数の引数をステップ数が多くなるように変更すると(例: GENERATESERIES(1,10000,1)など)、リストの値が不連続になります。
このため、リストに存在しない値を入れると最も近い値に丸められるのです。![[Power BI]数値範囲のパラメータバグ_調査.gif.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F4134352%2F8ebedf50-9575-4945-ae71-fa424c6e844f.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d8bad381eee0e1c90dc59610e032479c)
サンプリングの仕様
コミュニティの議論ではこの制約が指摘されています。(私も実験しました。)
“パラメータのユニーク値は1000件まで。それ以上は均等にサンプリングされる。”
また、浮動小数点精度の問題も一因です。
Power BI は内部的に IEEE 754 (Double) を使用しており、小数点以下に微妙な誤差が発生します。
他スタイルとの比較
スライサーを「指定の値の間」や「以上・以下」に切り替えると…
リストにない値でも丸められずに入力可能です。
![[Power BI]数値範囲のパラメータバグ_調査ほかのスライサー.gif.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F4134352%2F62aa46a7-c687-4029-8c27-c5ce208067c5.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8cd9b0bef8ffc96c9bac80caf30aef71)
対処法
方法1: スライサースタイル変更
上記のほかのスライサースタイルの特性を利用して対処します。
メジャー_リファレンスライン_上限 = MIN('リファレンスライン_上限'[リファレンスライン_上限])
方法2: Power Apps Visual の活用
さらに柔軟にしたい場合は Power Apps for Power BI を使って本物の入力フォームを作るといった方法もあるようです。
これについては別記事で紹介したいです。
おわりに
今回紹介したのは、Power BI の「パラメータで作成した単一値スライサー」の意外な仕様と対処法でした。
この回避策は少しゴリ押し感がありますが、現場ではこうした小技が活躍しますので、ぜひ知っておきましょう。

![[Power BI]数値範囲のパラメータバグ_修正前.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F4134352%2F53e74481-0ba3-4b7c-852c-d63bace02699.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=622d005bc1b0b212c1d8dd34fd6710b3)




![[Power BI]数値範囲のパラメータバグ_修正後.gif.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F4134352%2F34b00728-e8ed-44ac-804b-a8f15e063c7e.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8c5ecab441257ec05b5ea70df4fa985b)