Datetime PowerBI-在时间戳上比较两组数据
我试图比较两组具有相似性的数据。它们没有所有相同的列,但我只需要比较员工id、开始时间和结束时间。我已经在员工id上创建了一个联接表。实际上,我需要查看两个表的开始时间和结束时间是否相互重叠 以下是数据集1中的数据:Datetime PowerBI-在时间戳上比较两组数据,datetime,timestamp,powerbi,overlap,Datetime,Timestamp,Powerbi,Overlap,我试图比较两组具有相似性的数据。它们没有所有相同的列,但我只需要比较员工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
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中帮助解决这个问题吗?提前谢谢 如果我正确理解了这个问题,时间重叠可以定义如下
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 )
给定两个时间段,分别从(开始时间1,结束时间1)、(开始时间2,结束时间2)开始和结束,
如果Start3
您可以通过创建Dataset1和Dataset2并逐个比较行来提取重叠
下面是一个使用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] )
)
时间重叠=
选择列(
滤器(
交叉连接(
选择列(
数据集1,
“雇员ID 1”,数据集1[EmployeeID],
“StartTime 1”,数据集1[StartTime],
“EndTime1”,数据集1[EndTime]
),
选择列(
数据集2,
“雇员ID 2”,数据集2[EmployeeID],
“StartTime2”,数据集2[StartTime],
“EndTime2”,数据集2[EndTime]
)
),
[EmployeeID1]=[EmployeeID2]
&&最大值([StartTime1],[StartTime2])<最小值([EndTime1],[EndTime2])
),
“雇员ID”,[EmployeeID1],
“StartTime”,最大值([StartTime1],[StartTime2]),
“结束时间”,最小值([EndTime1],[EndTime2])
)