【问题标题】:PowerBI - Comparing two sets of data on timestampPowerBI - 比较两组时间戳数据
【发布时间】:2019-12-10 22:05:21
【问题描述】:

我正在尝试比较两组具有相似性的数据。他们没有所有相同的列,但我只需要比较员工 ID、开始时间和结束时间。我在员工 ID 上制作了一个连接表。真的,我需要看看两个表的开始时间和结束时间是否相互重叠。

这是来自数据集 1 的数据:

Emp ID |    Start time      |     End Time
test-a | 11/14/2019 6:48 AM | 11/14/2019 7:35 AM
test-a | 11/14/2019 9:02 AM | 11/14/2019 11:46 AM 
test-a | 11/14/2019 1:00 PM | 11/14/2019 2:00 PM 
test-a | 11/14/2019 5:00 PM | 11/14/2019 9:15 PM 

这是来自数据集 2 的数据:

Emp ID |    Start time      |     End Time
test-a | 11/16/2019 4:48 AM | 11/16/2019 7:35 AM 
test-a | 11/17/2019 9:02 AM | 11/17/2019 9:46 AM
test-a | 11/14/2019 7:00 PM | 11/14/2019 8:00 PM 
test-a | 11/14/2019 5:00 PM | 11/14/2019 9:15 PM 

期望的输出

Emp ID |  Start time        |        End Time     |   
test-a | 11/14/2019 5:00 PM | 11/14/2019 9:15 PM  | 
test-a | 11/14/2019 7:00 PM | 11/14/2019 8:00 PM  |
test-a | 11/14/2019 5:00 PM | 11/14/2019 9:15 PM  |   

有人可以在 PowerBI 中提供帮助吗?提前致谢。

【问题讨论】:

    标签: datetime timestamp powerbi overlap


    【解决方案1】:

    如果我正确理解了这个问题,时间重叠可以定义如下。

    Given two time periods starting and ending at (StartTime1, End1), (Start2, End2) respectively,
    time overlap is the time period (Start3, End3) if Start3 < End3,
    
    where
        Start3 = MAX( Start1, Start2 )
    and
        End3 = MIN( End1, End2 )
    

    您可以通过将 Dataset1 和 Dataset2 设为 Cartesian product 并逐一比较行来提取重叠。

    这是一个使用 DAX 计算表执行此操作的示例。

    Time Overlap = 
    SELECTCOLUMNS(
        FILTER(
            CROSSJOIN(
                SELECTCOLUMNS(
                    Dataset1,
                    "EmployeeID1", Dataset1[EmployeeID],
                    "StartTime1", Dataset1[StartTime],
                    "EndTime1", Dataset1[EndTime]
                ),
                SELECTCOLUMNS(
                    Dataset2,
                    "EmployeeID2", Dataset2[EmployeeID],
                    "StartTime2", Dataset2[StartTime],
                    "EndTime2", Dataset2[EndTime]
                )
            ),
            [EmployeeID1] = [EmployeeID2]
            && MAX( [StartTime1], [StartTime2] ) < MIN( [EndTime1], [EndTime2] )
        ),
        "EmployeeID", [EmployeeID1],
        "StartTime", MAX( [StartTime1], [StartTime2] ),
        "EndTime", MIN( [EndTime1], [EndTime2] )
    )
    

    【讨论】:

      猜你喜欢
      • 2012-02-04
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 2019-02-27
      相关资源
      最近更新 更多