Промежуточный итог на основе значения других столбцов - PullRequest
2 голосов
/ 21 июня 2019

Мне нужно рассчитать промежуточную итоговую сумму прогноза, начиная с максимального значения, исходя из двух складских мест и один раз для каждого продукта (номера товаров повторяются из-за местоположений складов). например, продукт № "1" следует использовать один раз для подведения итогов

Мой первый код, который не суммировал одинаковые суммы прогноза независимо от номера позиции.

enter image description here

RunningTotal1 = 
VAR
CurrentAmount= Listing[Forecast Amount]
RETURN
SUMX (
FILTER (
Listing;
Listing[Forecast Amount]>= CurrentAmount);
Listing[Forecast Amount])

Мой второй код, в котором промежуточный итог был основан на местоположении запаса, он рассчитывает для каждого местоположения независимо, все еще не суммировал одинаковые прогнозные суммы независимо на основе позиции №.

enter image description here

RunningTotal2 = 
VAR CurrentAmount = Listing[Forecast Amount]
VAR Location = Listing[Stock Location]
RETURN
SUMX (
FILTER (
Listing;
Listing[Stock Location] = Location &&
Listing[Forecast Amount]>= CurrentAmount);
Listing[Forecast Amount])

Но когда я добавляю второе местоположение в формулу, это выдает ошибку.

"Операции сравнения DAX не поддерживают сравнение значений типа Text со значениями типа True / False. Попробуйте использовать функцию VALUE или FORMAT для преобразования одного из значений."

RunningTotal3 = 
VAR CurrentAmount = Listing[Forecast Amount]
VAR LocationW = Listing[Stock Location] = "Warehouse"
VAR LocationT = Listing[Stock Location] = "Total Stock"
RETURN
SUMX (
FILTER (
Listing;
Listing[Stock Location] = LocationW ||
Listing[Stock Location] = LocationT &&
Listing[Forecast Amount]>= CurrentAmount);
Listing[Forecast Amount])

То, что я ожидаю, это

enter image description here

Hello @ RADO,

Я пытался добавить в качестве меры, но не смог, поэтому я добавил в качестве нового столбца. Я понимаю, что мой код неверен, в вашем изображении № 5 и 6 имеют разные номера. моя формула

Forecast Index = RANKX(Listing;Listing[Forecast Amount])

вот результат Индекс прогноза

привет

1 Ответ

0 голосов
/ 26 июня 2019

Вам необходимо добавить столбец в таблицу «Листинг», который определяет порядок для промежуточного итога.Вы не можете использовать для этого сумму прогноза, потому что есть случаи, когда разные предметы имеют одинаковые суммы (например, предметы 66 и 99), и нет способа разрешить эти связи (какие предметы должны быть накоплены первыми - 66 или99? Невозможно сказать).

Часто для этого используются поля даты / времени, но если у вас их нет, вы можете добавить индекс на основе любых правил, которые вам нужны.Для этого примера я вручную добавил «Индекс прогноза» следующим образом:

enter image description here

Индекс прогноза - это просто порядок сортировки - если вы сортируете по нему,Вы получите макет, точно соответствующий вашей таблице «желаемого результата».

Затем создайте меру:

RT Expected = 
VAR Current_Index =  MAX ( Listing[Forecast Index] )
VAR Summary_Table =
    SUMMARIZE (
        FILTER (
            ALL ( Listing ),
            Listing[Forecast Index] <= Current_Index  && 
            Listing[Stock Location] <> "Without Stock" ),
        Listing[Item No],
        Listing[Forecast Amount] )
RETURN
    SUMX ( Summary_Table, Listing[Forecast Amount] )

Результат:

enter image description here

Примечание. Если вы неЯ не хочу видеть пункты 2 и 4, просто удалите их из визуального фильтра.

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

  • Сначала мы используем FILTER для создания виртуальной таблицы, которая а) игнорирует местоположения "Без запаса" и б) сохраняет только прогнозные суммы, которые нам нужны дляпромежуточный итог;
  • Во-вторых, мы используем SUMMARIZE для группировки этой виртуальной таблицы по номеру товара и сумме прогноза.Группировка исключает дубликаты;
  • Наконец, мы используем SUMX для итерации дедуплицированной таблицы и суммирования всех соответствующих сумм.

Редактировать:

Вы можете создать правильный индекс с помощью PowerQuery:

  1. В левой панели перейдите к «Данные»"и выберите таблицу" Listing ";
  2. Щелкните правой кнопкой мыши таблицу и выберите" Редактировать запрос ".Power BI откроет окно Power Query;
  3. В Power Query сначала выполните сортировку столбца «Сумма прогноза» по убыванию.Затем сортируйте столбец «Номер элемента» по возрастанию.Это упорядочит ваши записи в том же порядке, в каком они есть на вашем изображении;
  4. Наконец, в окне Power Query перейдите к «Добавить столбец», затем «Индексный столбец», выберите «От 1».Power Query создаст для вас столбец индекса и назовет его «Индекс».Вы можете переименовать его по мере необходимости (т. Е. В «Индекс прогноза»);
  5. Нажмите «Закрыть и применить», а затем создайте меру, которую я предложил, используя этот новый столбец индекса в качестве входных данных.

Если эти инструкции неясны, обратитесь к этой статье:

https://www.excelguru.ca/blog/2018/06/14/ranking-method-choices-in-power-query/

...