Преобразование числового столбца в формат времени в Power BI - PullRequest
2 голосов
/ 18 февраля 2020

Я ищу способ преобразования десятичного числа в действительный формат HH:mm:ss.

Я импортирую данные из базы данных SQL.

Один из столбцов в моей базе данных помечен Actual Start Time.

Значения в моей базе данных хранятся в следующем десятичном формате:

73758    // which translates to 07:27:58
114436   // which translates to 11:44:36

Я не могу просто преобразовать этот столбец Actual Start Time в формат Time в моем импорте Power BI, так как он возвращает ошибки для некоторых значений, говоря, что он не распознает 73758 как действительное «время». Он должен иметь начальный ноль для таких случаев, как 73758.

. Для борьбы с этим я создал новый столбец Text со следующим кодом для добавления начального ноля:

Column = FORMAT([Actual Start Time], "000000")

Это возвращает следующие результаты:

073758
114436

- что идеально. Именно то, что мне нужно.

Теперь я хочу преобразовать эти значения в Time.

Простое изменение поля типа данных на Time ничего не делает, возвращая:

Невозможно преобразовать значение '073758' типа Text в тип Date.

Итак, я создал еще один столбец со следующим кодом:

Column 2 = FORMAT(TIME(LEFT([Column], 2), MID([Column], 3, 2), RIGHT([Column], 2)), "HH:mm:ss")

Чтобы передать значения 07, 37 и 58 в TIME формат.

Это возвращает следующее:

 _______________________________________
| Actual Start Date | Column | Column 2 |
|_______________________________________|
|       73758       | 073758 | 07:37:58 |
|       114436      | 114436 | 11:44:36 |

Что я хотел, но есть ли другой способ сделать это? В идеале я хочу сделать это за один шаг без создания дополнительных столбцов.

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вы можете использовать переменную, предложенную Aldert, или заменить столбец функцией формата:

Time Format = FORMAT(
                    TIME(
                        LEFT(FORMAT([Actual Start Time],"000000"),2),
                        MID(FORMAT([Actual Start Time],"000000"),3,2),
                        RIGHT([Actual Start Time],2)),
                "hh:mm:ss")

Редактировать:

Если вы хотите сделать это в запросе Power, вы Можно создать столбец клиента со следующим расчетом:

Time.FromText(
     if Text.Length([Actual Start Time])=5 then Text.PadStart( [Actual Start Time],6,"0") 
     else [Actual Start Time])

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

1 голос
/ 18 февраля 2020

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

TimeC = 
var timeStr = FORMAT([Actual Start Time], "000000")
return FORMAT(TIME(LEFT([timeStr], 2), MID([timeStr], 3, 2), RIGHT([timeStr], 2)), "HH:mm:ss")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...