0. 说明

  Hive 的高级聚合函数 union all | grouping sets | cube | rollup

  pv //page view 页面访问量
  uv //user view 访问人数


1. union all

  表联合操作

  1.0 准备数据

  pv.txt

2015-03    2015-03-10    cookie1
2015-03 2015-03-10 cookie5
2015-03 2015-03-12 cookie7
2015-04 2015-04-12 cookie3
2015-04 2015-04-13 cookie2
2015-04 2015-04-13 cookie4
2015-04 2015-04-16 cookie4
2015-03 2015-03-10 cookie2
2015-03 2015-03-10 cookie3
2015-04 2015-04-12 cookie5
2015-04 2015-04-13 cookie6
2015-04 2015-04-15 cookie3
2015-04 2015-04-15 cookie2
2015-04 2015-04-16 cookie1
2015-02 2015-02-16 cookie2
2015-02 2015-02-16 cookie3

  1.1 建表

create table uv(month string,day string, id string) row format delimited fields terminated by '\t';

  1.2 加载数据

load data local inpath '/home/centos/files/pv.txt' into table uv;

  1.3 设置本地模式

    SET hive.exec.mode.local.auto=true;

  1.4 统计每月用户访问量

select month ,count(distinct id) from uv group by month;

  1.5 统计每天用户访问量

select day ,count(distinct id) from uv group by day;

  1.6 联合查询每月每天用户访问量

select month ,count(distinct id) from uv group by month union all select day ,count(distinct id) from uv group by day;

   

  1.7 使用分组集(grouping sets)实现查询

select month, day,count(distinct id), grouping__id from uv group by month,day grouping sets(month,day);

  grouping__id //分组的组号

  

  month

  day

  1.8 使用 cube 进行查询

select month, day,count(distinct id), grouping__id from uv group by month,day with cube order by grouping__id;

  

  null
  year
  month
  day
  year,month
  year,day
  month,day
  year,momth,day

  1.9 使用 rollup 进行查询

select month, day,count(distinct id), grouping__id from uv group by month,day with rollup order by grouping__id;

  

  null
  year
  year month
  year month day


[Hive_11] Hive 的高级聚合函数的更多相关文章

  1. Hive高阶聚合函数 GROUPING SETS、Cube、Rollup

    -- GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起 ...

  2. hive group by聚合函数增强

    1.grouping sets grouping sets子句都可以根据UNION连接的多个GROUP BY查询进行逻辑表示 SELECT a,b,SUM(c)FROM tab1 GROUP BY a ...

  3. 高级聚合函数rollup(),cube(),grouping sets()

       rollup(),cube(),grouping sets()   上面这几个函数,是对group by分组功能做的功能扩展. a.rollup()   功能:在原结果基础上追加一行总合计记录 ...

  4. 在MongoDB中实现聚合函数 (转)

    随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的 ...

  5. 在MongoDB中实现聚合函数

    在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加. ...

  6. 9.hive聚合函数,高级聚合,采样数据

    本文主要使用实例对Hive内建的一些聚合函数.分析函数以及采样函数进行比较详细的讲解. 一.基本聚合函数 数据聚合是按照特定条件将数据整合并表达出来,以总结出更多的组信息.Hive包含内建的一些基本聚 ...

  7. Hive学习之自己定义聚合函数

    Hive支持用户自己定义聚合函数(UDAF),这样的类型的函数提供了更加强大的数据处理功能. Hive支持两种类型的UDAF:简单型和通用型.正如名称所暗示的,简单型UDAF的实现很easy,但因为使 ...

  8. hive学习笔记之十:用户自定义聚合函数(UDAF)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...

  9. Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)

    在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF( ...

随机推荐

  1. 响应者链UIResponder-扩大UIButton的点击范围

    在开发中,我们经常看到有按钮等的点击,会出现响应事件.按钮->view->ViewController->UIWindow->UIApplication,这就形成了一个响应链. ...

  2. [转]认识JWT

    本文转自:https://www.cnblogs.com/cjsblog/p/9277677.html 1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准 ...

  3. 第一册:lesson twenty-one.

    原文:Which book? A:Give me a book please,B. B:Which book? This one? A:No,not that one. The red one. B: ...

  4. SET XACT_ABORT ON是什么?

    避免自己遗忘,在这里做个笔记: SET XACT_ABORT ON:强制事务回滚,如果不加这句的话事务有可能回滚失败.

  5. MVC Post 提交表单 允许他提交参数包含html标记的解决方法

    MVC Post 提交表单的时候,如果参数中包含html标记,则需要在控制器上方加上 [ValidateInput(false)]标记后就可以正常提交表单了例如: [HttpPost] [Valida ...

  6. [android] 在不同的activity之间传递数据

    新建一个activity,继承Activity 清单文件中进行配置,添加<activity/>节点 设置名称 android:name=”.类名” 点 代表的是当前包名,也可以不写 新建一 ...

  7. [android] 内容观察者

    拦截短信,比如当发短信的时候,就把短信读取出来,当系统的短信发生变化的时候,大叫一声,把数据发送到公共的消息邮箱里面,我们的应用通过内容观察者观察公共的消息邮箱 获取ContentResolver对象 ...

  8. git merge 和 git merge --no-ff的区别

    git merge –no-ff 可以保存你之前的分支历史.能够更好的查看 merge历史,以及branch 状态. git merge 则不会显示 feature,只保留单条分支记录. 比如:我当前 ...

  9. Field 'id' doesn't have a default value错误解决方法

    Field 'id' doesn't have a default value 错误提示. 主键类型获取方式为"native"由数据库生成指定. 检查发现数据库中已存在Employ ...

  10. 内省(Introspector)

    /** * 内省:通过反射来操作javabean * 内省类 --> Bean信息 --> 属性描述符 --> 属性的get/set对应的Method --> 进行反射 * c ...