用于过滤表现出不一致行为的值的日期度量
Date measure to filter Values exhibiting inconsistent behaviour
我面临以下问题:
一些附加信息:我必须获得某种类型的最新 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())
如果汇率是最新汇率,这 return 是正确的。如果不是,则为假。 (有效)这并不真正适用于问题,但解释了我如何获得 CP 度量的 true/false。
我有这个型号:
我创建了两个度量,每个度量 return 1 个日期:
[CP] & [CP_PY]
(本期) & (去年本期)
CP =
VAR ThisActMonth =
CALCULATE (
DISTINCT (FX_Table[Month-Year] ),
FX_Table[bool_Latest_FX_Act] = TRUE ()
)
RETURN
ThisActMonth
此度量 return 2019 年 2 月,日期格式:
我将此度量用作度量中的布尔值来过滤我的值:
CP Actuals = SUMX(
FILTER (ValuesTable, ValuesTable [Type] = "Actuals" && ValuesTable [Month-Year]=[CP]),
ValuesTable [RestCurrAct]
)
当我使用此度量时,结果按预期 return 编辑,我的数据按类型和最新的 FX 周期过滤(随模型中加载的内容动态变化)。
上一年:
CP_PY = SUMX(
Filter('Date', 'Date'[Date Hierarchy]=[CP]),
SAMEPERIODLASTYEAR('Date'[Date Hierarchy])
)
这项措施于 2018 年 2 月 return:
当我尝试使用 CP_PY 度量来过滤我的值时,returned:
什么都没有
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。任何帮助将不胜感激。
写的时候
FILTER ( ValuesTable, ... )
您正在筛选的 table ValuesTable
不一定是整个 table,但正在 在您当前的筛选上下文 中进行评估.我猜您正试图在不包括 2018 年 2 月的上下文中评估该度量,这意味着添加 [CP_PY]
条件将使 FILTER
函数 return 成为一个空集因为它不能同时包含和排除那个月。
有几种方法可以解决这个问题。一个简单的方法可能是将 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
)
我面临以下问题:
一些附加信息:我必须获得某种类型的最新 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())
如果汇率是最新汇率,这 return 是正确的。如果不是,则为假。 (有效)这并不真正适用于问题,但解释了我如何获得 CP 度量的 true/false。
我有这个型号:
我创建了两个度量,每个度量 return 1 个日期:
[CP] & [CP_PY]
(本期) & (去年本期)
CP =
VAR ThisActMonth =
CALCULATE (
DISTINCT (FX_Table[Month-Year] ),
FX_Table[bool_Latest_FX_Act] = TRUE ()
)
RETURN
ThisActMonth
此度量 return 2019 年 2 月,日期格式:
我将此度量用作度量中的布尔值来过滤我的值:
CP Actuals = SUMX(
FILTER (ValuesTable, ValuesTable [Type] = "Actuals" && ValuesTable [Month-Year]=[CP]),
ValuesTable [RestCurrAct]
)
当我使用此度量时,结果按预期 return 编辑,我的数据按类型和最新的 FX 周期过滤(随模型中加载的内容动态变化)。
上一年:
CP_PY = SUMX(
Filter('Date', 'Date'[Date Hierarchy]=[CP]),
SAMEPERIODLASTYEAR('Date'[Date Hierarchy])
)
这项措施于 2018 年 2 月 return:
当我尝试使用 CP_PY 度量来过滤我的值时,returned:
什么都没有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。任何帮助将不胜感激。
写的时候
FILTER ( ValuesTable, ... )
您正在筛选的 table ValuesTable
不一定是整个 table,但正在 在您当前的筛选上下文 中进行评估.我猜您正试图在不包括 2018 年 2 月的上下文中评估该度量,这意味着添加 [CP_PY]
条件将使 FILTER
函数 return 成为一个空集因为它不能同时包含和排除那个月。
有几种方法可以解决这个问题。一个简单的方法可能是将 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
)