powerbi - 使用计算和如果未在 power bi 中正确显示总计的总和进行测量
问题描述
我要求power bi
仅显示用户在slicer
. 因此创建了以下措施..
用于捕获最小选定范围
StartDate = CALCULATE(min('DATE'[DATE]),ALLSELECTED('DATE'[DATE]))
仅显示最短日期的金额。
OP = if(SELECTEDVALUE('DATE'[DATE]) = [StartDate], CALCULATE(sum(MEASUREMENTS[OPENING_BASE_VAL]),DATESBETWEEN('DATE'[DATE],[StartDate],[StartDate])),0)
我得到了想要的输出,但是grand-total
这个度量值变成了 0,如下图所示。非常感谢任何帮助。
解决方案
您的总数为 0,因为您的第二个公式中的 SELECTEDVALUE('DATE'[DATE]) 返回空白,因此您的 IF 表达式读取为“IF BLANK = [开始日期]”,这始终是错误的。
SELECTEDVALUE 是以下代码的语法糖: IF HASONEVALUE(DATE'[DATE]) then return Date[Date] else return blank。由于总共有许多值(所有日期),因此您得到一个空白。
要解决此问题,您需要按日期迭代。
OP =
VAR StartDate = [StartDate]
RETURN
SUMX(
VALUES(Date[Date]),
IF(Date[Date] = StartDate, CALCULATE(SUM(MEASUREMENTS[OPENING_BASE_VAL])), 0))
在这里,我们首先将开始日期保存到一个变量中,以避免多次计算。然后我们使用 VALUES 函数创建一个日期列表,并使用 SUMX 逐个日期地迭代这个列表。如果当前迭代的日期是开始日期,则将值相加,否则将得到零。
如果您可以使用空白代替零,则可以使用更优化/更快的代码:
OP =
VAR StartDate = [StartDate]
RETURN
CALCULATE(SUM(MEASUREMENTS[OPENING_BASE_VAL]), KEEPFILTERS(Date[Date] = StartDate) )
在这里,我们只计算日期等于开始日期的总和。由于没有迭代,也没有“IF”,所以代码要快得多。总数将相同,只有行项目将显示空白而不是零。
推荐阅读
- c# - Request.Form 序列化为 JSON 并遍历 JSON 中的所有属性
- android - 在我使用 onTouchlistener 之后,onclick 侦听器停止在 recyclerview 中工作
- python - Pycharm - 打破任何异常但忽略 StopIteration 和 ExitGenerator
- python - 将字典列表合并到单个字典中,为公共键添加值
- javascript - 如何使用 Thymeleaf blur/onblur 事件调用函数?
- servlets - 如何检测 HttpServletRequest 是否有正文?
- python - 每个句子的平均单词
- sql - 使用一个 SQL 查询从特定日期和时间范围内选择信息
- regex - Angular中模板驱动形式的正则表达式验证
- python - WTForms 2.3.0 重大更改 - ImportError: cannot import name 'HTMLString' from 'wtforms.widgets'