Показатели среднего взвешенного формата времени Power BI

#time #powerbi #format #measure #weighted

Вопрос:

Я создал две меры для расчета моего взвешенного среднего значения ACW, но формат времени отображается неправильно, и я застрял. У меня есть импортированная таблица из Postgres в Powerbi, столбец, который я использую для своего времени acw, находится в секундах в таблице Inboundlog.

Чтобы получить среднее значение, я сначала создал меру для суммирования общего времени ACW.

 SUM ACW = SUM(inboundlog[time_acwork])
 

Затем я создал вторую меру, чтобы разделить этот результат на общее количество обработанных вызовов

  AVG ACW = DIVIDE([SUM ACW], [Calls Handled])
 

При добавлении в мою таблицу она показывает правильные результаты, но не в формате времени. Когда я добавил формат в среднее значение ACW либо для «ЧЧ:ММ:СС», либо для «ММ:СС», результаты искажаются. Есть ли способ, которым я могу манипулировать, чтобы показывать в формате времени, но с правильными настройками.

Вот правильные результаты не в формате времени.

Результаты Power BI

Это скриншот того, к чему я привязываюсь.

Конечный Результат

Снимок экрана типа данных в таблице inboundlog.

Время Работы

Комментарии:

1. Пожалуйста, не размещайте нас всех в Интернете. Это считается КРИКОМ и невежливым.

2. Было бы полезно знать тип данных столбца inboundlog[time_acwork] — это значение даты/времени или десятичное?? Пожалуйста, покажите эти данные на своих скриншотах, чтобы мы могли видеть, с чем вы имеете дело. Отредактируйте свой вопрос, чтобы сделать это. Не публикуйте это в комментарии. Вы можете оставить комментарий, когда обновите вопрос, чтобы люди, следующие этой теме, были уведомлены.

3. Спасибо, я только что опубликовал скриншот типа данных.

Ответ №1:

Используйте код отсюда: https://community.powerbi.com/t5/Community-Blog/Aggregating-Duration-Time/ba-p/22486

 Duration = 
// Duration formatting 
// * @konstatinos 1/25/2016
// * Given a number of seconds, returns a format of "hh:mm:ss"
//
// We start with a duration in number of seconds
VAR Duration = [Duration in Seconds]
// There are 3,600 seconds in an hour
VAR Hours =
    INT ( Duration / 3600)
// There are 60 seconds in a minute
VAR Minutes =
    INT ( MOD( Duration - ( Hours * 3600 ),3600 ) / 60)
// Remaining seconds are the remainder of the seconds divided by 60 after subtracting out the hours 
VAR Seconds =
    ROUNDUP(MOD ( MOD( Duration - ( Hours * 3600 ),3600 ), 60 ),0) // We round up here to get a whole number
// These intermediate variables ensure that we have leading zero's concatenated onto single digits
// Hours with leading zeros
VAR H =
    IF ( LEN ( Hours ) = 1, 
        CONCATENATE ( "0", Hours ),
        CONCATENATE ( "", Hours )
      )
// Minutes with leading zeros
VAR M =
    IF (
        LEN ( Minutes ) = 1,
        CONCATENATE ( "0", Minutes ),
        CONCATENATE ( "", Minutes )
    )
// Seconds with leading zeros
VAR S =
    IF (
        LEN ( Seconds ) = 1,
        CONCATENATE ( "0", Seconds ),
        CONCATENATE ( "", Seconds )
    )
// Now return hours, minutes and seconds with leading zeros in the proper format "hh:mm:ss"
RETURN
    CONCATENATE (
        H,
        CONCATENATE ( ":", CONCATENATE ( M, CONCATENATE ( ":", S ) ) )
    )