Избегайте преобразования 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, показывающий таблицу данных с отфильтрованным содержимым.

Tip

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

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

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

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