Hive cube,roll up入门案例
cube
hive中也有cube函数,可以实现多个任意维度的查询
cube(a,b,c)则首先会对(a,b,c)进行group by,
然后依次是(a,b),(a,c),(a),(b,c),(b),(c),最后在对全表进行group by,他会统计所选列中值的所有组合的聚合
用cube函数就可以完成所有维度的聚合工作.
select os, --维度1manufacturer,--维度2carrier, --维度3network_type,--维度4area_code, --维度5count(user_id) user_count,sum(launch_count) launch_count
from dws.launch
where bdp_day = '20201223'
group by os, manufacturer, carrier, network_type, area_code
with cube --使用cube函数
limit 20;
结果预览
+----+------------+-------+------------+---------+----------+------------+
|os |manufacturer|carrier|network_type|area_code|user_count|launch_count|
+----+------------+-------+------------+---------+----------+------------+
|NULL|NULL |NULL |NULL |NULL |170426 |724588 |
|NULL|NULL |NULL |NULL |03060 |44 |184 |
|NULL|NULL |NULL |NULL |10002 |560 |2132 |
|NULL|NULL |NULL |NULL |10003 |672 |2752 |
|NULL|NULL |NULL |NULL |10004 |634 |2744 |
|NULL|NULL |NULL |NULL |10005 |906 |3756 |
|NULL|NULL |NULL |NULL |10007 |1272 |5116 |
|NULL|NULL |NULL |NULL |10008 |722 |3248 |
|NULL|NULL |NULL |NULL |10009 |1086 |4744 |
|NULL|NULL |NULL |NULL |10010 |714 |2888 |
|NULL|NULL |NULL |NULL |10013 |1524 |6536 |
|NULL|NULL |NULL |NULL |10014 |744 |3024 |
|NULL|NULL |NULL |NULL |10015 |684 |3108 |
|NULL|NULL |NULL |NULL |10016 |318 |1472 |
|NULL|NULL |NULL |NULL |10017 |406 |1776 |
|NULL|NULL |NULL |NULL |10018 |204 |828 |
|NULL|NULL |NULL |NULL |10019 |410 |1684 |
|NULL|NULL |NULL |NULL |10020 |224 |1108 |
|NULL|NULL |NULL |NULL |10021 |360 |1576 |
|NULL|NULL |NULL |NULL |11010 |312 |1268 |
+----+------------+-------+------------+---------+----------+------------+
grouping sets
当不需要cube将所有维度都列出来的时候,当只需要部分维度的时候
可以使用grouping sets来进行决定聚合那些维度
当使用grouping sets()进行指定维度聚合的时候,仅仅聚合你给出的维度组合,并不会自动帮你组合维度.
例如 grouping sets(col1,(col2,col3)) 只聚合col1维度,(col2,col3)维度.
并不会自动聚合(col1,col2,col3)维度
select os, --维度1manufacturer,--维度2carrier, --维度3network_type,--维度4area_code, --维度5count(user_id) user_count,sum(launch_count) launch_count
from dws.launch
where bdp_day = '20201223'
group by os, manufacturer, carrier, network_type, area_code
grouping sets ((manufacturer,carrier))
运行结果
+----+------------+-------+------------+---------+----------+------------+
|os |manufacturer|carrier|network_type|area_code|user_count|launch_count|
+----+------------+-------+------------+---------+----------+------------+
|NULL|02 |2 |NULL |NULL |9408 |39888 |
|NULL|02 |3 |NULL |NULL |9482 |40440 |
|NULL|03 |2 |NULL |NULL |9632 |40996 |
|NULL|03 |3 |NULL |NULL |9392 |40376 |
|NULL|04 |2 |NULL |NULL |8906 |37312 |
|NULL|04 |3 |NULL |NULL |9794 |41896 |
|NULL|05 |2 |NULL |NULL |9552 |40504 |
|NULL|05 |3 |NULL |NULL |9690 |41960 |
|NULL|06 |2 |NULL |NULL |9556 |40352 |
|NULL|06 |3 |NULL |NULL |9378 |40200 |
+----+------------+-------+------------+---------+----------+------------+
roll up
rollup函数
是cube
的子集,以最左侧维度
为主,按照顺序依次进行聚合.
例如聚合的维度为 col1,col2,col3
使用rollup
聚合的字段分别为 col1,(col1,col2),(col1,col3),(col1,col2,col3)
举个例子
select os, --维度1manufacturer,--维度2carrier, --维度3network_type,--维度4area_code, --维度5count(distinct user_id) user_count,sum(launch_count) launch_count
from dws.launch ---用户启动表
where bdp_day = '20201223'
group by os, manufacturer, carrier, network_type, area_code
with rollup --使用roll up函数
limit 10;
结果如下
就是说等价于统计出来了以下结果
group by 1 2 3 4 5
group by 2 3 4 5
group by 3 4 5
group by 4 5
group by 5
+----+------------+-------+------------+---------+----------+------------+
|os |manufacturer|carrier|network_type|area_code|user_count|launch_count|
+----+------------+-------+------------+---------+----------+------------+
|NULL|NULL |NULL |NULL |NULL |56885 |724588 |
|2 |NULL |NULL |NULL |NULL |56885 |724588 |
|2 |02 |NULL |NULL |NULL |6307 |80328 |
|2 |02 |2 |NULL |NULL |3126 |39888 |
|2 |02 |2 |0 |NULL |1042 |13412 |
|2 |02 |2 |0 |10002 |5 |48 |
|2 |02 |2 |0 |10003 |6 |84 |
|2 |02 |2 |0 |10004 |5 |44 |
|2 |02 |2 |0 |10005 |6 |80 |
|2 |02 |2 |0 |10007 |13 |180 |
+----+------------+-------+------------+---------+----------+------------+
总结
- 所有组合维度的聚合可以用
cube
指定维度
的聚合用grouping sets
Hive cube,roll up入门案例相关推荐
- Kyin学习笔记(一)-----Kylin安装、入门案例和原理介绍
目录 一.Kylin简介 1.Kylin的诞生背景 2.Kylin的应用场景 3.为什么要使用Kylin 4.Kylin的总体架构 二.Kylin安装 1.依赖环境 2.集群规划 3.安装kylin- ...
- 2021年大数据Flink(八):Flink入门案例
目录 Flink入门案例 前置说明 API 编程模型 准备工程 pom文件 log4j.properties Flink初体验 需求 编码步骤 代码实现 Flink入门案例 前置说明 API API ...
- 【Spark分布式内存计算框架——Structured Streaming】3. Structured Streaming —— 入门案例:WordCount
1.3 入门案例:WordCount 入门案例与SparkStreaming的入门案例基本一致:实时从TCP Socket读取数据(采用nc)实时进行词频统计WordCount,并将结果输出到控制台C ...
- Unity3D官方推荐教程roll a bal案例
Unity3D官方推荐教程roll a bal案例 首先声明本人菜鸟一枚,此博客只是记录一下学习过程,虽说是跟着教程一步一步做的,但是在做的过程当中也遇到了很多问题(菜是原罪),这些问题精良写在了文中 ...
- Flink教程(04)- Flink入门案例
文章目录 01 引言 02 开发前准备 2.1 API 2.2 编程模型 03 入门案例 3.1 项目搭建 3.2 代码实现 3.2.1 基于DataSet 3.2.2 基于DataStream 3. ...
- 数据立方体-Hive Cube
目录 1. 数据立方体 2. OLAP的基本操作 3. Hive Cube 3.1 with cube 3.2 with rollup 3.3 Grouping sets 3.4 grouping_i ...
- Python:Scrapy的安装和入门案例
Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...
- Vue安装配置以及入门案例
Vue Vue简介 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不 ...
- AOP配置开发入门案例
该AOP开发入门案例采用XML文件方式配置开发(非注解方式)共包含一个xml文件和4个Java类,创建好web工程后引入相应jar包(文末会给出),建好包(若自定义包名注意更改类中的包名),将xml文 ...
最新文章
- Java | Python 流程控制对比
- input标签的值只能两位小数_解决input只能输入金额类型的方案(金额输入框只能输入2位小数)...
- 导入表格只有一行 帆软_万万没想到!把x个表格合合合合成一份,10分钟就搞定...
- 【python笔记】 for循环和while循环,break和continue语句
- django mysql返回json_Django 1.8.11 查询数据库返回JSON格式数据
- 2022超级好看动态视频官网HTML源码
- 4. AWS DynamoDB实战之Secondary Indexes
- 1000句最常用英语口语
- 如何运用MATLAB实现K-MEANS聚类分析
- Centos7.6上安装水族馆遇到报错BEGIN failed--compilation aborted at /usr/local/bin/asciiquarium line 42.
- esb接口测试_ESB产品架构之愚见
- jsonviewer
- 操作系统、计算机网络、数据库系统概论等相关面试问题
- php卡死代码,服务器被php进程卡死问题排查-php5.2的curl-bug
- 自然语言分词词性标注指代
- VMware虚拟机超简单的联网方法
- Koomail VS. Foxmail
- 梦想帝王多开辅助?梦想帝王脚本兵种详解
- 考研复试英语自我介绍模版
- 等差数列java_java简单的编程(等差数列)
热门文章
- 监控的1080P、3MP和5MP是什么意思?区别是什么?
- 无广告输入法_完胜搜狗的输入法来了!智能无广告,不用下载就可以使用!
- 计算机 术语库 excel,Trados直接用Excel做术语库
- python修改json文件_python修改json文件的value实例方法
- 阿里云申请免费ssl证书并配置nginx
- centos8 yum安装mysql8 流程配置
- ubuntu18.04彻底卸载mysql5.7,图文详解
- php安装包进行安装吗,php的一键安装包有哪些php环境搭建
- java代码post接口请求 用 hutool工具类
- 微服务把多个模块服务 聚合成一个服务