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次以上的用户。
参考语句如下:
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 SQL 实践—列转行假设表a记录了某App用户发表图文的情况,存储了用户uid,和不同时间发表的内容content。表b记录
了各用户发表内容的集合,且按 | 分割。现需要实现a与表b的相互转换。
表a
表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)。
碎片时间,关注收藏。
抖音多久没有都诗了