powerbi - 日期度量以过滤表现出不一致行为的值
问题描述
我面临以下问题:
一些附加信息:我必须获得某种类型的最新 FX 才能将其用作我的重述汇率。我用计算的真/假列来做到这一点:
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。任何帮助将不胜感激。
解决方案
当你写
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
)
推荐阅读
- oauth-2.0 - OAuth2.0 链接用户帐户
- c - 无法在输出中获得退格符 (\b)
- mysql - 并行查询 - SELECT 和 UPDATE - 选择太快或更新太慢的问题
- jquery - 通过 jQuery 从 div 元素的一部分重建列表
- regex - 自定义 fail2ban 禁令规则不起作用(不正确的 failregex 使用?)
- java - 如何从文本文件中提取两个特定行之间的行?
- ruby-on-rails - 如何在 js.erb 中使用控制器的数组而不将数组转换为字符串?
- ios - 如何从 Cordova iOS 中的 WKWebView 获取 cookie
- android - 通过新的 LiveData 更新 RecyclerView
- 从 Room 动态返回
- python - Pandas 数据框无法将超过 200 行导出到 CSV 文件