Excel DAX跨多个表的乘法和(sumproduct)

Excel DAX跨多个表的乘法和(sumproduct),excel,dax,powerquery,powerpivot,Excel,Dax,Powerquery,Powerpivot,我正在努力解决一个我认为非常愚蠢的问题 我试图从任意日期选择中获取“MTD目标”值。我有一个表'out',它有许多维度+日期,还有一个目标表,它给我每个月每天一个恒定的目标值。我的目标是获得每月选择的天数,并将其乘以相关月份的相应每日目标 例如,第1个月的每日目标为2,第2个月的每日目标为4。我第一个月有4天,第二个月有3天。我的累积目标应该是2*4+3*2=14 我可以这样做一个月没有问题。但一旦我选择了一个跨越2个月或更多个月的日期范围,一切都会陷入地狱 表“out”具有日期、国家和其他维度

我正在努力解决一个我认为非常愚蠢的问题

我试图从任意日期选择中获取“MTD目标”值。我有一个表'out',它有许多维度+日期,还有一个目标表,它给我每个月每天一个恒定的目标值。我的目标是获得每月选择的天数,并将其乘以相关月份的相应每日目标

例如,第1个月的每日目标为2,第2个月的每日目标为4。我第一个月有4天,第二个月有3天。我的累积目标应该是2*4+3*2=14

我可以这样做一个月没有问题。但一旦我选择了一个跨越2个月或更多个月的日期范围,一切都会陷入地狱

表“out”具有日期、国家和其他维度。 表“目标”有年、月和国家维度

我试图得到一些加法和乘法,类似于SUM(month\u country*selected\u days)

以下是我尝试过的DAX措施:

mtd_inv_tgt :=
CALCULATE (
    SUM ( targets[daily_spend] ),
    FILTER (
        targets,
        targets[market] = FIRSTNONBLANK ( out[co_market], "" )
            && targets[yyyymm] >= MIN ( out[yyyymm] )
            && targets[yyyymm] <= MAX ( out[yyyymm] )
    )
)
    * DISTINCTCOUNT ( out[date] )
mtd\u inv\u tgt:=
算计(
总额(目标[每日支出],
滤器(
目标,,
目标[市场]=第一个非空(超出[合作市场],“”)
&&目标[yyyymm]>=MIN(超出[yyyymm])
&&目标[yyyymm]=MIN(超出[yyyymm])

&&目标[yyyymm]我认为类似的方法应该可以奏效:

mtd_inv_tgt :=
SUMX (
    VALUES ( out[date] ),
    LOOKUPVALUE (
        targets[daily_spend],
        targets[yyyymm], SELECTEDVALUE ( out[yyymm] )
    )
)
这将在当前筛选器上下文中迭代每个不同的
out[date]
值,并通过在
yyymm
上进行匹配,将其查找的每个日期的
daily\u花费
相加


仅迭代
yyyymm
可能更有效:

mtd_inv_tgt :=
SUMX (
    VALUES ( out[yyymm] ),
    DISTINCTCOUNT ( out[date] )
        * LOOKUPVALUE (
            targets[daily_spend],
            targets[yyyymm], EARLIER ( out[yyymm] )
        )
)


注意:如果这些没有按预期工作,请提供样本数据进行检查,因为我还没有实际测试这些数据。

我认为类似的方法应该可以工作:

mtd_inv_tgt :=
SUMX (
    VALUES ( out[date] ),
    LOOKUPVALUE (
        targets[daily_spend],
        targets[yyyymm], SELECTEDVALUE ( out[yyymm] )
    )
)
这将在当前筛选器上下文中迭代每个不同的
out[date]
值,并通过在
yyymm
上进行匹配,将其查找的每个日期的
daily\u花费
相加


仅迭代
yyyymm
可能更有效:

mtd_inv_tgt :=
SUMX (
    VALUES ( out[yyymm] ),
    DISTINCTCOUNT ( out[date] )
        * LOOKUPVALUE (
            targets[daily_spend],
            targets[yyyymm], EARLIER ( out[yyymm] )
        )
)

注意:如果这些没有按预期工作,请提供样本数据进行检查,因为我还没有实际测试这些