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

基于Databricks SQL的Hive映射Delta表高效求最大时间查询

问题

现有一张映射为Hive表的Delta表UtilEvents,表数据如下:

-----------------------------------------------------------------------------
SerialNumber    EventTime               UseCase     RemoteHost  RemoteIP
-----------------------------------------------------------------------------
131058          2022-12-02T00:31:29     Send        Host1       RemoteIP1
131058          2022-12-21T00:33:24     Receive     Host1       RemoteIP1
131058          2022-12-22T01:35:33     Send        Host1       RemoteIP1
131058          2022-12-20T01:36:53     Receive     Host1       RemoteIP1
131058          2022-12-11T00:33:28     Send        Host2       RemoteIP2
131058          2022-12-15T00:35:18     Receive     Host2       RemoteIP2
131058          2022-12-12T02:29:11     Send        Host2       RemoteIP2
131058          2022-12-01T02:30:56     Receive     Host2       RemoteIP2

需要按UseCase和RemoteHost字段分组,获取每组中EventTime最大的对应记录,预期结果如下:

----------------------------------------------------------------
SerialNumber    EventTime               UseCase     RemoteHost
----------------------------------------------------------------
131058          2022-12-21T00:33:24     Receive     Host1
131058          2022-12-22T01:35:33     Send        Host1
131058          2022-12-15T00:35:18     Receive     Host2
131058          2022-12-12T02:29:11     Send        Host2

要求提供纯Databricks SQL格式的高效查询语句,禁止使用中间DataFrame结果。

解决方案

使用窗口函数ROW_NUMBER()按分组字段分区,对每组内的时间字段降序排序后取第一条记录,这种方式无需额外关联操作,执行效率更高:

SELECT SerialNumber, EventTime, UseCase, RemoteHost
FROM (
    SELECT 
        SerialNumber, 
        EventTime, 
        UseCase, 
        RemoteHost,
        ROW_NUMBER() OVER (PARTITION BY UseCase, RemoteHost ORDER BY EventTime DESC) AS rn
    FROM UtilEvents
) t
WHERE rn = 1;

如果同一分组内存在多条EventTime相同的最大时间记录,需要保留所有这类记录时,可将ROW_NUMBER()替换为RANK()或DENSE_RANK()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:45:46