我在 azure 表存储中有大约 300 万行来自日志文件的数据。表中的每一行都是对某个事件的检测(这可能是每个客户端 1 或 100 行数据,直到它在那里我们才知道)并且有许多不同的事件。
对于每个事件,我需要从每个客户端的每一行的时间戳中找到事件的持续时间。如果结束时间和开始时间之间存在差距,则将被视为新事件。EventId 是该行的 Partition Key,由时间戳到 epoch 和客户端 ID 的组合键组成 rowKey。
Azure 表存储如下所示,带有一些示例数据:
PartitionKey RowKey ClientId Epoch Additional
1 1370966492_1 1 1370969592 34
1 1370967792_1 1 1370967792 63
2 1370969592_1 1 1370969592 34
1 1370972592_1 2 1370972592 47
1 1370973542_1 1 1370969592 44
2 1370976562_1 1 1370976562 18
1 1370978592_1 2 1370978592 92
3 1370981542_1 2 1370981542 34
2 1370982562_1 1 1370982562 37
1 1370982592_1 1 1370982592 73
我需要的输出是(与上述数据无关的示例:
EventId ClientId StartTime EndTime Max(additional)
1 1 1370966492 1370973492 78
1 2 1370967834 1370979536 29
处理数据的最有效方式是什么?是否将数据保存在表存储中?一旦我处理了这些日志,如果需要,就可以将导入过程更改为表存储。