我在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 = [开始日期]”,始终为false。
SELECTEDVALUE是以下代码的语法糖:如果HASONEVALUE(DATE’[DATE])然后返回Date [Date],否则返回空白。由于总计中有很多值(所有日期),因此您将获得空白。
要解决此问题,您需要按日期进行迭代。
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”,因此代码要快得多。总数将相同,仅订单项将显示空白而不是零。