• Hive中的常用函数


    背景

    现阶段各个公司的数据慢慢的增多,很多数据都是存放在基于Hadoop的集群上,数据的查询一般使用的是hive,很多公司的数据中台也是使用hive来进行数据处理,本篇文章就来分享下在hive中常用的函数

    常用函数

    set类设置

    • 查询结果显示表头
      set hive.cli.print.header=true;
    • 设置Fetch抓取,不走job
      set hive.fetch.task.conversion=more;
    • 展示数据库
      set hive.cli.print.current.db=true;
    • 修改是否使用静默
      set hive.compute.query.using.stats=false;

    日期类函数

    • 当天
    select current_date()
    运行结果:'2022-08-11'
    
    • 1
    • 2
    • 当月第一天
    select trunc(current_date(),'MM')      
    运行结果:'2022-08-01'
    select date_format(to_date(trunc(current_date(),'MM')),"yyyyMMdd") 
    运行结果:'20220801'
    
    • 1
    • 2
    • 3
    • 4
    • 当月最后一天
    select last_day(current_date)  
    运行结果:'2022-08-31'
    
    • 1
    • 2
    • 上个月
    select date_format(add_months(CURRENT_DATE,-1),'yyyyMM')
    运行结果:'202207'
    
    • 1
    • 2
    • 周几
    select pmod(datediff(current_date(),'1900-01-08'),7)+1
    运行结果:'4'
    
    • 1
    • 2
    • 获取当前时间戳
    select unix_timestamp()
    运行结果:'1660212154'
    
    • 1
    • 2

    字符串类函数

    • 字符拼接
    --concat(参数1,参数2,...参数n)
    select concat('a','b','c')
    运行结果:'abc'
    
    select concat('a','b',null,'c')   --包含一个null的话,结果为null
    运行结果:NULL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 字符以分割符进行拼接
    --concat_ws(分隔符,参数1,参数2,...参数n)
    select concat_ws(',','a','b','c')
    运行结果:'a,b,c'
    
    select concat_ws(',','a',null,'c')   --会忽略null
    运行结果:'a,c'
    
    select concat_ws(',',null,null,null)  --返回空字符,而不是null
    运行结果:''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    窗口类函数

    • ROW_NUMBER() –从1开始,按照顺序,生成分组内记录的序列

    • RANK() 生成数据项在分组中的排名,排名相等会在名次中留下空位

    • DENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位

    • LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
      第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

    • LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值
      第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)

    更多窗口函数可参考
    《Hive分析函数系列文章》
    http://lxw1234.com/archives/2015/07/367.htm

    历史相关文章


    以上是自己实践中遇到的一些问题,分享出来供大家参考学习,欢迎关注微信公众号:DataShare ,不定期分享干货

  • 相关阅读:
    Jenkins 结合 ANT 发送测试报告
    设计模式:组合模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
    # Vue3 setup 函数
    交易不确定性下的最优交易商定价
    MySQL:一主两从架构
    Activity、Fragment之间的传值
    学习编程的第二十七天
    Git学习笔记2
    react简易了解
    【R语言】线性混合模型进行重复测量设计分析
  • 原文地址:https://blog.csdn.net/zhangtingduo/article/details/126291741