【问题标题】:Get earlier value using DAX Measure使用 DAX Measure 获得更早的价值
【发布时间】:2019-02-26 19:56:22
【问题描述】:

目标:我想将计算的列公式转换为度量值,因为EARLIER 函数不适用于度量值。

要修改的查询:

VAR sumed_exp = 
    DIVIDE(
        SUM(Retention[Week n-1]),
        SUM(Retention[Week n-2])
        )
VAR PrevDay =
    CALCULATE (
        LASTDATE ( Retention[Report Date] ),
        Retention[Report Date] < EARLIER ( Retention[Report Date] )
RETURN
CALCULATE(
    sumed_exp,
    PrevDay 
    )

解释: 基本上我想要表达的值的最后一个值是:

  • sum 列第 n-1 周中的所有值 divided by
  • sum 第 n-2 周列中的所有值

【问题讨论】:

  • 如果你想在CALCULATE 中使用sumed_exp 来修改它的过滤器上下文,你需要让它成为一个度量而不是一个常量变量。 CALCULATE 不会改变常量。
  • 它现在可以通过衡量它来工作......我不知道它会有所作为
  • 度量有点像函数。它将在不同的上下文中进行不同的评估。一旦你定义了一个变量,它就是一个常量。

标签: powerbi dax


【解决方案1】:

这是一个标准的DAX Pattern for a cumulative total

您在FILTER 中使用MAX 而不是EARLIER

VAR PrevDay =
    CALCULATE (
        LASTDATE ( Retention[Report Date] ),
        FILTER (
            ALL ( Retention[Report Date] ),
            Retention[Report Date] < MAX ( Retention[Report Date] )
        )
    )

RETURN
CALCULATE(
    DIVIDE(
        SUM(Retention[Week n-1]),
        SUM(Retention[Week n-2])
    ),
    Retention[Report Date] = PrevDay 
)

请注意,这是当前过滤器上下文中的最大值,而不是整个列。

【讨论】:

  • 我收到错误消息:“真/假表达式未指定列...”
  • 这可能来自您的CALCULATE 部分。你不能只把一个常数作为过滤器。尝试输入Retention[Report Date] = PrevDay 而不是只输入PrevDay
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
相关资源
最近更新 更多