Hive实现交叉二维分析的小语句

 

1. 梳理出你要的列和行维度

列维度: 每一周

行维度: 年级 + 学科 + 班型

2. 对数据按周增序进行聚合 (即根据列维度) ,生成list

concat_ws 和 collect_list (collect_set 会去重后再聚合)  顺序随机

sort_array 只能增序,要倒序排的话在子查询里新增一个辅助列来排序即可。

3. 依次取list的元素

即为 按周增序的指标结果

  select 
    term,
    kemu,
    course_applicable_user_type,
    split(hs,',')[0] lesson_order1,
    split(hs,',')[1] lesson_order2,
    split(hs,',')[2] lesson_order3,
    split(hs,',')[3] lesson_order4,
    split(hs,',')[4] lesson_order5
  from 
  (
    select 
           term,
           kemu,
           course_applicable_user_type,
           -- concat_ws(',', collect_list(cast(lesson_order as string))) as lesson_order_set,
           -- concat_ws(',', collect_list(cast(lesson_valid_rate as string))) as index_amount_set,    
           regexp_replace(
                  concat_ws(',',
                           sort_array (
                                   collect_list(
                                                concat_ws(':',
                                                          case when length(cast(lesson_order as string))=1 then concat('0',cast(lesson_order as string)) else cast(lesson_order as string) end,
                                                          cast(lesson_valid_rate as string)
                                                         )
                                                )
                                      )
                            ),'\\d\\d\:',''
                       )hs
    from
    (          
    select
      term,
      kemu,
      course_applicable_user_type,
      lesson_order,
      lesson_valid_rate 
    from tmp                
    )t
    group by term,kemu,course_applicable_user_type
   )t1

  

 

posted on 2018-12-18 16:42  Suckseedeva 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/skyEva/p/10138186.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值