Hive 查询各类型专利 Top 10 申请人及对应的专利申请数

目录

一、需求背景

二、实现思路

[三、Hive SQL 实现](#三、Hive SQL 实现)

语句解析

注意事项

四、结果展示

五、总结


在实际的数仓项目中,经常需要对数据进行统计分析,比如在专利管理系统中,需要对不同类型的专利进行申请人排名分析。本文将介绍如何在 Hive 中通过 SQL 查询实现各类型专利的 Top 10 申请人统计。

一、需求背景

假设有一张专利明细表 t_patent_detail,其中记录了专利号、专利名称、专利类型、申请时间、授权时间和申请人等字段。具体字段如下:

  • patent_id:专利号
  • patent_name:专利名称
  • patent_type:专利类型(包括发明创造、实用新型等)
  • aplly_date:申请时间
  • authorize_date:授权时间
  • apply_users:申请人(多个申请人用分号 ; 隔开)

t_patent_detail 数据样例如下图所示:

目标是查询出各类型专利中申请次数最多的 Top 10 申请人及对应的专利申请数量。

二、实现思路

  1. 申请人字段拆分apply_users 字段包含多个申请人,用分号 ; 分隔。需要先使用 LATERAL VIEW EXPLODE 函数将申请人字段拆分成多行,每行一个申请人。
  2. 分组统计:对每个专利类型中的申请人进行统计,计算每位申请人的专利申请次数。
  3. 排名 :使用 RANK() 函数对每个专利类型中的申请人申请次数进行排名,并筛选出前 10 名。

三、Hive SQL 实现

以下是实现该需求的 Hive SQL 查询语句:

sql 复制代码
WITH temp AS (
    -- 将申请人字段拆分成单独的记录
    SELECT d.patent_type, t1.coll AS apply_name
    FROM t_patent_detail d
    LATERAL VIEW EXPLODE(SPLIT(d.apply_users, ';')) t1 AS coll
)SELECT apply_name AS `申请人`, 
       COUNT(*) AS `专利申请数`, 
       RANK() OVER(PARTITION BY patent_type ORDER BY COUNT(*) DESC) AS `专利数排名`
FROM temp
GROUP BY apply_name, patent_type
HAVING RANK() OVER(PARTITION BY patent_type ORDER BY COUNT(*) DESC) <= 10;

语句解析

  1. LATERAL VIEW EXPLODE(SPLIT(d.apply_users, ';')) t1 AS coll :将 apply_users 字段中的申请人用分号 ; 分割开来,生成多行,每行包含一个申请人名字。

  2. COUNT(*):对每个申请人的专利数量进行计数,统计申请次数。

  3. RANK() OVER(PARTITION BY patent_type ORDER BY COUNT(*) DESC) :通过 RANK() 函数对每个专利类型中的申请人按申请次数进行排名。

  4. HAVING 子句:筛选出每种专利类型中申请次数最多的前 10 名。

注意事项

  • 在使用 RANK() 时,确保对 PARTITION BYORDER BY 的理解。PARTITION BY patent_type 表示对不同的专利类型分别统计排名,ORDER BY COUNT(*) DESC 表示按照申请次数降序排列。
  • 使用 LATERAL VIEW EXPLODE 处理多值字段时要小心,可能会导致数据量增加,应确保 Hive 集群的性能可以承受。

四、结果展示

执行上述 SQL 查询语句后,将会得到如下的结果:

申请人 专利申请数 专利数排名
申请人A 15 1
申请人B 12 2
... ... ...

每种专利类型下的申请人按照申请次数降序排列,展示出 Top 10 的申请人及其申请次数。

五、总结

通过本文,我们学习了如何使用 Hive 的 SQL 来拆分多值字段并进行分组统计和排名。该方法适用于类似包含多值字段的分析需求,能够帮助我们快速得到各类型专利的 Top 10 申请人,为数据分析和决策提供支持。

相关推荐
yumgpkpm8 小时前
CMP (类ClouderaCDP7.3(404次编译) )华为鲲鹏Aarch64(ARM)信创环境 查询2100w行 hive 查询策略
数据库·数据仓库·hive·hadoop·flink·mapreduce·big data
CoookeCola20 小时前
MovieNet(A holistic dataset for movie understanding) :面向电影理解的多模态综合数据集与工具链
数据仓库·人工智能·目标检测·计算机视觉·数据挖掘
K_i1341 天前
Hadoop 集群自动化运维实战
运维·hadoop·自动化
Q26433650231 天前
【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
想ai抽2 天前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
starfalling10242 天前
【hive】一种高效增量表的实现
hive
顧棟2 天前
【Yarn实战】Yarn 2.9.1滚动升级到3.4.1调研与实践验证
hadoop·yarn
D明明就是我2 天前
Hive 拉链表
数据仓库·hive·hadoop
嘉禾望岗5032 天前
hive join优化和数据倾斜处理
数据仓库·hive·hadoop
yumgpkpm2 天前
华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
大数据·hive·hadoop·elasticsearch·zookeeper·big data·cloudera