我的雇主有一个批处理计算集群,用于处理用户提交的作业.每个批处理作业包括三个步骤:
批处理作业管理软件在每个步骤发生时记录,日志文件由一个元组组成,该元组具有提交作业的员工的ID代码,发生的步骤以及发生时间的时间戳.在CSV中,它看起来像:
ID step timestamp
-- ------ ---------
A start 3533
B start 3538
B finish 3549
C start 3551
A finish 3557
B report 3559
C finish 3602
A report 3603
B start 3611
C report 3623
B finish 3643
B report 3657
Run Code Online (Sandbox Code Playgroud)
等等.
数据集的另一个特点是员工之间存在共识,但员工之间并不相同; 也就是说,每个员工必须等到他们当前的工作在下一个工作开始前报告.因此,当我按日期排序并将结果限制为单个员工时,记录总是以"开始","完成","报告"的顺序出现.
我想创建一个数据透视表,将每个作业分组到一行.所以上面的数据变成:
employee-ID started finished reported
----------- ------- -------- --------
A 3533 3557 3603
B 3538 3549 3559
B 3611 3643 3657
C 3551 3602 3623
Run Code Online (Sandbox Code Playgroud)
那么,对于SQL:
SELECT
log.ID AS employee-ID, …Run Code Online (Sandbox Code Playgroud)