DAX/Power BI 中带过滤器的两个表的总和

Sum from two tables with filters in DAX/Power BI

我有两个 table。

第一个包含SKU、客户、订单日期、订单金额。
第二个包含 SKU、客户、促销 ID、促销开始日期、促销结束日期。

我需要计算每个客户促销 SKU 的订购量。

在 Excel 中我会有这样的东西:

SUMIFS(
    TABLE1[ORDERED],
    TABLE1[CLIENT], TABLE2[CLIENT],
    TABLE1[ORDER DATE], ">="&TABLE2[ORDER START DATE], 
    TABLE1[ORDER DATE], "<="&TABLE2[ORDER END DATE], 
    TABLE1[SKU], TABLE2[SKU]
)

Table 1

Table 2

Excel formula. Cells K2 and K3

我已经想出如何按日期过滤第一个 table(订单和 PromoLib tables 之间的联系是 SKU,多对多):

ordered = CALCULATE(
    SUM(ORDERS[order qty]),
    KEEPFILTERS(DATESBETWEEN(ORDERS[Document Date], PromoLib[Order Start], 
        PromoLib[Order End])),
)

如何向此 DAX 公式添加过滤器,以便它按客户过滤订单 table?

最佳做法是拥有一个客户维度 table、一个日期维度 table、一个订单事实 table 和一个 PromoLib 事实 table。那么措施就会简单得多。也就是说,这里是 CALCULATE 函数的语法:

CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])

您可以根据需要添加任意数量的过滤器参数,因此您可以像这样为客户端过滤器添加另一个参数:

FILTER (Orders, Orders[Client] = PromoLib[Client])