zoukankan      html  css  js  c++  java
  • HIVE(2) 之 常用函数

    LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值

    第一个参数为列名,
    第二个参数为往上第n行(可选,默认为1),
    第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

    与LAG相反

    LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值

    第一个参数为列名,
    第二个参数为往下第n行(可选,默认为1),
    第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)

    select 
      cookieid, 
      createtime, 
      url, 
      row_number() over (partition by cookieid order by createtime) as rn, 
      LEAD(createtime,1,'1970-01-01 00:00:00') over (partition by cookieid order by createtime) as next_1_time, 
      LEAD(createtime,2) over (partition by cookieid order by createtime) as next_2_time 
    from cookie.cookie4;

    FIRST_VALUE

    取分组内排序后,截止到当前行,第一个值

    LAST_VALUE

    取分组内排序后,截止到当前行,最后一个值

    select 
      cookieid, 
      createtime, 
      url, 
      row_number() over (partition by cookieid order by createtime) as rn, 
      first_value(url) over (partition by cookieid order by createtime) as first1 
    from cookie.cookie4;

    提示:在使用分析函数的过程中,要特别注意ORDER BY子句,用的不恰当,统计出的结果就不是你所期望的。

    HIVE 中对  group by 字段的增强

    GROUPING SETS,  相当于多个group by分组统计后再union的逻辑

    GROUPING__ID, 

    CUBE,ROLLUP

    这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数

    select

    shengfen,

    dishi,

    sum(xinzeng) as sum_xinzeng

    from xinzeng_tb

    group by shengfen, dishi

    grouping sets (shengfen, (shengfen, dishi))

    -- cluster by sum_xinzeng 

    distribute by sum_xinzeng sort by sum_xinzeng desc;

    CUBE/ROLLUP必须与GROUP BY一起使用。

    cube可以得到group by这些维度上所有可能的聚合问题的答案。

    例如:

    GROUP BY a, b, c WITH CUBE 等价于

    GROUP BY a, b, c GROUPING SETS ( (a, b, c), (a, b), (b, c), (a, c), (a), (b), ©, ( )).

    rollups

    ROLLUP子句用于与GROUP BY一起计算维度层次结构级别上的聚合。

    使用ROLLUP将a、b、c分组,假设层次结构是“a”向下钻取到“b”,钻取到“c”。

    GROUP BY a, b, c, WITH ROLLUP 等价于 GROUP BY a, b, c GROUPING SETS ( (a, b, c), (a, b), (a), ( )).

    LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值

    第一个参数为列名,
    第二个参数为往上第n行(可选,默认为1),
    第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

  • 相关阅读:
    学习进度八
    ”“口袋“app的nabcd
    学习进度7
    软工人3月7日学习记录
    软工人3月6日学习
    软工人3月5日学习
    开课博客
    android入门之Android环境配置
    大二寒假学习
    python链接数据库并创建表
  • 原文地址:https://www.cnblogs.com/dll102/p/12097759.html
Copyright © 2011-2022 走看看