Рассчитать разницу строк в Power Bi - PullRequest
3 голосов
/ 14 июня 2019

Мне нужна помощь в расчете разницы между предыдущей строкой и% после нее для построения воронки в Power Bi.

enter image description here

Не могли бы вы помочь мне?

1 Ответ

4 голосов
/ 15 июня 2019

Я использовал следующую таблицу для создания прототипа решения:

Имя таблицы: «Данные»

enter image description here

(имена столбцовнемного отличается, чтобы сделать наименование меры проще; измените их по своему усмотрению).

Создайте первую меру:

Total Amount = SUM(Data[Amount])

Создайте вторую меру:

Accumulated Difference =
VAR Current_Index = MAX ( Data[Index] )
VAR Initial_Amount =
    CALCULATE ( 
        MAX ( Data[Amount] ), 
        FILTER ( ALL ( Data ), Data[Index] = 1 ) )
VAR Accumulated_Reductions =
    CALCULATE (
        [Total Amount],
        FILTER ( ALL ( Data ), Data[Index] > 1 && Data[Index] <= Current_Index ) )
RETURN
    Initial_Amount - Accumulated_Reductions

Создайте третьюмера:

% Previous =
VAR Current_Index = MAX ( Data[Index] )
VAR Current_Difference =
    CALCULATE (
        [Accumulated Difference],
        FILTER ( ALL ( Data ), Data[Index] = Current_Index ) )
VAR Previous_Difference =
    IF (Current_Index > 1,
        CALCULATE (
            [Accumulated Difference],
            FILTER ( ALL ( Data ), Data[Index] = Current_Index - 1 ) ) )
RETURN
    DIVIDE ( Current_Difference, Previous_Difference )

Результат:

enter image description here

Объяснение:

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

Вторая мера: Сначала мы находим индекс видимым в текущей строке и сохраняем его в переменной.Затем мы находим начальную сумму (сумма, где индекс = 1), потому что она нам нужна в качестве отправной точки.ВСЕ необходимо, чтобы игнорировать фильтры, примененные к строке.Затем, используя аналогичную схему, мы вычисляем накопленные сокращения между текущей и исходной строками (например, для шага D нам нужно суммировать суммы для индексов (4, 3, 2)). Наконец, желаемый результат - это просто начальная сумма -накопленные сокращения.

Третья мера: Используя очень похожую технику, мы сначала находим накопленную разницу для текущей строки, затем для предыдущей строки.Единственным нюансом здесь является проверка предыдущей строки на предмет начальных условий (если это начальная строка с индексом 1, не рассчитывайте предыдущие значения).Как только текущие и предыдущие различия известны, мы просто делим их.

...