You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query中如何将h/m/s格式时长列转换为总秒数?

在Power BI的Power Query中将"XhYmZs"格式时长转换为总秒数

实现步骤:添加自定义列计算总秒数

  1. 进入Power Query编辑器:在Power BI数据视图中,点击顶部菜单栏的转换数据打开编辑器。
  2. 确认时长列格式:右键目标列→更改类型→选择文本(如果当前列不是文本格式的话)。
  3. 添加自定义列:点击添加列选项卡→自定义列,在弹出的编辑框中输入以下M语言代码,记得把[你的时长列名]替换成实际的列名:
= let
    DurationText = [你的时长列名],
    // 清理文本中的空格(如果数据里带空格,比如"9h 8m 4s")
    CleanText = Text.Remove(DurationText, " "),
    // 按h/m/s拆分文本,提取数字部分
    SplitParts = List.RemoveNulls(Text.SplitAny(CleanText, "hms")),
    // 提取时/分/秒数值,无对应部分则设为0
    Hours = if List.Count(SplitParts) >= 1 then Number.From(SplitParts{0}) else 0,
    Minutes = if List.Count(SplitParts) >= 2 then Number.From(SplitParts{1}) else 0,
    Seconds = if List.Count(SplitParts) >= 3 then Number.From(SplitParts{2}) else 0,
    // 计算总秒数
    TotalSeconds = Hours * 3600 + Minutes * 60 + Seconds
in
    TotalSeconds

代码说明

  • Text.SplitAny(CleanText, "hms"):将清理后的时长文本按h/m/s拆分,提取出数字列表(比如"9h8m4s"会拆成{"9","8","4"})。
  • List.RemoveNulls:移除拆分过程中可能产生的空值,兼容格式不规范的情况。
  • 通过列表长度判断,确保即使数据只有部分时长单位(比如仅"30m"或"120s"),也能正确计算总秒数。
  • 最终通过单位换算:1小时=3600秒、1分钟=60秒,累加得到总秒数。

示例验证

输入9h8m4s时:

  • Hours=9,Minutes=8,Seconds=4
  • 总秒数=9×3600 + 8×60 +4 = 32400 + 480 +4 = 32884,与预期结果一致。

内容的提问来源于stack exchange,提问作者egflame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:45:35