You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多行匹配条件时为每个用户每日选取单行数据?

需求:为每个用户的每一天仅保留一行数据

示例输入

nameeventDateeventName
User12022-1-21car
User12022-1-21bus
User12022-1-23bus
User12022-1-23horse

期望输出

nameeventDateeventName
User12022-1-21bus
User12022-1-23bus

测试数据(Kusto 查询语言)

// 测试查询
// EVENTDATA:存储用户名、日期及事件名称,需为每个用户的唯一日期仅保留一行数据。
let EVENTDATA = datatable(name:string, eventDate:datetime, eventName: string)
[
    'Jack', datetime(2022-01-12), 'Mets',
    'Jack', datetime(2022-01-12), 'Dentist',
    'Jack', datetime(2022-01-12), 'Movie',
    'Jack', datetime(2022-01-13), 'Mets',
    'Jack', datetime(2022-01-13), 'Movie',
    'Jack', datetime(2022-01-14), 'Anything',
    'Jack', datetime(2022-01-14), 'Else',
    'Jack', datetime(2022-01-14), 'Movie',  
    'Jack', datetime(2022-01-15), 'Mets',
    'Jack', datetime(2022-01-15), 'Dentist',
    'Jack', datetime(2022-01-15), 'Movie',
    'Jill', datetime(2022-01-18), 'Thing1',
    'Jill', datetime(2022-01-18), 'Thing2',
    'Jill', datetime(2022-01-18), 'Cats',
    'Jill', datetime(2022-01-22), 'Play',
    'Jill', datetime(2022-01-25), 'Darts',
    'Jill', datetime(2022-01-30), 'Make',
    'Jill', datetime(2022-01-30), 'Samples',
    'Jill', datetime(2022-01-30), 'Shorter',
    'Mary', datetime(2022-01-17), 'Cricket',
    'Mary', datetime(2022-01-20), 'Football',
    'Mary', datetime(2022-01-20), 'Rugby',
    'Mary', datetime(2022-01-22), 'Curling' 
];

解决方案

根据需求,可通过以下几种Kusto查询方式实现:

方法1:保留每个用户每日任意一行数据

使用take_any随机选取符合条件的一行:

EVENTDATA
| summarize take_any(eventName) by name, eventDate

方法2:保留每个用户每日eventName排序后的最后一行(匹配示例逻辑)

使用arg_max按字符串顺序取最大的eventName对应的行:

EVENTDATA
| summarize arg_max(eventName, *) by name, eventDate

方法3:保留每个用户每日eventName排序后的第一行

使用arg_min按字符串顺序取最小的eventName对应的行:

EVENTDATA
| summarize arg_min(eventName, *) by name, eventDate

内容的提问来源于stack exchange,提问作者ezG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:55:18