电源查询 - 在更改日志列

时间:2017-01-31 05:19:40

标签: excel powerbi powerquery

我需要删除记录以显示给定人员的最新记录,并且我正在考虑在自定义列中执行此操作的方法,以便我可以保留最新记录。这本质上是一个状态更改列表,我需要将最后一个更改作为“当前状态”与另一个查询进行合并。每个日期都可以是唯一的,每个人可以进行1到12个状态更改。我在下面选了一个选项,已删除姓氏以保护无辜者。为了示例,每个“名称”都有一个唯一的标识符,我可以用它来防止类似名称的任何重叠。

 AaronS 4/1/2015
 AaronS 10/16/2013
 AaronS 5/15/2013
 AdamS  2/27/2007
 AdamL  12/16/2004
 AdamL  11/17/2004
 AlanG  11/1/2007
 AlexanderJ 7/1/2016
 AlexanderJ 1/25/2016
 AlexanderJ 4/1/2015
 AlexanderJ 10/16/2013
 AlexanderJ 6/1/2013
 AlexanderJ 11/7/2011

我的目标是返回每个“name”的最新日期,并为其他行返回null。然后我可以过滤掉空值以返回每个名称一行。我对功能查询相当新,并且大多熟悉UI,几乎没有学习M代码。我们非常欢迎任何帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用分组依据,如this video中所示。

答案 1 :(得分:1)

界面

  1. 将“姓名”和“日期”数据导入 Power Query。
  2. 按“名称”分组。在“分组依据”对话框中,选择操作所有行。将新列命名为“AllRows”。单击“确定”。
  3. 添加自定义列并将其命名为“LatestRow”。输入下面的公式。单击确定。请注意,“日期”列来自“AllRows”列中的子表。
= Table.Max([AllRows], "Date")
  1. 点击“LatestRow”列右上角的展开按钮。这将返回与每个姓名的最新日期相关联的记录。

代码

let
    Source            = Excel.CurrentWorkbook(){[Name="data"]}[Content],
    GroupedRows       = Table.Group(Source, {"Name"}, {{"AllRows", each _, type table [Name=nullable text, Date=nullable datetime]}}),
    AddedCustomColumn = Table.AddColumn(GroupedRows, "LatestRow", each Table.Max([AllRows], "Date")),
    ExpandedLatestRow = Table.ExpandRecordColumn(AddedCustomColumn, "LatestRow", {"Date"}, {"LatestRow.Date"})
in
    ExpandedLatestRow