Visualisations
January 10, 2022

Если долго, долго... Как показать продолжительность в PowerBI

У меня есть статья про Пользовательские форматы данных. В ней я отметил, но не стал разбирать, формат "продолжительности времени".

Примечание о продолжительности времени

Тем не менее - это очень частый вопрос, который я вижу в чатах по PowerBI.

Классический ответ на такой вопрос:

Если вам надо отобразить продолжительность в таблице, матрице или карточке, то можно написать меру, где с помощью конкатенации составить нужную строку. Но в диаграммах так не получится, так как в значениях должны быть только числа.

С появлением Calculation group эту задачу можно решить там, написав выражение в Format String Expression. Тогда мера будет работать и в диаграммах.

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

Для примера я создал небольшую таблицу:

Таблица звонков

Таблица содержит всего четыре столбца:

  • Phone - номер телефона(номера вымышленные, все совпадения случайные)
  • Start - дата и время обращения
  • End - дата и время завершения обращения
  • Duration - время затраченное на закрытие обращения

На скриншоте видно, что продолжительность хранится как десятичное число:

Тип столбца

Хотя в редакторе PowerQuery столбец имеет тип "Продолжительность":

Тип столбца в PowerQuery

Почему именно десятичное число? Потому что числа удобно суммировать и это будет основная операция, которая осуществляется с этим значением.

Но как десятичное число перевести во время? Всё очень просто. Напомню, если вы забыли или не знали, что дата и время на самом деле являются десятичными числами, где целая часть - это дата (1=день), а дробная часть - это время (1/24=час, 1/(24*60)=минута, 1/(24*60*60)=секунда). Обладая этим знанием, можно легко любое десятичное число перевести в часы, минуты и секунды.

Для начала создадим простую меру, которая будет суммировать столбец Duration:

Мера подсчёта продолжительности

Затем создадим простую визуализацию в виде таблицы:

Таблица подсчёта продолжительности всех обращений

Как видим, на все обращения было потрачено более шести дней (смотрим на целую часть). Но сколько это в часах и минутах?

Так как столбец, который суммируем, имеет тип "Десятичное число", то и стандартные форматы для меры доступны только числовые:

Форматирование меры

Если же попробовать задать пользовательский формат типа hh:mm(час:минута), то вместо чисел у нас будут буквы, так как такие зарезервированные символы работают только с соответствующими типами:

Неработающий пользовательский формат

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

Мера для форматирования продолжительности

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

Пользовательский формат меры продолжительности
Часов может быть любое количество, поэтому первый символ решётка, то есть необязательный символ, который вернёт пустоту, если нет цифр после пятой справа. После решётки 0, который подставляется, вместо часа, если продолжительность меньше часа. Затем двоеточие, чтобы отделить часы от минут. Далее два ноля 00, т.к. минуты могут быть от 0 до 59. И точно также двоеточие и 00, чтобы показать секунды.

Для проверки я воспользовался форматированием в Excel

Использование форматирования в Excel

И последнее:

Мера продолжительности в диаграмме

Как видите мера прекрасно работает в диаграмме. Не забудьте только для оси X и для меток отключить "Показывать единицы", ведь вы помните, что на самом деле это у нас число)))

Скачать файл с примером можно по ссылке.