Hive中行列转换具体实现及应用

1、工作应用场景

统计得到每个小时的UV、PV、IP的个数,构建如下表结构:

图片[1] - Hive中行列转换具体实现及应用 - MaxSSL

但是表中数据的存储格式不利于直接查询展示,需要进行调整:(以时间分区,去重、聚合等……对结果进行行列转换)

图片[2] - Hive中行列转换具体实现及应用 - MaxSSL

2、行转列  (1)多行转多列

图片[3] - Hive中行列转换具体实现及应用 - MaxSSL

case when函数

功能:用于实现对数据的判断,根据条件,不同的情况返回不同的结果,类似于java中的switch case功能

语法:

  语法一:

      CASE

      WHEN 条件1 THEN VALUE1

      ……

      WHEN 条件N THEN VALUEN

      ELSE 默认值 END

  语法二:

      CASE 列

      WHEN V1 THEN VALUE1

      ……

      WHEN VN THEN VALUEN

      ELSE 默认值 END

图片[4] - Hive中行列转换具体实现及应用 - MaxSSL

图片[5] - Hive中行列转换具体实现及应用 - MaxSSL

  (2)多行转单列

图片[6] - Hive中行列转换具体实现及应用 - MaxSSL

可以指定分隔符的字符串拼接函数:concat_wa只支持string、array[string]

图片[7] - Hive中行列转换具体实现及应用 - MaxSSL

收集函数:

图片[8] - Hive中行列转换具体实现及应用 - MaxSSL

图片[9] - Hive中行列转换具体实现及应用 - MaxSSL

图片[10] - Hive中行列转换具体实现及应用 - MaxSSL

3、列转行  (1)多列转多行

图片[11] - Hive中行列转换具体实现及应用 - MaxSSL

图片[12] - Hive中行列转换具体实现及应用 - MaxSSL

图片[13] - Hive中行列转换具体实现及应用 - MaxSSL

图片[14] - Hive中行列转换具体实现及应用 - MaxSSL

  (2)单列转多行

图片[15] - Hive中行列转换具体实现及应用 - MaxSSL

图片[16] - Hive中行列转换具体实现及应用 - MaxSSL

图片[17] - Hive中行列转换具体实现及应用 - MaxSSL

lateral view 侧视图

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享