Как рассчитать текущий баланс (итоги) Power BI

Я публиковал что-то подобное раньше, но не получил решения, которое сработало.

Я пытаюсь получить прогнозируемую общую сумму запасов. У меня есть 3 измерения [Текущий запас], [Использование], [Покупки]

Расчет за 1 месяц ([Current Stock] + [purchases (for month 1]) - [usage (for month 1)]

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

Это важная часть расчета, и здесь у меня возникают проблемы: если нет данных за конкретный месяц (использование и или покупки), то использование или покупки должны быть классифицированы как 0. Таким образом, уровни запасов будут переноситься на следующий месяц. месяц.

Примеры данных и примеры выходных данных приведены ниже:

текущий запас;

Material    Stock on Hand

A          100

B          500

C          1000

Покупки

Material    PurchDate   Quantity

A       01/01/2023  10

A       01/02/2023  20

A       01/04/2023  30

B       01/01/2023  10

B       01/02/2023  20

B       01/04/2023  15

Применение

Material    UseageDate   Quantity

A       01/01/2023      50

A       01/02/2023      10

A       01/04/2023      20

B       01/01/2023      10

B       01/02/2023      30
 
B       01/04/2023      40

Желаемый результат

| Material  |01/01/2023 |  01/02/2023 |  01/03/2023 |  01/04/2023 |

| A         | 60        |70         |70         |80         |


| B         | 410       |420        |420        |395        |

(Stock on hand + Purch) - Usage(Previous month LoB + Purchases) - usage

надеюсь, вы можете помочь

Где твой предыдущий пост и где ты застрял? Вы ищете DAX или Power Query? Horsey Ride предоставила решение с помощью Power Query.

Anonymous 19.06.2023 17:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте это в powerquery (m)

let StartDate=List.Min(Purchases[PurchDate]&Usage[UseageDate]),
EndDate=List.Max(Purchases[PurchDate]&Usage[UseageDate]),
dates=List.Distinct(List.Transform({Number.From(StartDate)..Number.From(EndDate)}, each Date.StartOfMonth(Date.From(_)))),
#"Added Custom" = Table.AddColumn(Table.FromList(List.Distinct(Stock[Column1] & Purchases[Material] &Usage[Material]),null, {"Material"}), "Custom", each dates),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Added Custom1" = Table.AddColumn(#"Expanded Custom","Stock",(x)=>List.Sum(Table.SelectRows(Stock, each x[Custom]=StartDate and [Column1]=x[Material])[Column2])??0),
#"Added Custom2" = Table.AddColumn(#"Added Custom1","Purchases",(x)=>List.Sum(Table.SelectRows(Purchases, each [Material]=x[Material] and [PurchDate]=x[Custom])[Quantity])??0),
#"Added Custom3" = Table.AddColumn(#"Added Custom2","Usage",(x)=>List.Sum(Table.SelectRows(Usage, each [Material]=x[Material] and [UseageDate]=x[Custom])[Quantity])??0),
#"Grouped Rows" = Table.Group(#"Added Custom3", {"Material"}, {{"data", each 
    let #"Added Index" = Table.AddIndexColumn(Table.Sort(_,{{"Custom", Order.Ascending}}), "Index", 0, 1, Int64.Type),
    #"Added Cum Total" = Table.AddColumn(#"Added Index", "StockCum", each List.Sum(List.FirstN(#"Added Index"[Stock],[Index]+1))),
    #"Added Cum Total2" = Table.AddColumn(#"Added Cum Total", "UsageCum", each List.Sum(List.FirstN(#"Added Index"[Usage],[Index]+1))),
    #"Added Cum Total3" = Table.AddColumn(#"Added Cum Total2", "PurchasesCum", each List.Sum(List.FirstN(#"Added Index"[Purchases],[Index]+1))),
    #"AddBalance" = Table.AddColumn(#"Added Cum Total3","EndingBalance", each [StockCum]-[UsageCum]+[PurchasesCum], type number)
    in #"AddBalance"
, type table [Custom=nullable date, EndingBalance=number] }}),
#"Expanded data" = Table.ExpandTableColumn(#"Grouped Rows", "data", {"Custom", "EndingBalance"}, {"Date", "EndingBalance"}),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Expanded data", {{"Date", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Expanded data", {{"Date", type text}}, "en-US")[Date]), "Date", "EndingBalance", List.Sum)
in  #"Pivoted Column"

Привет, спасибо, что ответили на это. Это решение работает! (с некоторыми изменениями с группировкой по нескольким строкам использования/покупки для одних и тех же дат) Однако есть ли способ динамически выбирать диапазон дат на основе самой большой и самой маленькой даты использования/покупки? Прямо сейчас вы по умолчанию используете #StartDate и #EndDate. Большое спасибо, Джош.

JoshB 20.06.2023 13:17

Удалена логическая бомба для повторяющихся дат. Теперь также автоматически вытягивает дату начала/окончания. Если это сработает для вас, примите решение как решенное и, возможно, проголосуйте. Спасибо

horseyride 20.06.2023 14:31

Спасибо, большая помощь

JoshB 20.06.2023 15:29

Другие вопросы по теме