Power BI中基于多列变量的条件判断:统一货运全日期状态
在Power BI中实现按货运批次同步状态的计算列/度量值
计算列实现
假设你的数据表名为货运表,包含货运ID(标识每一批货运)、记录日期(每条记录的日期)、状态(Open/Closed)字段。创建计算列的DAX公式如下:
货运最终状态 = VAR MaxShipmentDate = CALCULATE(MAX('货运表'[记录日期]), ALLEXCEPT('货运表', '货运表'[货运ID])) VAR LatestStatus = CALCULATE(MAX('货运表'[状态]), '货运表'[记录日期] = MaxShipmentDate, ALLEXCEPT('货运表', '货运表'[货运ID])) RETURN IF(UPPER(LatestStatus) = "CLOSED", "close", "Open")
公式说明
MaxShipmentDate:通过ALLEXCEPT保留当前货运ID的上下文,计算该批次的最新记录日期。LatestStatus:基于第一步得到的最新日期,筛选出该批次对应日期的状态。- 最后通过
IF判断,若最新状态为Closed则返回"close",否则返回"Open";用UPPER统一大小写是为了避免数据中状态大小写不一致导致的判断错误。
度量值实现
如果需要用度量值(适用于可视化场景,比如在报表中动态展示),可以使用以下DAX公式:
货运最终状态_度量值 = VAR CurrentShipmentID = SELECTEDVALUE('货运表'[货运ID]) VAR MaxShipmentDate = CALCULATE(MAX('货运表'[记录日期]), '货运表'[货运ID] = CurrentShipmentID) VAR LatestStatus = CALCULATE(MAX('货运表'[状态]), '货运表'[货运ID] = CurrentShipmentID, '货运表'[记录日期] = MaxShipmentDate) RETURN IF(UPPER(LatestStatus) = "CLOSED", "close", "Open")
公式说明
CurrentShipmentID:获取当前可视化上下文选中的货运ID。- 后续步骤与计算列逻辑一致,基于当前货运ID找到最新日期和对应状态,返回统一结果。
- 若在表格中每行展示该度量值,需确保
货运ID列在视觉对象中,以保证上下文正确。
内容的提问来源于stack exchange,提问作者Shiva Andure
相关产品推荐
相关产品推荐

