在Power BI中将D:HH:MM:SS文本转换为十进制天数的方法咨询
Power BI 文本格式D:HH:MM:SS转十进制天数解决方案
核心结论
Power BI 没有能直接识别D:HH:MM:SS格式的内置转换函数,需要先解析出对应的天、时、分、秒数值,再换算为十进制天数,两种常用实现方式如下:
方法1:单步自定义列转换(无需拆分原列)
直接在Power Query的自定义列中输入如下公式即可,假设你的源文本列名为DurationText:
= let // 按冒号拆分文本为4个片段 SplitList = Text.Split([DurationText], ":"), // 依次提取各时间单位并转换为数值 Days = Number.From(SplitList{0}), Hours = Number.From(SplitList{1}), Minutes = Number.From(SplitList{2}), Seconds = Number.From(SplitList{3}) in // 各单位换算为十进制天数求和 Days + Hours/24 + Minutes/1440 + Seconds/86400
也可以通过内置Duration函数实现,逻辑完全一致:
= Duration.TotalDays( #duration( Number.From(Text.Split([DurationText],":"){0}), Number.From(Text.Split([DurationText],":"){1}), Number.From(Text.Split([DurationText],":"){2}), Number.From(Text.Split([DurationText],":"){3}) ) )
方法2:先拆分列再计算(适合需要单独存储各时间单位的场景)
操作步骤如下:
- 选中源文本列,依次点击「转换」选项卡 -> 「拆分列」-> 「按分隔符」,分隔符选择
:,拆分为4个新列,依次重命名为天、时、分、秒 - 选中4个新列,右键选择「更改类型」->「整数」
- 新增自定义列,输入公式:
= [天] + [时]/24 + [分]/1440 + [秒]/86400,将新列类型设置为十进制数即可
注意:如果源文本存在省略天数的情况(例如不足1天的时长仅显示为
HH:MM:SS),需要先统一补全0:前缀再执行转换,避免拆分后索引取值报错。
内容的提问来源于stack exchange,提问作者Mark Tait
相关产品推荐
相关产品推荐

