Найти последнее количество остатков на одного клиента в месяц (Power Pivot) - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть приведенный ниже набор данных ( Таблица 1 ), и я хотел бы создать новый вычисляемый столбец, в котором будет указана только последняя сумма баланса в месяц для каждого клиента.

Последний столбец ( EOM Balance Qty ) иллюстрирует то, что мне нужно.

  -----------------------------------------------------
  |                     Table 1                       |
  ----------------------------------------------------- -------------------
  |     Date    | Customer | Type | Qty | Balance Qty | | EOM Balance Qty |
  |=============|==========|======|=====|=============| |=================|
  |  1/Jan/2019 | Alan     | Buy  |  15 |          15 | |                 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  2/Jan/2019 | Alan     | Use  |  10 |           5 | |               5 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  2/Feb/2019 | Alan     | Buy  |  30 |          35 | |                 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  3/Feb/2019 | Alan     | Use  |  10 |          25 | |              25 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  3/Mar/2019 | Alan     | Use  |  15 |          10 | |              10 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  4/Apr/2019 | Alan     | Buy  | 100 |         110 | |                 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  5/Apr/2019 | Alan     | Use  |  35 |          75 | |              75 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  1/Jan/2019 | Bob      | Buy  |  10 |          10 | |                 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  2/Jan/2019 | Bob      | Use  |  10 |           0 | |               0 |
  |-------------|----------|------|-----|-------------| |-----------------|
  | 20/Jan/2019 | Charlie  | Buy  | 100 |         100 | |             100 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  1/Feb/2019 | Charlie  | Use  |  20 |          80 | |              80 |
  |-------------|----------|------|-----|-------------| |-----------------|
  |  5/Apr/2019 | Charlie  | Use  |  10 |          70 | |                 |
  |-------------|----------|------|-----|-------------| |-----------------|
  | 30/Apr/2019 | Charlie  | Use  |  55 |          15 | |              15 |
  ----------------------------------------------------- -------------------

Образец файла Excel здесь

Я попытался найти похожее решение, и я получил это . Тем не менее, я получаю сообщение об ошибке, когда я добавляю его как вычисляемый столбец или меру в Power Pivot.

Я также пытался использовать функцию ENDOFMONTH, но некоторые даты не возвращали результат, как они должны.

= CALCULATE ( SUM ( Table1[closing_balance_qty] ), ENDOFMONTH ( Table1[Date] ) )

Любая помощь очень ценится.

1 Ответ

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

Обновлено на основе комментариев:

Я изменил ваши новые исходные данные следующим образом:

enter image description here

Вместо предыдущего столбца «Дата» мы теперь будем использовать столбец «Дата-время», который содержит дату + время.

Вам также необходимо добавить поле «Год-Месяц» в исходный файл, а не в вычисляемый столбец. Либо попросите поставщика источника данных добавить его для вас, либо используйте PowerQuery.

Далее создайте вычисляемый столбец:

EOM Balance Qty = 
VAR Last_Date_Time =
    CALCULATE ( 
      MAX ( Table1[Date-Time] ), 
      ALLEXCEPT ( Table1, Table1[Customer], Table1[Year-Month] ) 
    )
RETURN
    IF ( Table1[Date-Time] = Last_Date_Time, CALCULATE(SUM ( Table1[Balance Qty] )))

Результат:

enter image description here

Как это работает:

  • Сначала мы группируем данные по клиенту и году-месяцу, используя ALLEXCEPT, и находим максимальное время-дату в группе.
  • Затем, для текущей записи, мы сравниваем ее дату-время с последней найденной датой-временем. Если они одинаковые, мы рассчитываем остаток, в противном случае возвращаем пустое.
...