Эквивалент Sumif в PowerBI не работает должным образом с функцией DAX - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь использовать эквивалент SUMIF в PowerBI. Я уже читал много похожих тем, описывающих использование CALCULATE и SUM в сочетании с функциями FILTER. Но никто из них не мог помочь мне с моей проблемой.

Что я хочу сделать:

Производственная линия записывает метку времени в файл CSV при запуске события (например, запуск машины, остановка машины и т. Д.). Файл CSV обрабатывается PowerQuery таким образом, что все даты начала доступны в одном столбце таблицы. Столбец называется «Начало события».

Для дальнейшего анализа событий машины я хотел бы добавить еще один столбец «Конец события», который также содержит дату окончания каждого события. Дата окончания не указывается в файле CSV, но равна дате начала следующего события.

Итак, мне нужно иметь значение в строке n, столбце 2, которое взято из строки n + 1, столбца 1. В Excel очень легко сделать это ... Одно из решений (не лучшее - я знаю) - использовать SUMIF вместе со столбцом Index и столбцом Index + 1:

enter image description here

Мне пришла в голову идея использовать SUMIF, потому что я знаю, что есть эквивалентная функция с выражением DAX (CALCULATE, SUM и фильтры). К сожалению, в этом случае все примеры, приведенные в других потоках, не работают.

Может ли кто-нибудь помочь мне с этим? Возможно, есть еще одна функция DAX для решения этой проблемы.

1 Ответ

1 голос
/ 04 июля 2019

Вот два варианта.Первый возвращает [Start Event], где [Index] на 1 больше, чем [Index] в текущей строке.

Второй возвращает наименьшее [Start Event], которое больше, чем [Start Event]в текущей строке.

End Event =
CALCULATE (
    MAX ( 'Table1'[Start Event] ),
    FILTER ( 'Table1', 'Table1'[index] = EARLIER ( 'Table1'[index] ) + 1 )
)  

End Event 2 =
CALCULATE (
    MIN ( 'Table1'[Start Event] ),
    FILTER ( 'Table1', 'Table1'[Start Event] > EARLIER ( 'Table1'[Start Event] ) )
)

enter image description here

...