Может быть легче прочитать меру, если мы разделим ее на шаги. Здесь та же логика, что и раньше, но для большей ясности используются переменные.
я есть стол с движениями инвентаря. Каждый элемент инвентаря имеет уникальный идентификатор, и они со временем меняют статус (скажем, статусы A, B, C и D, но не всегда в этом порядке). Каждое изменение статуса идентификатора - это новая запись в таблице с отметкой времени изменения статуса. Моя цель - с помощью Power BI DAX рассчитатьномер инвентаря в определенный день в статусе «B», Логика заключается в подсчете количества различных идентификаторов, которые нарушили статус «B» до определенного дня, но не имеют более нового статуса до этого дня.
Пример исходной таблицы:
ID | TimeStamp | Status
1 | 8/20/2018 | A
1 | 8/21/2018 | B
1 | 8/24/2018 | C
2 | 8/19/2018 | A
2 | 8/20/2018 | B
2 | 8/22/2018 | C
2 | 8/24/2018 | D
3 | 8/18/2018 | A
3 | 8/21/2018 | B
4 | 8/15/2018 | A
4 | 8/17/2018 | B
4 | 8/24/2018 | D
Пример выходной таблицы:
Date | Count of Items in Status B on this Day
8/17/2018 | 3
8/18/2018 | 2
8/19/2018 | 0
8/20/2018 | 8
8/21/2018 | 10
8/22/2018 | 5
8/23/2018 | 3
Я думал о создании таблицы для последней метки времени со статусом «B» для каждого идентификатора, а затем искать следующую метку времени после метки времени статуса «B», если применимо:
ID (primary key) | TimeStamp of 'B' breached | TimeStamp of next status breach
1 | 8/20/2018 | 8/21/2018
2 | 8/18/2018 | 8/22/2018
3 | 8/21/2018 |
4 | 8/15/2018 | 8/20/2018
Затем я бы вставил вышеуказанные данные в контекст Date и посчитал количество идентификаторов из приведенной выше таблицы, где "Временная метка 'B' нарушена«значение меньше И»Отметка времени следующего нарушения статуса"значение больше определенной даты.
К сожалению, я не уверен, как включить эту логику в синтаксис DAX, поэтому любые рекомендации будут оценены.
Большое спасибо! Gergő