Field parameters переключают поля. А что, если пользователю нужно крутить число — «а если рост +10%?», «показать топ-N, где N я задаю», «порог отсечения»? Для этого — disconnected-таблицы (несвязанные) и их частный случай, what-if параметры.
Идея: несвязанная таблица + SELECTEDVALUE
Ключ ко всему — таблица, не связанная ни с чем в модели. Пользователь выбирает в ней значение срезом, а мера читает выбор через SELECTEDVALUE. Связь не нужна: таблица существует только чтобы «поймать» выбор.
Выбранный рост = SELECTEDVALUE ( 'Рост %'[Рост %], 0 )
SELECTEDVALUE возвращает выбранное значение, а если не выбрано (или выбрано несколько) — значение по умолчанию (второй аргумент).
What-if параметр за минуту
Power BI собирает такую таблицу сам: Modeling → New parameter → Numeric range. Задаёте мин/макс/шаг — получаете:
- таблицу-параметр на
GENERATESERIES(ряд чисел); - меру, читающую выбор (
SELECTEDVALUE); - срез на странице.
Дальше пользуетесь выбором в расчётах:
Выручка прогноз =
VAR _Рост = SELECTEDVALUE ( 'Рост %'[Рост %], 0 )
RETURN
[Выручка] * ( 1 + _Рост )
Пользователь тянет ползунок «Рост %» — прогноз пересчитывается на лету.
What-if — это интерактивный «а что если»: сценарии роста, чувствительность, пороги. Пользователь сам подбирает число и сразу видит эффект, без правки модели.
Динамический Top-N
Классика: дать пользователю выбрать N в топ-N. Создаём числовой параметр N и используем его в ранжировании:
Топ-N продаж =
VAR _N = SELECTEDVALUE ( 'N'[N], 10 )
VAR _Rank = RANKX ( ALLSELECTED ( Товары[Товар] ), [Выручка],, DESC, DENSE )
RETURN
IF ( _Rank <= _N, [Выручка] )
Срез «N» от 5 до 50 — и пользователь сам решает, сколько позиций показать.
Disconnected-таблица как выбор сценария
Несвязанная таблица годится не только для чисел. Можно положить туда варианты сценария (текстом) и ветвиться:
Показатель =
SWITCH (
SELECTEDVALUE ( 'Сценарий'[Сценарий] ),
"Оптимистичный", [Выручка] * 1.1,
"Пессимистичный", [Выручка] * 0.9,
[Выручка]
)
Это «ручной» родственник field parameters — иногда удобнее, когда логика веток сложная.
Если параметр связать с фактом, он начнёт фильтровать данные, а нам нужно лишь «поймать выбор» и использовать его в формуле. Несвязанная таблица не фильтрует — SELECTEDVALUE просто читает, что выбрал пользователь. Это и есть весь трюк.
Создайте what-if параметр «Рост, %» (0–50, шаг 5) и меру Прогноз = [Выручка] * ( 1 + SELECTEDVALUE ( 'Рост'[Рост], 0 ) / 100 ). Что покажет Прогноз при выборе 10 % и без выбора?
Показать ответ
При 10 % — [Выручка] × 1,10 (на наборе: 9 826 588 × 1,1 = 10 809 246,8). Без выбора срабатывает значение по умолчанию 0 → Прогноз = [Выручка]. Если без выбора выходит пусто/ошибка — не задан второй аргумент SELECTEDVALUE (fallback), и при множественном выборе вернётся BLANK.
Что дальше
Динамику отчёта закрыли: переключатели полей и числовые сценарии. Дальше — SVG в Power BI: инлайн-графика прямо в ячейках через DAX. Следующий урок.