Сравнение 2 разных строк в Power Query Editor - PullRequest
0 голосов
/ 24 апреля 2020

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

Способ получения данных возможность иметь более одной марки REVIEWED, меня интересует только самая последняя.

data

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Я не знаю, является ли это наиболее эффективным, поскольку я довольно новичок в 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"

enter image description here

РЕДАКТИРОВАТЬ: Я только что заметил, что метод 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"
0 голосов
/ 24 апреля 2020

Полагаю, это работает нормально ...

Добавить столбец, в котором указывается дата последнего просмотра каждого идентификатора

Фильтр для получения УТВЕРЖДЕННЫХ строк с датой ОБЗОРА

Вычтите УТВЕРЖДАЮЩУЮ дату из максимальной ОБЗОРНОЙ даты для разницы

Удалите лишние столбцы

let  Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source,"MaxDate",(i)=>List.Max(Table.SelectRows(Source, each [NUMBER]=i[NUMBER] and [STAMP]="REVIEWED") [STAMP DATE]), type date ),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([STAMP] = "APPROVED") and ([MaxDate] <> null)),
#"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Custom", each [STAMP DATE]-[MaxDate]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"MaxDate"}),
#"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Custom", type number}, {"STAMP DATE", type date}})
in  #"Changed Type"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...