Создайте вычисляемый столбец для предыдущего месяца на основе одного столбца в power bi

CUSTNAME    DATE         SALES
  AAAA     2022-12-31      30
  BBBB     2022-12-31      40
  AAAA     2023-01-31      50
  BBBB     2023-01-31      60
  AAAA     2023-02-28      70
  BBBB     2023-02-28      80

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

CUSTNAME    DATE         SALES  PERMDATA
  AAAA     2022-12-31      30    NULL
  BBBB     2022-12-31      40    NULL
  AAAA     2023-01-31      50     30
  BBBB     2023-01-31      60     40
  AAAA     2023-02-28      70     50
  BBBB     2023-02-28      80     60

Пожалуйста помоги мне с этим.

В соответствии с общими правилами этого форума отредактируйте свой вопрос, чтобы показать, что вы пробовали, и где именно вам нужна помощь. Кроме того, уточните, ищете ли вы решение в Power BI (DAX) или Power Query, поскольку вы пометили оба.

Ron Rosenfeld 12.04.2023 12:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
195
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы ищете решение на базе DAX:

PreviousMonthSales = CALCULATE(SUM(YourTableName[Sales]),PREVIOUSMONTH(YourTableName[Date]))
Ответ принят как подходящий

Вот пара способов в M

Слияние поверх себя. Вероятно, самый быстрый для большого набора данных:

let  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
#"Changed Type" = Table.TransformColumnTypes(#"Added Index",{{"CUSTNAME", type text}, {"DATE", type date}, {"SALES", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "LASTDATE", each Date.AddDays(Date.StartOfMonth([DATE]),-1)),
#"Merged Queries" = Table.NestedJoin(#"Added Custom", {"CUSTNAME", "LASTDATE"}, #"Added Custom", {"CUSTNAME", "DATE"}, "Added Custom", JoinKind.LeftOuter),
#"Expanded Added Custom" = Table.ExpandTableColumn(#"Merged Queries", "Added Custom", {"SALES"}, {"PERMDATA"}),
#"Sorted Rows" = Table.Sort(#"Expanded Added Custom",{{"Index", Order.Ascending}}),
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Index", "LASTDATE"})
in  #"Removed Columns"

Пользовательский столбец, вытягивающий совпадение для каждой строки. Самый маленький. Самый медленный:

let  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"CUSTNAME", type text}, {"DATE", type date}, {"SALES", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type","PERMDATA",(x)=>try Table.SelectRows(#"Changed Type", each  [CUSTNAME]=x[CUSTNAME] and [DATE]=Date.AddDays(Date.StartOfMonth(x[DATE]),-1)) [SALES]{0} otherwise null ,type number)
in  #"Added Custom"

Группировать и сдвигать ряд. Вероятно, между ними по скорости:

let Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"DATE", type date}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
#"Grouped Rows" = Table.Group(#"Added Index", {"CUSTNAME"}, {{"data", each 
    let a = Table.Sort(_,{{"DATE", Order.Ascending}}),
    shiftedList = {null} & List.RemoveLastN(a[SALES],1),
    custom1 = Table.ToColumns(a) & {shiftedList}
    in Table.FromColumns(custom1,Table.ColumnNames(a) & {"PERMDATA"})
, type table }}),
#"Expanded data" = Table.ExpandTableColumn(#"Grouped Rows", "data", {"DATE", "SALES", "PERMDATA","Index"}, {"DATE", "SALES", "PERMDATA","Index"}),
#"Sorted Rows" = Table.Sort(#"Expanded data",{{"Index", Order.Ascending}}),
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Index"})
in #"Removed Columns"

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