当前位置: 首页 > article >正文

掌握Hive函数[2]:从基础到高级应用

目录

高级聚合函数

多进一出

1. 普通聚合 count/sum...

2. collect_list 收集并形成list集合,结果不去重

3. collect_set 收集并形成set集合,结果去重

 案例演示

1. 每个月的入职人数以及姓名

 炸裂函数

 概述

 案例演示

1. 数据准备

1)表结构

2)建表语句

3)装载语句

2. 需求

1)需求说明

2)答案


高级聚合函数

多进一出

(多行传入,一个行输出)

1. 普通聚合 count/sum...
2. collect_list 收集并形成list集合,结果不去重
hive>

select 

  sex,

  collect_list(job)

from

  employee

group by 

  sex

结果

女	["行政","研发","行政","前台"]
男	["销售","研发","销售","前台"]
3. collect_set 收集并形成set集合,结果去重
hive>

select 

  sex,

  collect_set(job)

from

  employee

group by 

  sex

结果

女	["行政","研发","前台"]
男	["销售","研发","前台"]

 案例演示

1. 每个月的入职人数以及姓名
hive>

select

  month(replace(hiredate,'/','-')) as month,

  count(*) as cn,

  collect_list(name) as name_list

from

  employee

group by

  month(replace(hiredate,'/','-'))

结果

month  cn  name_list
4	  2	["宋青书","周芷若"]
6	  1	["黄蓉"]
7	  1	["郭靖"]
8	  2	["张无忌","杨过"]
9	  2	["赵敏","小龙女"]

 炸裂函数

 概述

 案例演示

1. 数据准备
1)表结构
moviecategory
《疑犯追踪》悬疑,动作,科幻,剧情
《Lie to me》悬疑,警匪,动作,心理,剧情
《战狼2》战争,动作,灾难
2)建表语句
hive (default)>

create table movie_info(
  movie string,   --电影名称
  category string  --电影分类
) 
row format delimited fields terminated by "\t";
3)装载语句
insert overwrite table movie_info
values ("《疑犯追踪》", "悬疑,动作,科幻,剧情"),
    ("《Lie to me》", "悬疑,警匪,动作,心理,剧情"),
    ("《战狼2》", "战争,动作,灾难");
2. 需求
1)需求说明

根据上述电影信息表,统计各分类的电影数量,期望结果如下:

剧情2
动作3
心理1
悬疑2
战争1
灾难1
科幻1
警匪1
2)答案
select
  cate,
  count(*)
from
(
  select
    movie,
    cate
  from
  (
    select
      movie,
      split(category, ',') cates
    from movie_info
  )t1 lateral view explode(cates) tmp as cate
)t2
group by cate;

http://www.kler.cn/news/294455.html

相关文章:

  • 对比测评3款BI分析工具
  • es数组包含查询
  • 『功能项目』战士的A键连击【33】
  • Java项目: 基于SpringBoot+mybatis+maven+mysql图书馆管理系统(含源码+数据库+任务书+答辩PPT+毕业论文)
  • 2024 批量下载公众号渤海小吏1千篇文章导出pdf(带留言),抓取文章标题时间链接封面阅读数分享数留言数粉丝数导出excel
  • Python测试开发---什么是单例模式
  • tomato靶场攻略
  • 基于单片机的多功能数字闹钟设计
  • 【简单】 猿人学web第一届 第15题 备周则意怠,常见则不疑
  • javaWeb【day03】---(Vue-Element)
  • python | 字符串字母大小写转换方法
  • HalconDotNet中的图像特征与提取详解
  • MATLAB算法实战应用案例精讲-【人工智能】数据元(概念篇)
  • 力扣 739. 每日温度【经典单调栈题目】
  • PyQt-Server服务器
  • 构建现代前端应用的利器:深入解析Webpack与Vite的差异与优势
  • 电脑WLan无线网连上没网络的问题解决方法
  • iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)
  • vue2结合element-ui使用tsx格式实现formily自定义组件
  • 匹配电子邮件地址的正则表达式
  • 人生苦短我用Python Excel文件基本操作
  • 【60天备战软考高级系统架构设计师——第九天:面向对象设计原则】
  • [SUCTF 2018]annonymous1
  • 移动UI:成就勋章页面该如何设计,用例子说明。
  • 大数据决策分析平台建设方案(56页PPT)
  • SpringBoot2:请求处理原理分析-RESTFUL风格接口
  • 交换机自动化备份配置(H3C_无人值守)
  • 前端小白操作指南:如何删除项目中 pre-commit 的提交限制?
  • 【机器人工具箱Robotics Toolbox开发笔记(十五)】六自由度机器人笛卡尔空间轨迹规划仿真实例
  • 过去十年中,深度学习领域经历了许多重要的算法创新和突破。以下是一些关键的深度学习算法,按照时间顺序排列: