Поиск предыдущего значения на основе критериев из другого столбца - PullRequest
0 голосов
/ 20 февраля 2019

Цель:

Получить предыдущее значение на основе критериев.

Ситуация:

У меня есть таблицас номерами групп 1,2.Я хотел бы посмотреть на предыдущее значение (ссылаясь на предыдущую дату), но для каждой группы.

Желаемый результат:

Мой вывод должен выглядеть следующим образом

+------------+-------+-------+----------------+
|    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])
        )
    )
)

1 Ответ

0 голосов
/ 21 февраля 2019

Как я понимаю, вы хотите это как вычисляемый столбец, а не мера.Попробуйте:

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] )
      )

Как это работает:

  1. Мы повторяем каждую запись таблицы и сохраняем ее дату в переменной «Current_Date».
  2. Для каждой записи найдите предыдущую дату, которая является максимальной датой, которая меньше даты записи, которую мы повторяем.Для этого нам нужен доступ ко всем датам, а не только к дате текущей записи, поэтому нам нужно использовать функцию ALL.Однако, поскольку нам нужно сделать это по группам, мы используем ALLEXCEPT, который сохраняет фильтр для текущей группы.
  3. Как только найдена предыдущая дата, вы можете использовать точно такой же шаблон для поиска предыдущего значения - найти значение MAX, где дата записи равна предыдущей дате, при этом сохраняя фильтр группы.
...