如何在Power BI中将1-2400格式的整数时间转换为标准时间?
在Power BI中将1-2400格式的整数时间转换为标准时间
这类整数时间的规则是:前两位(补零后)代表小时,后两位代表分钟,比如1对应00:01,1230对应12:30,2400对应24:00(等价于次日00:00)。下面提供两种实用转换方法:
方法一:Power Query编辑器(数据预处理)
- 加载数据集后进入Power Query编辑器,选中目标时间列
- 点击「添加列」→「自定义列」,输入以下公式(替换
[实际时间列名]为你数据集里的列名):
= let // 将整数转为文本并补前导零到4位,比如1变成"0001",2400变成"2400" TimeText = Text.PadStart(Text.From([实际时间列名]), 4, "0"), // 拆分小时和分钟部分 HourPart = Text.Start(TimeText, 2), MinutePart = Text.End(TimeText, 2), // 处理2400的特殊情况,转为00:00 AdjustedHour = if HourPart = "24" then "00" else HourPart, AdjustedMinute = if HourPart = "24" then "00" else MinutePart in // 转成标准时间格式 Time.FromText(AdjustedHour & ":" & AdjustedMinute)
- 点击「确定」后,可删除原时间列,新生成的列即为标准时间格式。
方法二:DAX计算列(报表建模阶段)
若不想修改原始数据,可返回报表视图新建计算列:
- 点击「建模」→「新建列」
- 输入以下DAX公式(替换
[实际时间列名]为你的列名):
标准时间 = VAR TimeNum = [实际时间列名] // 提取小时部分:整数除以100取整 VAR HourVal = INT(TimeNum / 100) // 提取分钟部分:整数取余100 VAR MinuteVal = MOD(TimeNum, 100) // 处理2400的情况,将小时转为0 VAR AdjustedHour = IF(HourVal = 24, 0, HourVal) RETURN TIME(AdjustedHour, MinuteVal, 0)
额外提示
如果数据集存在无效值(比如大于2400、分钟部分超过59的数值),可添加错误处理:
- Power Query中可修改最后一行:
try Time.FromText(AdjustedHour & ":" & AdjustedMinute) otherwise null - DAX中可修改返回部分:
IFERROR(TIME(AdjustedHour, MinuteVal, 0), BLANK())
内容的提问来源于stack exchange,提问作者Griffin Maree
相关产品推荐
相关产品推荐

