PowerBI - проблема ограничения времени - PullRequest
2 голосов
/ 25 сентября 2019

У меня есть столбец с количеством секунд, и я пытаюсь преобразовать его в HH:mm:ss формат.Все работает хорошо, если значения не являются пустыми или превышают 32767, так как это ограничение функции TIME .

Мой вопрос: как я все еще могу преобразовать значения выше 32767 в формате HH:mm:ss?

То, что у меня пока есть, это:

time_elapsed = IF(ISBLANK([time_in_sec]);"NaN";FORMAT(TIME(0;0;[time_in_sec]);"HH:mm:ss"))

Но это даже не проверка, потому что я не знаю, как передать пустое поле как пустое поле, а не Null, "Nan" или что-то ещеиначе при работе с целочисленным столбцом.

Для всех остальных случаев хорошо работает функция FORMAT(TIME(0;0;[time_in_sec]);"HH:mm:ss").

Итак, 2 проблемы - как преобразовать числа больше 32767 в HH:mm:ss и как просто передатьпустые поляА в случае отрицательного целого числа также должно возвращаться пустое поле.

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

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

hh_mi_ss = if([time_column]>0,(
 VAR hr = FLOOR( [time_column] / 3600, 1)                   // hours
 VAR mn = FLOOR( MOD( [time_column]; 3600) / 60, 1)          // minutes
 VAR ss = FLOOR( MOD ( MOD( [time_column], 3600) ,60 ), 1)  // seconds
RETURN FORMAT( TIME(hr, mn,ss), "HH:mm:ss" ));
"Empty, 0 or negative value")

И в моей локали мне пришлось заменить , на ; в аргументе функции.

2 голосов
/ 25 сентября 2019

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

2) Вы можете самостоятельно реализовать формулу, которая преобразует секунды в формат ЧЧ: МИ: СС, следующим образом:

  // calculated column
  hh_mi_ss = 
    VAR hr = FLOOR( query[column] / 3600, 1 )                   // hours
    VAR mn = FLOOR( MOD( query[column], 3600) / 60, 1)          // minutes
    VAR ss = FLOOR( MOD ( MOD( query[column], 3600) , 60 ), 1)  // seconds
RETURN FORMAT( TIME(hr, mn,ss), "HH:mm:ss" )

enter image description here

...