公司代码,年度,1月-------------------------12月的收入金额
burk,year,tsl01,tsl02,tsl03,tsl04,tsl05,tsl06,tsl07,tsl08,tsl09,tsl10,tsl11,tsl12
853101,2010,100200,25002,19440,20550,14990,17227,40990,28778,19088,29889,10990,20990
853101,2011,19446,20556,14996,17233,40996,28784,19094,28779,19089,29890,10991,20991
853101,2012,19447,20557,14997,17234,20560,15000,17237,28780,19090,29891,10992,20992
853101,2013,20560,15000,17237,41000,17234,20560,15000,17237,41000,29892,10993,20993
853101,2014,19449,20559,14999,17236,41000,28788,28786,19096,29897,41000,28788,20994
853101,2015,100205,25007,19445,20555,17236,40999,28787,19097,29898,29894,10995,20995
853101,2016,100206,25008,19446,20556,17237,41000,28788,19098,29899,29895,10996,20996
853101,2017,100207,25009,17234,20560,15000,17237,41000,15000,17237,41000,28788,20997
853101,2018,100208,25010,41000,28788,28786,19096,29897,28786,19096,29897,10998,20998
853101,2019,100209,25011,17236,40999,28787,19097,29898,28787,19097,29898,10999,20999
846271,2010,100210,25012,17237,41000,28788,19098,29899,28788,19098,29899,11000,21000
846271,2011,100211,25013,19451,20561,15001,17238,41001,28789,19099,29900,11001,21001
846271,2012,100212,100213,20190,6484,46495,86506,126518,166529,206540,246551,286562,326573
846271,2013,100213,100214,21297,5008,44466,83924,123382,162839,202297,241755,281213,320671
846271,2014,100214,100215,22405,3531,42436,81341,120245,159150,198055,236959,275864,314769
846271,2015,100215,100216,23512,2055,19096,29897,28786,19096,29897,41000,29892,308866
846271,2016,100216,100217,24620,579,38377,76175,28788,28786,19096,29897,41000,302964
846271,2017,100217,100218,25727,898,36347,73592,40999,28787,19097,29898,29894,297062
846271,2018,100218,100219,26835,2374,34318,71009,41000,28788,19098,29899,29895,291159
846271,2019,100219,100220,27942,3850,32288,68427,17237,41000,15000,17237,41000,285257
建表语句
CREATE TABLE `burk`(`bruk_id` string, `year` string, `m1` string, `m2` string, `m3` string, `m4` string, `m5` string, `m6` string, `m7` string, `m8` string, `m9` string, `m10` string, `m11` string, `m12` string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

1、统计每个公司每年按月累计收入  行转列 --> sum窗口函数

输出结果
公司代码,年度,月份,当月收入,累计收入

行转列

 select bruk_id,year,month,income from burk lateral view explode(map(`m1`,1,`m2`,2,`m3`,3,`m4`,4,`m5`,5,`m6`,6,`m7`,7,`m8`,8,`m9`
,9,`m10`,10,`m11`,11,`m12`,12)) t   as income, month;

求累加

select  bruk_id,year,month,income, sum(income) over(partition by bruk_id,year order by month)  as sum_income from( select bruk_id,year,month,income from burk lateral view explode(map(`m1`,1,`m2`,2,`m3`,3,`m4`,4,`m5`,5,`m6`,6,`m7`,7,`m8`,8,`m9`
,9,`m10`,10,`m11`,11,`m12`,12)) t   as income, month) t1; 

其他写法(使用with将表取别名)

with t1 as( select bruk_id,year,month,income from burk lateral view explode(map(`m1`,1,`m2`,2,`m3`,3,`m4`,4,`m5`,5,`m6`,6,`m7`,7,`m8`,8,`m9`
,9,`m10`,10,`m11`,11,`m12`,12)) t   as income, month)
select  bruk_id,year,month,income, sum(income) over(partition by bruk_id,year order by month)  as sum_income from  t1; 

2、统计每个公司当月比上年同期增长率  行转列 --> lag窗口函数

结果:
公司代码,年度,月度,增长率(当月收入/上年当月收入 - 1)

代码:

select  bruk_id,year,month,income,lag_num,if(lag_num is null, 1,(income/lag_num-1) )as incr from (select  bruk_id,year,month,income,lag(income,1) over(partition by bruk_id,month order by year) as lag_num from  (select bruk_id,year,month,income from burk lateral view explode(map(`m1`,1,`m2`,2,`m3`,3,`m4`,4,`m5`,5,`m6`,6,`m7`,7,`m8`,8,`m9`,9,`m10`,10,`m11`,11,`m12`,12)) t   as income, month)  as t2) t3;

其他写法(使用with将表取别名)


with t1 as(select bruk_id,year,month,income from burk lateral view explode(map(`m1`,1,`m2`,2,`m3`,3,`m4`,4,`m5`,5,`m6`,6,`m7`,7,`m8`,8,`m9`
,9,`m10`,10,`m11`,11,`m12`,12)) t   as income, month),
t2 as(select  bruk_id,year,month,income,lag(income,1) over(partition by bruk_id,month order by year) as lag_num from t1)
select    bruk_id,year,month,income,lag_num,if(lag_num is null, 1,(income/lag_num-1) )as incr  from t2;

Hive行转列的应用之计算公司累加收入相关推荐

  1. hive 行转列和列转行的方法_Hive超详细存储

    文件存储格式 Hive支持的存储数据的格式主要有:TEXTFILE .SEQUENCEFILE.ORC.PARQUET. 列式存储和行式存储 左边为逻辑表,右边第一个为行式存储,第二个为列式存储 行存 ...

  2. mysql行转列函数_一个小知识点-Hive行转列实现Pivot

    前言 传统关系型数据库中,无论是Oracle(11g之后)还是SQLserver(2005之后),都自带了Pivot函数实现行转列功能,本文主要讲述在Hive中实现行转列的两种方式. 传统数据库方式 ...

  3. Hive 行转列,列传行 - Impala 暂不支持

    注:Impala 不支持 lateral view explode 一.行转列 (对某列拆分,一列拆多行) 使用函数:lateral view explode(split(column, ',')) ...

  4. hive 行转列和列转行的方法_面试常考!SQL行转列和列转行

    关注上方"数据挖掘工程师",选择星标,关键时间,第一时间送达!行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SE ...

  5. hive 行转列和列转行的方法_读离线和实时大数据开发实战,为你揭开 Hive 优化实践的神秘面纱...

    前言 「1024,1GB,一级棒!程序仔们节日快乐!」 ❝ 指尖流动的 1024 行代码,到底是什么? ❞ ❝ 是10行的迷茫?是101行的叛逆?是202行的理性思考?是307行对渴望的冲动?还是40 ...

  6. Hive 行转列(lateral view)

    将列表式变量转为列, 例如 var1 value1 a c1,c2,c3,c2 b b1,b2,b1 将value1拆分转换为列,语句如下: select var1, value2 from tabl ...

  7. hive行转列的高级用法later view explode

    先贴出一个示例: 参考链接 转载于:https://www.cnblogs.com/andylhc/p/11066361.html

  8. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...

  9. java输出m行n列方格_java从键盘输入两个整数m、n,生成一个m行n列的二维数组,对数组进行任...

    图片2113实在看不清楚,下面是一个5261 输出 3行4列 数组4102的例子1653,可以参考一下:版public class App72 {public static void main(Str ...

  10. hive的lateral view行转列

    1.hive中的行转列最常用的就是lateral view的语法,例如: select id,vcol from t lateral view explode(col) vtable as vcol ...

最新文章

  1. setjmp和longjmp
  2. Vue学习【第六篇】:Vue-cli脚手架(框架)与实战案例
  3. enum操作--获取枚举里的最大值
  4. 消费者服务消费延时分析
  5. 等级保护2.0常见问题集
  6. 有关SQL Server代理的常见问题和示例
  7. SylixOS 内存管理源代码分析--pageTable.c
  8. 1.2 JAVA多线程实现
  9. 微信开发者工具及其文档
  10. 网络工程师考试知识点
  11. 一个点击率10万+的恶搞程序送给大家!
  12. MySQL limit 2种写法
  13. 基于认证服务器的认证协议演化
  14. vue 关于图片和文字的绝对定位 js 动态设置定位
  15. 冰羚中间件 conceptual-guide.md翻译
  16. .invokeRequired属性和 invoke()方法
  17. 百度地图API实现 地址经纬度 互相转换
  18. 【人工智能系列 - 智能硬件 - 01】演化硬件的概述
  19. 新建、重命名、删除文件夹必须要通过刷新才能显示解决办法
  20. php好看的控件,漂亮的css button样式汇总

热门文章

  1. MAC 系统下怎么新建一个桌面
  2. 51单片机:独立按键
  3. c#语言输出字符串长度,C#获取字符串长度(string.Length)
  4. Excel2013制作甘特图
  5. h5禁止页面长按操作_解决HTML5对手机页面长按会粘贴复制禁用的方法-H5教程
  6. Win10蓝牙开关不显示,任务栏不显示蓝牙图标解决方案
  7. 国内做市场情报公司前10名
  8. nutch 抓取流程解析
  9. Java 上传附件后端接口大体流程和逻辑
  10. PAT-厘米换算英尺英寸(简单编程题)