我面临以下问题:
一些其他信息:我必须获取某种类型的最新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度量的正确/错误。
我创建了两个度量,每个度量均返回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])
)
当我尝试使用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。任何帮助将不胜感激。
答案 0 :(得分:1)
写作时
FILTER ( ValuesTable, ... )
您要过滤的表ValuesTable
不一定是整个表,而是在当前过滤器上下文中被评估 。我猜测您正在尝试在不包括2018年2月的上下文中评估该度量,这意味着添加[CP_PY]
条件将使FILTER
函数返回一个空集,因为它不能同时进行包括和排除该月。
有几种方法可以解决此问题。一种简单的方法是将ValuesTable
包装为ALL
,ALLSELECTED
或ALLEXCEPT
的适当变体。也就是说,类似
FILTER ( ALL ( ValuesTable ), ... )
我建议重写该度量,尽管看起来像这样:
LY Actuals (NoFX) =
VAR PrevYear = [CP_PY]
RETURN
CALCULATE (
SUM ( ValuesTable[USDNoFX(xElim)] ),
ValuesTable[Type] = "Actuals",
ValuesTable[Month-Year] = PrevYear
)