Я не знаю, является ли это наиболее эффективным, поскольку я довольно новичок в PQ.
Но один из способов сделать это - использовать несколько таблиц.
- Фильтр Таблица, в которой STAMP = APPROVED
- Создайте еще одну отфильтрованную таблицу, в которой STAMP = REVIEWED
- Сгруппируйте "просмотренную таблицу" по NUMBER с операцией = MAX, чтобы получить дату последнего просмотра
- Объедините утвержденные данные и последняя проверенная таблица
- Добавьте пользовательский столбец, вычисляющий разницу между проверенной и утвержденной датой
- Добавьте столбец Продолжительность обратно в исходную таблицу.
Обратите внимание, что Я добавил несколько строк в таблицу, чтобы учесть несколько дат пересмотра.
Это можно увидеть в результатах.
M-код:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"NUMBER", type text}, {"STAMP", type text}, {"STAMP DATE", type date}, {"STAMP MONTH", type text}, {"STAMP YEAR", Int64.Type}}),
approved = Table.SelectRows(#"Changed Type", each ([STAMP] = "APPROVED")),
reviewed = Table.SelectRows(#"Changed Type",each ([STAMP] = "REVIEWED")),
lastReview = Table.Group(reviewed, {"NUMBER"}, {{"lastREVIEW", each List.Max([STAMP DATE]), type date}}),
cmbTbl = Table.AddJoinColumn(approved,"NUMBER",lastReview,"NUMBER","RevDate"),
#"Added Custom" = Table.AddColumn(cmbTbl, "Custom", each List.Last(Table.Column([RevDate],"lastREVIEW")) - [STAMP DATE]),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", Int64.Type}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"STAMP", "STAMP DATE", "STAMP MONTH", "STAMP YEAR", "RevDate"}),
addDuration = Table.AddJoinColumn(#"Changed Type","NUMBER",#"Removed Columns","NUMBER","Duration"),
#"Expanded Duration" = Table.ExpandTableColumn(addDuration, "Duration", {"Custom"}, {"Duration"})
in
#"Expanded Duration"
РЕДАКТИРОВАТЬ: Я только что заметил, что метод Table.ExpandTable
имеет возможность изменить порядок из исходной таблицы. Если это может быть проблемой, я предлагаю изменить последние несколько строк кода на:
addDuration = Table.AddJoinColumn(#"Changed Type","NUMBER",#"Removed Columns","NUMBER","comb"),
#"Added Custom1" = Table.AddColumn(addDuration, "Duration", each List.First(Table.Column([comb],"Custom"))),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom1",{"comb"})
in
#"Removed Columns1"