在 Power BI 中将数字列转换为时间格式

Convert a number column into a time format in Power BI

我正在寻找一种将十进制数转换为有效 HH:mm:ss 格式的方法。

我正在从 SQL 数据库导入数据。

我数据库中的一列标记为 Actual Start Time

我的数据库中的值以以下十进制格式存储:

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

我不能简单地将此 Actual Start Time 列转换为我的 Power BI 导入中的 Time 格式,因为它 returns 某些值的错误,说它无法识别 73758 作为有效的 'time'。对于 73758.

等情况,它需要有一个前导零

为了解决这个问题,我创建了一个新的 Text 列,其中包含以下代码以附加一个前导零:

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

这returns结果如下:

073758
114436

-- 完美。正是我需要的。

我现在想将这些值转换成 Time

简单地将数据类型字段更改为Time不会执行任何操作,返回:

Cannot convert value '073758' of type Text to type Date.

所以我使用以下代码创建了另一个列:

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

将值 073758 传递到 TIME 格式。

这个 returns 以下:

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

这是我想要的,但还有其他方法吗?我想在不创建额外列的情况下一步完成。

我特意向您展示了变量的概念,以便您将来可以在更复杂的查询中使用它。

TimeC = 
var timeStr = FORMAT([Actual Start Time], "000000")
return FORMAT(TIME(LEFT([timeStr], 2), MID([timeStr], 3, 2), RIGHT([timeStr], 2)), "HH:mm:ss")

您可以按照 Aldert 的建议使用变量,或者您可以用格式函数替换 Column:

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])

创建此列后,您可以删除旧列,这样数据中就只有一个时间列。希望这有帮助。