在 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")
将值 07
、37
和 58
传递到 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])
创建此列后,您可以删除旧列,这样数据中就只有一个时间列。希望这有帮助。
我正在寻找一种将十进制数转换为有效 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")
将值 07
、37
和 58
传递到 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])
创建此列后,您可以删除旧列,这样数据中就只有一个时间列。希望这有帮助。