Excel / DAX / Power Query:如何筛选 table 以查找在两个日期 window 的 24 小时内填写的记录

Excel / DAX / Power Query: How to filter table to find records that fill within a 24 hour window from two dates

这个问题让我很头疼。甚至不确定它是否可能。

我有 2 个日期列:"Date_of_Call" 和 "Error_Open_Time"

我想过滤此报告以仅显示 Error_Open_Time 在 Date_of_Call 时间 window 的 24 小时内的记录。

示例:

如果 Error_Open_Time = '11/6/2016 1:17:00 PM' 和 Date_of_Call = '11/6/2016 12:00:00 AM',那么这条记录应该显示在过滤器中,因为 Error_Open_Time 属于 24 小时 window。

如果 Error_Open_Time = '12/11/2016 12:35:00 AM' 和 Date_of_Call = '12/10/2016 12:00:00 AM',那么这条记录应该不会出现在过滤器中,因为 Error_Open_Time 不在 24 小时内 window。

此外,如果 Error_Open_Time 日期早于 Date_of_Call 日期,则应将其过滤掉,因为没有必要。

我希望这是有道理的。感谢您的帮助!

您可以在 Power Query 中一起减去日期,这将为您提供持续时间。如果 Error_Open_TimeDate_of_Call 列是 DateDateTime 类型,那么这应该可以解决问题:

  1. 使用公式 [Error_Open_Time] - [Date_of_Call]
  2. 添加自定义列
  3. 将自定义列过滤为 24 小时时间段。您可以执行 "is greater than or equal to" -1.00:00:00 和 "is less than or equal to" 1.00:00:00(1 天之间)。
  4. 删除自定义列

步骤应如下所示:

#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [Error_Open_Time] - [Date_of_Call]), #"Filtered Rows" = Table.SelectRows(#"Added Custom", each [Custom] >= #duration(-1, 0, 0, 0) and [Custom] <= #duration(1, 0, 0, 0)), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom"})

在您的 table 中创建计算列以确定要过滤的记录。

=
IF (
    'Table'[Date_of_Call]
        = DATE ( YEAR ( 'Table'[Error_Open_Time] ), MONTH ( 'Table'[Error_Open_Time] ), DAY ( 'Table'[Error_Open_Time] ) ),
    1,
    0
)

然后在您的报告中添加一个过滤器,该过滤器仅使用计算列中等于 1 的值。

如果有帮助请告诉我。

对于 PowerQuery,我会在一行中完成,不需要添加列:

FilterRecords = Table.SelectRows(Source, each ([Error_Open_Time] > [Date_of_Call]) and ([Date_of_Call] + #duration(1,0,0,0) >= [Error_Open_Time])) 

这种变体也是可能的:

FilterRecords = Table.SelectRows(Source, each ([Error_Open_Time] > [Date_of_Call]) and (Date.AddDays([Date_of_Call], 1) >= [Error_Open_Time])) 

如果需要SQL,则使用

SELECT [Date_of_Call], [Error_Open_Time]
FROM Table
WHERE [Error_Open_Time] > [Date_of_Call] 
      AND 
      (DateAdd(day, 1, [Date_of_Call]) >= [Error_Open_Time])