日期度量以过滤表现出不一致行为的值

时间:2019-03-18 18:35:46

标签: powerbi dax powerbi-desktop

我面临以下问题:

一些其他信息:我必须获取某种类型的最新FX才能将其用作我的重编率。我使用计算得出的true / false列执行此操作:

bool_Latest_FX_Act = 
var latestDate = 
CALCULATE(
    MAX(FX_Table[Month-Year])
    ,FILTER(ALL(FX_Table)
        , FX_Table [Type] = "Actuals"
    )
)
return
IF((FX_Table [Month-Year] = latestDate) && (FX_Table [Type] = "Actuals"), TRUE(), FALSE())

如果费率是最新费率,则返回true。否则为假。 (有效)这并不真正适用于此问题,但解释了如何获得CP度量的正确/错误。

我有这个模型: PBI Model

我创建了两个度量,每个度量均返回1个日期:

[CP]和[CP_PY]

(当前时期)和(去年同期)

CP = 
VAR ThisActMonth =
    CALCULATE (
        DISTINCT (FX_Table[Month-Year] ),
        FX_Table[bool_Latest_FX_Act] = TRUE ()
    )
RETURN
    ThisActMonth

此度量以日期格式返回2019年2月:

我将此措施用作布尔值来过滤我的值:

CP Actuals = SUMX(
     FILTER (ValuesTable, ValuesTable [Type] = "Actuals" && ValuesTable [Month-Year]=[CP]),
            ValuesTable [RestCurrAct]
     )

当我使用此度量时,结果将按预期返回,我的数据将按类型和最新FX周期进行过滤(随模型中加载的内容动态变化)。

上一年:

CP_PY = SUMX(
    Filter('Date', 'Date'[Date Hierarchy]=[CP]),
    SAMEPERIODLASTYEAR('Date'[Date Hierarchy])
)

这项措施将于2018年2月返回:

当我尝试使用CP_PY度量值来过滤我的值时,不会返回任何内容:

LY Actuals (NoFX) = SUMX(
     FILTER (ValuesTable, ValuesTable [Type] ="Actuals" && ValuesTable [Month-Year]=[CP_PY]),
            ValuesTable [USDNoFX(xElim)]
     )

我检查了周期量度是否与ValuesTable [month-year]值相同,并且我确保实际上有上一年的值;)。我感觉这就是我的CP_PY的编写方式,但是我不知道哪里出了问题。我真的很困惑为什么这适用于CP而不适用于CP_PY。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

写作时

FILTER ( ValuesTable, ... )

您要过滤的表ValuesTable不一定是整个表,而是在当前过滤器上下文中被评估 。我猜测您正在尝试在不包括2018年2月的上下文中评估该度量,这意味着添加[CP_PY]条件将使FILTER函数返回一个空集,因为它不能同时进行包括和排除该月。

有几种方法可以解决此问题。一种简单的方法是将ValuesTable包装为ALLALLSELECTEDALLEXCEPT的适当变体。也就是说,类似

FILTER ( ALL ( ValuesTable ), ... )

我建议重写该度量,尽管看起来像这样:

LY Actuals (NoFX) =
VAR PrevYear = [CP_PY]
RETURN
    CALCULATE (
        SUM ( ValuesTable[USDNoFX(xElim)] ),
        ValuesTable[Type] = "Actuals",
        ValuesTable[Month-Year] = PrevYear
    )