如何在Power Query Editor中将文本时间按自定义区间分组用于Excel/Power Pivot
Power Query 自定义时间区间分组操作步骤
步骤1:转换文本时间字段为标准时间类型
首先要将文本格式的时间转为可计算的日期时间类型,才能做后续的区间判断:
- 选中你的文本时间列,在顶部「转换」选项卡点击「数据类型」,选择「日期/时间」即可自动识别转换
- 如果遇到格式特殊识别失败的情况,可新增自定义列用
DateTime.FromText指定格式转换,示例代码如下:= DateTime.FromText([你的文本时间字段名], [Format="yyyy-MM-dd HH:mm:ss", Culture="zh-CN"])
转换完成后可删除原文本时间列,避免后续操作混淆。
步骤2:新增列标记所属时间区间
根据你的分组需求选择对应方案:
场景1:按固定周期分组(如按小时、每2小时、每30分钟等)
直接用DateTime.RoundDown函数按周期向下取整即可,示例(按1小时分组):= DateTime.RoundDown([转换后的标准时间列名], #duration(0,1,0,0))
参数调整规则:#duration(天,小时,分钟,秒),按2小时分组就修改为#duration(0,2,0,0),按30分钟分组修改为#duration(0,0,30,0)即可。生成的列会显示对应区间的起始时间,可直接作为分组维度。
场景2:按自定义不规则时段分组(如早6点-早9点、晚17点-20点等)
用条件判断对应时段即可,示例代码(新增自定义列):
= let 小时值 = Time.Hour([转换后的标准时间列名]) in if 小时值 >=6 and 小时值 <9 then "早高峰(6-9点)" else if 小时值 >=11 and 小时值 <14 then "午间(11-14点)" else if 小时值 >=17 and 小时值 <20 then "晚高峰(17-20点)" else "其他时段"
如果需要按「日期+时段」拆分不同天的同类型时段,可将日期拼接在时段前:= Text.From(DateTime.Date([转换后的标准时间列名])) & " " & 上述时段判断结果
步骤3:按时间区间分组聚合
- 选中上一步生成的「时间区间」列,在顶部「转换」选项卡点击「分组依据」
- 在弹窗中选择你需要的聚合规则:求和、计数、平均值等,对应选中要聚合的数值字段
- 点击确定后即可得到最终分组结果,可直接加载到Power Pivot或Excel工作表中使用。
注意:如果你的时间文本仅含时刻不含日期,可使用
Time.FromText转换为time类型,后续判断逻辑同上,只需将DateTime相关函数替换为Time对应的函数即可。
内容的提问来源于stack exchange,提问作者Peco
相关产品推荐
相关产品推荐

