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
相关产品推荐
相关产品推荐

