Power BI中如何计算两行Timestamp列的时间差?
在Power BI中计算Timestamp列两行时间差的具体方法
方法一:用DAX添加计算列(适合数据视图快速操作)
- 打开Power BI Desktop,加载数据表后切换到左侧数据视图(表格图标)。
- 选中目标表,点击顶部菜单栏的建模选项卡,选择新建列。
- 在公式栏输入以下DAX表达式(替换
你的表名为实际表名):时间差 = VAR 当前时间 = '你的表名'[Timestamp] VAR 上一行时间 = OFFSET(-1, '你的表名', ORDER BY '你的表名'[Timestamp])[Timestamp] RETURN IF(ISBLANK(上一行时间), BLANK(), 当前时间 - 上一行时间)- 说明:
OFFSET(-1,...)按Timestamp顺序取出当前行的上一行时间,第一行因无前置行返回空值;时间差默认以天为单位。
- 说明:
- 如需转换为小时/分钟,修改返回逻辑即可,比如转小时:
RETURN IF(ISBLANK(上一行时间), BLANK(), (当前时间 - 上一行时间)*24)
方法二:用Power Query添加自定义列(适合数据预处理)
- 打开Power BI Desktop,点击顶部转换数据按钮进入Power Query编辑器。
- 选中目标表,确认Timestamp列是日期/时间类型(若不是,右键列→更改类型→日期/时间)。
- 点击添加列选项卡,选择索引列→从0开始。
- 再次点击添加列→自定义列,在弹窗中输入公式(替换
你的表名):= if [索引] = 0 then null else [Timestamp] - #"你的表名"{[索引]-1}[Timestamp] - 点击确定后将新列重命名为“时间差”,如需转换单位,右键列→更改类型→选择对应数值类型(如小时/分钟)。
- 最后点击关闭并应用,返回Power BI界面即可看到新列。
注意事项
- 确保Timestamp列时间有序,否则时间差计算会不符合预期;若时间无序,可在DAX中调整
ORDER BY规则,或在Power Query中先给Timestamp列排序。 - 若存在重复时间戳,建议先清理数据或添加额外排序依据(如ID列),避免行顺序混乱。
内容的提问来源于stack exchange,提问作者Dimu Rasika
相关产品推荐
相关产品推荐

