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

PowerBI中用DAX实现满足日期及上一行条件时Units置为NULL

PowerBI计算列解决方案

步骤1:确保表格有排序依据

如果你的表格没有天然的唯一排序列(比如datetime1存在重复值),先在PowerBI的数据转换界面添加一个索引列:

  • 选中目标表格 → 点击「添加列」选项卡 → 选择「索引列」→ 选「从1开始」。

步骤2:创建计算列

根据是否有索引列,选择对应的DAX公式:

方案1(有索引列时推荐)

假设索引列名为Index,表格名为Table,创建新计算列:

Adjusted Units = 
VAR CurrentDT1 = 'Table'[datetime1]
VAR PrevDT1 = CALCULATE(MAX('Table'[datetime1]), FILTER('Table', 'Table'[Index] = EARLIER('Table'[Index]) - 1))
VAR StaticDT2 = 'Table'[datetime2]
RETURN
IF(StaticDT2 < CurrentDT1 && StaticDT2 > PrevDT1, BLANK(), 'Table'[units])

方案2(无索引列,且datetime1唯一递增)

如果datetime1是唯一且按时间递增的,可以直接用datetime1排序获取上一行数据:

Adjusted Units = 
VAR CurrentDT1 = 'Table'[datetime1]
VAR PrevDT1 = CALCULATE(MAX('Table'[datetime1]), FILTER('Table', 'Table'[datetime1] < CurrentDT1))
VAR StaticDT2 = 'Table'[datetime2]
RETURN
IF(StaticDT2 < CurrentDT1 && StaticDT2 > PrevDT1, BLANK(), 'Table'[units])

关键说明

  • BLANK()是PowerBI中表示NULL的标准方式,会在表格中显示为空值。
  • 如果datetime1存在重复值,方案2会无法准确获取上一行数据,必须用索引列方案。
  • EARLIER函数的作用是引用当前行的索引值,从而定位到上一行的datetime1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:35:07