首页 文章

DAX测量帮助:如何计算“忽略”关系?

提问于
浏览
0

我正在跟踪机器及其开/关状态及其服务历史:

MachineHistory
MachID
Branch
Status
StatusDate

ServiceHistory
ServiceID
MachID
ServiceDate

Calendar
Date
Year
Month

MachineHistory和ServiceHistory与MachId相关 . 日历与日期列相关 .

我想要的是ActiveMachineCount(表示Status =“ON”)和ServicedMachineCount(表示ServiceHistory表中存在行)的度量 . 两者都应该按日期和分支进行分组 .

所以我应该能够有一个excel枢轴,显示例如

Branch     ActiveMachCnt     ServicedMachCnt
A             50                  13
B             23                   6

我有一个MachIdCnt = distinctcount(machineid)的度量我的问题是ActiveMachIdCnt = calculate([MachIdCnt],MachineHistory [Status] =“ON”)

无论我如何尝试使用ActiveMachIdCnt,我要么得到a)字面上表中的所有机器id,或者b)已经服务的机器id的计数(由于关系) .

我显然没有正确理解ALL,ALLEXCEPT等系列函数 . :/

如何让ActiveMachIdCnt措施“忽略”与ServiceHistory的关系,但仍然尊重日期和分支上的过滤器?

谢谢你的任何提示,谢谢

1 回答

  • 1

    我认为您遇到此问题是因为您的数据模型不正确 . 您的历史记录表(机器历史记录和服务历史记录)两者都是事实表 . 事实表不能有直接关系,这是禁止的 .

    您需要做的是添加一个维度“机器”,它将包含MachineId和您机器的其他有用属性 . 然后,此表将通过MachineID与计算机历史记录和服务历史记录相关,与日历表通过日期相关的方式完全相同 .

    有了这样的结构,你的DAX非常简单:

    Active Machines = DISTINCTCOUNT(MachineHistory[MachineId])
    Serviced Machines = DISCTINCTCOUNT(ServiceHistory[MachineId])
    

    如果你想通过Branch分析这些度量,你需要将分支作为一个单独的维度(这将是我的选择),或者作为维度“机器”中的属性(这将起作用但在概念上是一个较差的设计) .

相关问题