DAX 度量帮助:如何计算 "ignores" 关系?

DAX measure help: how to get count that "ignores" relationship?

我正在跟踪机器及其 on/off 状态,以及它们的服务历史记录:

MachineHistory
MachID
Branch
Status
StatusDate

ServiceHistory
ServiceID
MachID
ServiceDate

Calendar
Date
Year
Month

MachineHistory 和 ServiceHistory 在 MachId 上相关。 日历在日期列上与两者相关。

我想要的是 ActiveMachineCount(表示 Status = "ON")和 ServicedMachineCount(表示行存在于 ServiceHistory table 中)的度量。两者都应该可以按日期和分支分组。

所以我应该能够有一个显示 eg

的 excel 枢轴
Branch     ActiveMachCnt     ServicedMachCnt
A             50                  13
B             23                   6

我有一个测量值 MachIdCnt = distinctcount(machineid) 我的问题是 ActiveMachIdCnt = calculate([MachIdCnt], MachineHistory[Status] = "ON")

无论我如何尝试使用 ActiveMachIdCnt fiddle,我要么得到 a) table 中的所有机器 ID,要么 b) 已服务的机器 ID 的计数(由于关系)。

我显然没有正确理解 ALL、ALLEXCEPT 等函数族。 :/

如何获取 ActiveMachIdCnt 度量 "ignore" 与 ServiceHistory 的关系,但仍遵守日期和分支上的过滤器?

感谢任何提示, sff

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

您需要做的是添加一个维度 "Machine",它将包含机器的 MachineId 和其他有用的属性。然后,此 table 将通过 MachineID 与机器历史记录和服务历史记录相关联,这与您的日历 table 通过日期与它们相关联的方式完全相同。

有了这样的结构,你的DAX就很简单了:

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

如果您想按 Branch 分析这些度量,则需要将 branch 作为单独的维度(这是我的选择),或者作为维度 "Machine" 中的属性(这将工作,但在概念上是一个劣质的设计)。