Возврат при изменении значения - PullRequest
0 голосов
/ 31 октября 2019

Это мои данные

SerialNumber  Reading  Date
A             4        10/30/2019
A             4        10/29/2019
A             3        10/28/2019
B             11       10/30/2019
B             9        10/29/2019
B             6        10/28/2019
C             25       10/30/2019
C             25       10/15/2019
C             25       10/13/2019
C             21       10/9/2019
C             21       10/3/2019

Мне нужно иметь возможность создать меру или вычисляемый столбец, в котором указывается дата последнего изменения каждого серийного номера. Поэтому мне нужно это:

SerialNumber  Reading  Date          DateChanged
A             4        10/30/2019    10/28/2019
A             4        10/29/2019    10/28/2019
A             3        10/28/2019    10/28/2019
B             11       10/30/2019    10/29/2019
B             9        10/29/2019    10/29/2019
B             6        10/28/2019    10/29/2019
C             25       10/30/2019    10/9/2019
C             25       10/15/2019    10/9/2019
C             25       10/13/2019    10/9/2019
C             21       10/9/2019     10/9/2019
C             21       10/3/2019     10/9/2019

Вот код, который я пробовал, но он дал мне максимальную дату для каждого серийного номера

Column = CALCULATE(
MAX(
SMU_Lookup[Date]),
FILTER(
ALL(SMU_Lookup),
 SMU_Lookup[Reading] < MAX(SMU_Lookup[Reading])
 && SMU_Lookup[SerialNumber] = EARLIER(SMU_Lookup[SerialNumber])
)
)

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Сначала я создал меру (переменная может работать и здесь) для хранения максимального значения для каждого SerialNumber

MaxReading = CALCULATE(MAX(SMU_Lookup[Reading]),ALLEXCEPT(SMU_Lookup, SMU_Lookup[SerialNumber]))

Затем я создал вычисляемый столбец LastUpdate следующим образом

LastUpdate = CALCULATE(MAX(SMU_Lookup[Date]), FILTER(ALLEXCEPT(SMU_Lookup, SMU_Lookup[SerialNumber]), SMU_Lookup[Reading] < [Max Reading]))

Достаточно просто, и это работает для случаев, когда есть несколько чтений с одинаковыми SerialNumber и Date.

0 голосов
/ 31 октября 2019

Я думаю, что это вычисляемый столбец, который вы ищете:

DateChanged =
VAR max_date =
    MAXX (
        ALLEXCEPT ( 'SMU_Lookup', SMU_Lookup[SerialNumber] ),
        'SMU_Lookup'[Date]
    )
VAR reading_max_date =
    CALCULATE (
        MAX ( 'SMU_Lookup'[Reading] ),
        ALLEXCEPT ( 'SMU_Lookup', SMU_Lookup[SerialNumber] ),
        'SMU_Lookup'[Date] = max_date
    )
RETURN
    CALCULATE (
        MAX ( SMU_Lookup[Date] ),
        ALLEXCEPT ( 'SMU_Lookup', SMU_Lookup[SerialNumber] ),
        'SMU_Lookup'[Reading] <> reading_max_date
    )
  1. Функция ALLEXCEPT возвращает таблицу со строками, в которых SerialNumber совпадает с SerialNumber в текущей строке.
  2. Функция MAXX возвращает самую последнюю дату для этой таблицы.
  3. [VAR reading_max_date] содержит показание для max_date для каждого SerialNumber.
  4. После оператора RETURN MAX(Дата) рассчитывается, если чтение отличается от чтения_max_date.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...