快捷搜索:  汽车  科技

hive查询前10行数据类型(Hive数据分析热门笔试题)

hive查询前10行数据类型(Hive数据分析热门笔试题)了各用户发表内容的集合,且按 | 分割。现需要实现a与表b的相互转换。假设表a记录了某App用户发表图文的情况,存储了用户uid,和不同时间发表的内容content。表b记录需要找出连续发表图文3次及3次以上的用户。参考语句如下:SELECT uid FROM ( SELECT uid r2 - r1 count(uid) FROM ( SELECT uid post_time row_number() over(partition by uid order by post_time) as r1 row_number() over(order by post_time) as r2 FROM post_log ) A GROUP BY uid r2 - r1 HAVING COUNT(uid) >= 3 ) B GROUP BY ui

高清PDF,关注收藏,私信 h1。

Hive 数据分析常见场景

本文作为第1篇,整理了连续出现次数、行转列、列转行3个应用场景。

Hive SQL 实践—连续出现次数

假设一张表记录了某App用户发表图文的情况,存储了用户uid,发表时间post_time和内容content。

需要找出连续发表图文3次及3次以上的用户。

hive查询前10行数据类型(Hive数据分析热门笔试题)(1)

参考语句如下:

SELECT uid FROM ( SELECT uid r2 - r1 count(uid) FROM ( SELECT uid post_time row_number() over(partition by uid order by post_time) as r1 row_number() over(order by post_time) as r2 FROM post_log ) A GROUP BY uid r2 - r1 HAVING COUNT(uid) >= 3 ) B GROUP BY uid

按照post_time排序后,只有连续出现的uid行r2-r1才相等,否则就是不等。其中r1按用户uid分组,按post_time升序记录图文发表顺序。

hive查询前10行数据类型(Hive数据分析热门笔试题)(2)

Hive SQL 实践—列转行

假设表a记录了某App用户发表图文的情况,存储了用户uid,和不同时间发表的内容content。表b记录

了各用户发表内容的集合,且按 | 分割。现需要实现a与表b的相互转换。

hive查询前10行数据类型(Hive数据分析热门笔试题)(3)

表a

hive查询前10行数据类型(Hive数据分析热门笔试题)(4)

表b

行转列参考语句如下:

SELECT uid concat_ws(‘|’ collect_list(content)) as content_str FROM a GROUP BY uid

使用函数 concat_ws(分割符 collect_list(列名))。其中:collect_list不去重,collect_set去重,列名的数据类型要求是string。

Hive SQL 实践—行转列

列转行参考语句如下:

SELECT uid content FROM b LATERAL VIEW explode(SPLIT(content ‘|’)) tmp1 AS content

使用函数 lateral view explode(split(column_name ‘|’)) astable

explode 将hive 一行中复杂的array或者map结构拆分为多行。

lateral view 用于和udtf 函数结果使用,语法:lateral view udtf(expression) table alias as column alias(‘ ’ column alias)。


碎片时间,关注收藏。

hive查询前10行数据类型(Hive数据分析热门笔试题)(5)

抖音多久没有都诗了

猜您喜欢: