zoukankan      html  css  js  c++  java
  • hive笔记

    cast

    cast(number as string),  可以将整数转成字符串

    lpad  rpad

    lpad(target, 10, '0')   表示在target字符串前面补0,构成一个长度为10的字符串

    concat_ws 列拼接

    concat_ws('@', 'zhaopei', 'mail.bnu.edu.cn')  

    split

    split('aa|bb','[|]')  形成一个list, ['aa', 'bb']

    row_number() 可实现组内排序

    分组后 topK, 可以用row_number()

    有这样一个需求:在一段周期内每个乘客的tag字段有多个属性,查询出乘客tag属性出现次数最多的作为tag的属性值

    思路:首先根据 pid,tag 进行分组,计算每个tag的数量(cnt),然后用row_number()对 pid分组,并按 cnt 降序,现在就实现了组内排序,然后取rank为一的即可

    select
    passenger_id, tag
    from
        (select
        passenger_id, tag, row_number() over(partition by passenger_id order by cnt desc) rank
        from
            (select
            passenger_id, level_purchase_power as tag, count(*) as cnt
            from decision.fex_eb5f12_1966
            where
            concat(year, month, day) > 20180801 and concat(year, month, day) < 20180821
            and city_id = 4
            group by passenger_id, level_purchase_power) e
    )a
    where a.rank = 1

    这样一个需求:

    A,B两个表通过一列进行关联,并判断在B表中是否有对应的这一列的值

    直接关联的话,如果B表没有的话,那B表对应就是null,所以只需要判断是否是null,if(complaint.order_id is null, 1, 0), hive中if的使用方法是 if( condition, true, false)

    今天还在想关于left join能不能先过滤一部数据然后在和其他的表进行关联,直接做是不行的,应该先过滤出来形成一个临时表,然后用临时表在进行join

      

  • 相关阅读:
    IOS-SQLite3的封装
    IOS-SQLite3
    IOS-真机相关
    IOS-将任意对象存进数据库
    IOS-支付宝
    IOS-推送通知
    iOS-证书真机调试
    iOS-免证书真机调试
    iOS-沙盒路径
    Android之发送短信的两种方式
  • 原文地址:https://www.cnblogs.com/zhaopAC/p/9637323.html
Copyright © 2011-2022 走看看