Поделиться через


Избегайте преобразования BLANK в значения

В качестве моделиатора данных при написании выражений мер могут возникнуть случаи, когда не удается вернуть понятное значение. В таких случаях вы можете испытывать искушение вернуть значение, например, ноль. Мы рекомендуем тщательно определить, является ли этот дизайн эффективным и практическим.

Рассмотрим следующее определение меры, в которой явно преобразуются результаты BLANK в ноль.

Sales (No Blank) =
IF(
    ISBLANK([Sales]),
    0,
    [Sales]
)

Рассмотрим другое определение меры, которое также преобразует BLANK результаты в ноль.

Profit Margin =
DIVIDE([Profit], [Sales], 0)

Функция DIVIDE делит меру прибыли на меру продаж. Если результат равен нулю или BLANK, третий аргумент — альтернативный результат (который является необязательным) возвращается. В этом примере, так как нуль передается в качестве альтернативного результата, мера гарантируется всегда возвращать значение.

Эти меры неэффективны и приводят к плохим конструкциям отчетов.

Когда они добавляются в визуализацию отчета, Power BI пытается получить все группировки в контексте фильтра. Оценка и получение больших результатов запросов часто приводит к медленному формированию отчетов. Каждый пример меры эффективно преобразует разреженное вычисление в плотное, заставляя Power BI использовать больше памяти, чем необходимо.

Кроме того, слишком большое количество группировок часто перегружает пользователей отчета.

Давайте посмотрим, что происходит, когда показатель прибыльности добавляется в визуальный элемент таблицы с группировкой по клиентам.

снимок экрана Power BI Desktop с визуальным элементом таблицы данных с одной строкой на клиента. Значения продаж — это BLANK, а значения рентабельности — ноль процентов.

Визуализация таблицы отображает чрезмерное количество строк. (На самом деле в модели есть 18 484 клиентов, поэтому таблица пытается отобразить всех из них.) Обратите внимание, что клиенты на экране не осуществили каких-либо продаж. Тем не менее, поскольку показатель прибыли всегда возвращает значение, они отображаются.

Заметка

Если в визуальном элементе слишком много точек данных, Power BI может использовать стратегии сокращения данных для удаления или суммирования больших результатов запроса. Дополнительные сведения см. в разделе Ограничения и стратегии точки данных по визуальному типу.

Посмотрим, что произойдет, когда будет улучшено определение меры рентабельности . Теперь он возвращает значение, только если мера продаж не BLANK (или ноль).

Profit Margin =
DIVIDE([Profit], [Sales])

Визуальный элемент таблицы теперь отображает только клиентов, которые сделали продажи в текущем контексте фильтра. Улучшенная мера дает более эффективный и практический опыт для пользователей отчета.

снимок экрана Power BI Desktop, показывающий визуальный элемент таблицы данных с отфильтрованным содержимым.

Совет

При необходимости можно настроить визуализацию для показа всех групп (возвращающих значения или BLANK) в контексте фильтра, включив параметр Показывать элементы без данных.

Рекомендация

Рекомендуется, чтобы ваши результаты измерений возвращали BLANK, когда невозможно вернуть значимое значение.

Этот подход к проектированию эффективен, что позволяет Power BI быстрее отображать отчеты. Кроме того, возврат к BLANK является более предпочтительным, так как визуальные элементы отчета по умолчанию устраняют группировки при BLANKсуммирования.