在我们产品的列表功能中,我们拥有存储在列表中显示的id列表的数据。在我们的一小部分数据中(现在已经修复了),结果列表中包含的id以相加的方式存储。请看下面的截图,了解更多我想要传达的内容。
Datetime User Action Extra
5-20-2015 9:00AM A list ids: 1
5-20-2015 9:00AM A list ids: 1, 2
5-20-2015 9:00AM A list ids: 1, 2, 3
5-20-2015 9:01AM B list ids: 5
5-20-2015 9:01AM B list ids: 5, 6
5-20-2015 9:01AM B list ids: 5, 6, 7
是否可以针对这种类型的数据组织编写HIVE或SQL查询?我试图在子查询中查询LENGTH(extra),然后拉入MAX(LENGTH(extra))数据,但我们一直无法让它工作。
处理这些数据的最佳方法是什么,所以我们只提取最终的id列表?
row_number()
窗口函数可能是你所追求的(我经常用它来查询添加数据源,我按日期排序):
select * from
(select *,
row_number() over (partition by user order by length(extra) desc) rn
from yourtable
) a
where rn = 1