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

Athena查询问题:如何获取每个node的最新快照记录

解决Athena中获取每个Node最新快照记录的问题

你之前的查询只返回全局最新日期的记录,核心原因是子查询未按node分组计算每个节点的最大快照日期,导致关联后仅能匹配全局最新日期对应的所有记录。以下是两种可行的解决方法:

方法一:使用窗口函数(推荐)

利用ROW_NUMBER()窗口函数为每个node的记录按快照日期倒序排名,取排名第一的记录即为该node的最新快照:

WITH ranked_records AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY node ORDER BY snapshot_date DESC) AS rn
    FROM your_table_name
)
SELECT *
FROM ranked_records
WHERE rn = 1;
  • 说明:PARTITION BY node将数据按节点分组,ORDER BY snapshot_date DESC让每组内最新的记录排在最前,rn=1筛选出每组的第一条记录。
  • 若同一node在同一快照日期存在多条重复记录,想保留所有这些最新记录,可将ROW_NUMBER()替换为RANK()或DENSE_RANK()。

方法二:修正原查询的子查询分组

在你的原有查询基础上,给子查询加上GROUP BY node,让子查询返回每个node对应的最新快照日期,再与原表关联:

SELECT t.*
FROM your_table_name t
INNER JOIN (
    SELECT node, MAX(snapshot_date) AS latest_date
    FROM your_table_name
    GROUP BY node  -- 关键:按node分组计算每个节点的最大日期
) sub ON t.node = sub.node AND t.snapshot_date = sub.latest_date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:03:18