使用Kusto Query Language替换重复行时间戳的技术问询
使用KQL批量处理每个cart_id的两行时间戳替换需求
针对每个cart_id对应两行数据的场景,可通过分组标记行号+条件字段替换的方式实现需求,该方法无需硬编码静态ID,完全适配海量数据的分布式处理。
核心实现代码
// 示例数据表(实际使用时替换为你的表名) datatable (cart_id: int, id: int, Associate_1: int, Associate_2: int, Trolley_Start: datetime, Begin_Picking: datetime, End_Picking: datetime, Trolley_End: datetime) [ 1, 111, 111, 112, datetime(2024-08-13T09:35:15.991Z), datetime(2024-08-13T09:37:20.123Z), datetime(2024-08-13T10:10:45.789Z), datetime(2024-08-13T10:31:12.345Z), 1, 112, 111, 112, datetime(2024-08-13T09:35:15.991Z), datetime(2024-08-13T10:14:18.567Z), datetime(2024-08-13T10:31:50.234Z), datetime(2024-08-13T10:31:12.345Z), 2, 113, 113, 114, datetime(2024-08-11T14:13:05.678Z), datetime(2024-08-11T14:15:09.456Z), datetime(2024-08-11T14:20:30.789Z), datetime(2024-08-11T16:01:11.001Z), 2, 114, 113, 114, datetime(2024-08-11T14:13:05.678Z), datetime(2024-08-11T14:33:45.123Z), datetime(2024-08-11T16:00:55.456Z), datetime(2024-08-11T16:01:11.001Z), 3, 115, 115, 116, datetime(2024-08-12T06:22:14.333Z), datetime(2024-08-12T06:23:20.111Z), datetime(2024-08-12T09:03:05.789Z), datetime(2024-08-12T07:36:14.678Z), 3, 116, 115, 116, datetime(2024-08-12T06:22:14.333Z), datetime(2024-08-12T07:32:18.789Z), datetime(2024-08-12T07:34:12.123Z), datetime(2024-08-12T07:36:14.678Z), 4, 111, 111, 117, datetime(2024-08-13T10:15:45.789Z), datetime(2024-08-13T10:18:45.789Z), datetime(2024-08-13T10:25:45.789Z), datetime(2024-08-13T10:40:45.789Z), 4, 117, 111, 117, datetime(2024-08-13T10:15:45.789Z), datetime(2024-08-13T10:26:45.789Z), datetime(2024-08-13T10:38:45.789Z), datetime(2024-08-13T10:40:45.789Z) ] // 核心处理逻辑 | partition by cart_id order by id asc // 按id排序确定行顺序,可根据实际业务调整排序字段(如Begin_Picking) | extend row_num = row_number() // 按行号条件替换目标时间戳 | extend Trolley_End = case(row_num == 1, End_Picking, Trolley_End), Trolley_Start = case(row_num == 2, Begin_Picking, Trolley_Start) // 移除临时行号字段(可选) | project-away row_num
关键逻辑说明
partition by cart_id:将数据按cart_id分组处理,Kusto会分布式执行该操作,性能适配海量数据row_number():为每个分组内的行生成序号,明确区分同一cart_id下的第一/第二行case()函数:根据行号条件替换对应字段,未匹配条件的行保留原字段值- 排序规则:示例中按
id排序确定行顺序,若业务中需按其他维度(如拣选开始时间)排序,修改order by后的字段即可
内容的提问来源于stack exchange,提问作者rana
相关产品推荐
相关产品推荐

