【问题标题】:Measure with Sum using Calculate and IF not showing totals correctly in power bi使用计算和如果未在 power bi 中正确显示总计的总和进行测量
【发布时间】:2020-09-07 03:42:10
【问题描述】:

我在power bi 中要求仅显示用户在slicer 中选择的最短日期的金额值。因此创建了以下措施..

  1. 用于捕获最小选定范围

    StartDate = CALCULATE(min(‘DATE’[DATE]),ALLSELECTED(‘DATE’[DATE]))

  2. 仅用于显示最短日期的金额。

    OP = if(SELECTEDVALUE(‘DATE’[DATE]) = [StartDate], CALCULATE(sum(MEASUREMENTS[OPENING_BASE_VAL]),DATESBETWEEN(‘DATE’[DATE],[StartDate],[StartDate])),0)

我得到了想要的输出,但是这个度量的 grand-total 变为 0,如下图所示。非常感谢任何帮助。

【问题讨论】:

    标签: powerbi dax powerbi-desktop measure


    【解决方案1】:

    您总共得到 0 分,因为 第二个公式中的 SELECTEDVALUE(‘DATE’[DATE]) 返回空白,因此您的 IF 表达式读取为“IF BLANK = [开始日期]”,这始终是错误的。

    SELECTEDVALUE 是以下代码的语法糖: IF 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”,所以代码要快得多。总数将相同,只有行项目将显示空白而不是零。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2022-11-09
      • 2022-06-17
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多