Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 基于其他列中的条件查找上一个值_Powerbi_Dax - Fatal编程技术网

Powerbi 基于其他列中的条件查找上一个值

Powerbi 基于其他列中的条件查找上一个值,powerbi,dax,Powerbi,Dax,目标: previous value = LOOKUPVALUE( Table[value], Table[date], CALCULATE( MAX(Table[date]), FILTER( Table, Table[group]=EARLIER(Table[group]) && Table[date]<EARLIER(Table[date]) )

目标:

previous value = 
LOOKUPVALUE(
    Table[value],
    Table[date],
    CALCULATE(
        MAX(Table[date]),
        FILTER(
            Table,
            Table[group]=EARLIER(Table[group]) &&  Table[date]<EARLIER(Table[date])
        )
    )
)
根据条件获取上一个值

情况:

previous value = 
LOOKUPVALUE(
    Table[value],
    Table[date],
    CALCULATE(
        MAX(Table[date]),
        FILTER(
            Table,
            Table[group]=EARLIER(Table[group]) &&  Table[date]<EARLIER(Table[date])
        )
    )
)
我有一张编号为1,2的桌子。我想看看以前的值(指以前的日期),但每个组

所需输出:

previous value = 
LOOKUPVALUE(
    Table[value],
    Table[date],
    CALCULATE(
        MAX(Table[date]),
        FILTER(
            Table,
            Table[group]=EARLIER(Table[group]) &&  Table[date]<EARLIER(Table[date])
        )
    )
)
我的输出应该是这样的

+------------+-------+-------+----------------+
|    date    | group | value | previous value |  
+------------+-------+-------+----------------+
| 2019-02-02 |     2 |    50 |             45 |  
| 2019-02-02 |     1 |    60 |             80 |  
| 2019-01-18 |     2 |    45 |                |  
| 2019-01-18 |     1 |    80 |                |  
+------------+-------+-------+----------------+
我的尝试:

previous value = 
LOOKUPVALUE(
    Table[value],
    Table[date],
    CALCULATE(
        MAX(Table[date]),
        FILTER(
            Table,
            Table[group]=EARLIER(Table[group]) &&  Table[date]<EARLIER(Table[date])
        )
    )
)
上一个值=
查找值(
表[值],
表[日期],
算计(
最大值(表[日期]),
滤器(
桌子

Table[group]=previous(Table[group])&&Table[date]据我所知,您希望将其作为计算列,而不是度量值。请尝试:

Previous Value =
  VAR Current_Date = Table[date]
  VAR Previous_Date =
      CALCULATE (
          MAX ( Table[date] ),
          Table[date] < Current_Date,
          ALLEXCEPT ( Table, Table[group] )
      )
  RETURN
      CALCULATE (
          MAX ( Table[value] ),
          Table[Date] = Previous_Date,
          ALLEXCEPT ( Table, Table[group] )
      )
上一个值=
VAR当前日期=表[日期]
VAR上一个日期=
算计(
最大值(表[日期]),
表[日期]<当前日期,
ALLEXCEPT(表,表[组])
)
返回
算计(
最大值(表[值]),
表[日期]=上一个日期,
ALLEXCEPT(表,表[组])
)
工作原理:

  • 我们迭代表中的每条记录,并将其日期存储在“Current_date”变量中
  • 对于每个记录,查找previous date,它是比我们正在迭代的记录的日期小的最大日期。为此,我们需要访问所有日期,而不仅仅是当前记录的日期,因此我们需要使用all函数。但是,由于我们需要按组执行此操作,因此我们使用ALLEXCEPT,它为当前gro保留筛选器起来
  • 一旦找到上一个日期,您就可以使用完全相同的模式来查找上一个值—查找记录日期等于上一个日期的最大值,同时保留组筛选器

  • 如果所有答案都能这样写…谢谢!