Совокупная сумма по разным столбцам, сгруппированным по дате и отфильтрованным по-разному - PullRequest
0 голосов
/ 04 декабря 2018

Я хотел бы создать три столбца совокупной суммы на основе трех различных столбцов.Каждая накопленная сумма должна быть рассчитана следующим образом:

  • должна быть сгруппирована по той же дате в столбце dte
  • , столбец A должен быть отфильтрован ASC перед выполнением операции накопленной суммы
  • столбец B & C должен быть отфильтрован DESC перед операцией накопительной суммы.

Должен ли я создавать новые таблицы со столбцами A, B, C, отделенными друг от друга?

+-----------+----+----------+---+----+-----+----------+----------+----------+
|    dte    | id | last_dte | a | b  |  c  | a_cumsum | b_cumsum | c_cumsum |
+-----------+----+----------+---+----+-----+----------+----------+----------+
| 12/4/2018 |  1 | 3-Dec    | 2 |  8 | 200 |        2 |          |          |
| 12/4/2018 |  2 | 3-Dec    | 2 |  5 | 150 |        4 |          |          |
| 12/4/2018 |  8 | 3-Dec    | 2 | 25 |  88 |        6 |          |          |
| 12/4/2018 |  9 | 3-Dec    | 2 | 89 | 456 |        8 |          |          |
| 12/3/2018 | 12 | 2-Dec    | 2 |  1 | 124 |        2 |          |          |
| 12/3/2018 | 13 | 2-Dec    | 2 |  5 |  46 |        4 |          |          |
| 12/3/2018 | 19 | 2-Dec    | 2 | 22 |  10 |        6 |          |          |
+-----------+----+----------+---+----+-----+----------+----------+----------+

1 Ответ

0 голосов
/ 05 декабря 2018

Это классический пример шаблона DAX Cumulative Sum .

. Вам не нужны отдельные таблицы.

Как вычисляемый столбец

a_cum = 
VAR CurrentID = [id]
RETURN
    CALCULATE (
        SUM ( Table01[a] ),
        FILTER (
            ALLEXCEPT ( Table01, Table01[dte] ),
            Table01[id] <= CurrentID
        )
    )

Столбцы b_cum и c_cum аналогичны.Просто отключите столбец, на который вы ссылаетесь, и измените направление неравенства для DESC вместо ASC.Например,

b_cum = 
VAR CurrentID = [id]
RETURN
    CALCULATE (
        SUM ( Table01[b] ),
        FILTER (
            ALLEXCEPT ( Table01, Table01[dte] ),
            Table01[id] >= CurrentID
        )
    )

Это должно дать вам такую ​​таблицу:

Calculated Columns


Обратите внимание, чтоони упорядочивают совокупную сумму по столбцу id (ASC для a_cum и убывает для b_cum и c_cum).Если вам нужно отсортировать по значениям столбцов, а не по их id, то я бы предложил добавить вычисляемый столбец для каждого, чтобы ранжировать их так, как вы хотите.Затем используйте столбец rank вместо столбца id в DAX.

...