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

DAX度量求助:忽略关系的计数方法及机器状态与维保统计需求

嘿,这个需求我刚好处理过类似的场景,给你整理两个DAX度量的实现方案,完全支持按日期和Branch分组统计:

1. ActiveMachineCount(统计状态为"ON"的机器数量)

这个度量的核心是要在指定日期范围内,统计有"ON"状态记录的唯一机器数量,同时支持按Branch筛选。

ActiveMachineCount = 
CALCULATE(
    DISTINCTCOUNT(MachineHistory[MachID]),
    -- 锁定状态为ON的记录
    MachineHistory[Status] = "ON",
    -- 将Calendar表的日期上下文映射到MachineHistory的状态日期
    TREATAS(VALUES(Calendar[Date]), MachineHistory[StatusDate])
)

关键逻辑说明:

  • DISTINCTCOUNT(MachineHistory[MachID]):确保同一台机器即使多次切换为ON状态,也只会被统计一次
  • MachineHistory[Status] = "ON":筛选出状态为运行中的机器记录
  • TREATAS(...):把Calendar表的日期筛选上下文(比如选中的年份/月份)同步到MachineHistory的StatusDate字段,保证日期分组统计的正确性
  • 关于Branch分组:因为Branch字段本身就在MachineHistory表中,当你把Branch拖到视觉对象的行/列标签时,CALCULATE会自动继承Branch的筛选上下文,无需额外处理
2. ServicedMachineCount(统计有维保记录的机器数量)

这个度量需要关联ServiceHistory和MachineHistory来获取Branch信息,同时在指定日期范围内统计有维保记录的唯一机器数量。

ServicedMachineCount = 
CALCULATE(
    DISTINCTCOUNT(ServiceHistory[MachID]),
    -- 将Calendar表的日期上下文映射到ServiceHistory的维保日期
    TREATAS(VALUES(Calendar[Date]), ServiceHistory[ServiceDate]),
    -- 筛选出当前Branch下的机器(利用MachID的表间关系)
    ServiceHistory[MachID] IN VALUES(MachineHistory[MachID])
)

关键逻辑说明:

  • DISTINCTCOUNT(ServiceHistory[MachID]):避免同一台机器多次维保被重复统计
  • TREATAS(...):同步Calendar的日期筛选到维保日期,确保只统计指定时间段内有维保记录的机器
  • ServiceHistory[MachID] IN VALUES(MachineHistory[MachID]):因为ServiceHistory没有Branch字段,这里通过MachID的关联关系,只保留当前Branch筛选下的机器维保记录,完美支持Branch分组

使用提示

把这两个度量拖到Power BI的卡片图、柱状图等视觉对象中,再配合Calendar表的Year/Month字段或者MachineHistory表的Branch字段作为行/列标签,就能自动实现按日期或Branch的分组统计了,切片器筛选也能直接生效~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:50:10