在多对一关系中过滤单向 table

Filter one sided table in many to one relationship

我想要两个度量值,对在 SalesStatus 中具有特定 StatusID 的所有 Sales[ID] 的 Sales[Value] 求和。

一个可以过滤销售[日期],一个可以过滤销售状态[statusDate]

Diagram

此致, 安德斯

在这种情况下,我会考虑将您的模型修改为只有两个 table,方法是组合两个 FACT table(销售、销售状态)。根据您的数据包含的内容,我会在加入后将两个 table 合并,然后将您的销售 table 中的日期视为另一个状态日期(即发货完成或销售完成,无论该日期代表什么) 或者我会加入两个 tables 并与日期 table.

建立两个关系

这将造成重复数据问题,因为理想情况下,您将在最终事实中包含值列 table。如果您使用 union 选项,则可以强制用户 select 单个销售状态,从而有效地消除销售重复。如果您最终与日期 table 建立了两个连接,则可以使用 USERELATIONSHIP() 函数编写两个不同的销售度量,而使用来自 Sales table 的日期的那个将需要一些确保数据确实测量的巧妙技巧不会重复。不过,我会尝试 UNION tables。

有关更多详细信息,我会研究数据仓库中称为 SEMI-ADDITIVE 事实 table 的内容。 SQL BI 关于这个主题有一篇很棒的文章。我试过像你画的那样设置模型,即使我能让它们通过密集的 DAX 测量工作,它们也会产生意想不到的结果并且性能不佳。一旦你通过了数据重复,我发现 Semi additive fact table 模式是一个更清晰的解决方案。

示例: