查找具有相同ID(Power BI)的上一小时值

时间:2019-11-14 10:01:19

标签: powerbi id

我需要创建一个新列来标识相同ID的最后一个小时行,但不能丢失其他具有相同ID的行。

你能帮我吗?!

谢谢!

当前数据:

ID      Date    Hour
1562    13Oct   11:00
1562    13Oct   15:00
1562    13Oct   22:00

所需结果:

ID      Date    Hour    What I Need (new column)
1562    13Oct   11:00   0
1562    13Oct   15:00   0
1562    13Oct   22:00   1

1 个答案:

答案 0 :(得分:1)

提供此数据:

ID      Date        Hour
1562    2019-10-13  11:00
1562    2019-10-13  15:00
1562    2019-10-13  22:00
1563    2019-10-13  15:00
1563    2019-10-13  22:00
1562    2019-10-14  11:00

您可以按照以下步骤创建它:

ID      Date        Hour    Max_Row
1562    2019-10-13  11:00   0
1562    2019-10-13  15:00   0
1562    2019-10-13  22:00   1
1563    2019-10-13  15:00   0
1563    2019-10-13  22:00   1
1562    2019-10-14  11:00   1
  1. IDDate分组,添加两个名为All_Rows的新列 使用所有行操作,而Max_H使用最大操作 小时。
  2. 展开All_Rows的所有行。
  3. 添加一个条件列IF Max_H = all_rows.Hour THEN 1 ELSE 0
  4. 删除不需要的列。

所有操作都使用用户界面完成,但是代码如下:

let
    Source = Table.FromRows(// code genereted from pasting above values //)

    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID", "Date"}, {{"All_Rows", each _, type table [ID=number, Date=date, Hour=time]}, {"Max_H", each List.Max([Hour]), type time}}),
    #"Expanded All_Rows" = Table.ExpandTableColumn(#"Grouped Rows", "All_Rows", {"ID", "Date", "Hour"}, {"All_Rows.ID", "All_Rows.Date", "All_Rows.Hour"}),
    #"Added Conditional Column" = Table.AddColumn(#"Expanded All_Rows", "Max_Row", each if [All_Rows.Hour] = [Max_H] then 1 else 0),
    #"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column",{"All_Rows.Date", "All_Rows.ID", "Max_H"})
in
    #"Removed Columns"

请注意,最大值是同时为IDDate计算的,但是我想您可以弄清楚如果只想为ID做该怎么办。