zoukankan      html  css  js  c++  java
  • hive 窗口和分析函数功能

    背景: 使用hive-sql到一定的层次之后,对于这些函数需要透彻的理解,尤其是它适合的使场景。

    1. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics   hive关于窗口函数和分析函数的官方文档。

      备注:https://www.jianshu.com/p/acc8b158daef 比较靠谱的中文版本

    2. 内容:

      a. 窗口函数:

        1. lead/lag/first_value/last_value

        2. lead: lead(col,n,default)统计分组内往下第n行的值

        3.lag:lag(col,n,default)统计分组内往上第n行值

        4.first_value:分组排序后的,截止到当前行的第一个值

        5.last_value:分组排序后,截止到当前行最后一个值

      b. over语句:

        1. 跟在count/sum/min/max/avg 聚合后面

        2. 窗口规范:TBD

        3. 当order by 后缺少窗口从句条件时,默认窗口规范:range between unbounded preceding and current row

        4. 当order by和窗口从句都缺失时,默认窗口规范:row between unbounded preceding and unbounded following

      c. 分析函数:rank/row_number/dense_rank/cume_dist/percent_rank/ntile

        1. row_number():分组内排序,1234567

        2. rank():在分组内排序,排名相等会在名次中留下空位

        3. dense_rank():在分组内排序,排名相等的不会留下空位,但是名次相同

        4.CUME_DIST():小于等于当前值的行数除以分组内的总行数。比如,统计小于等于当前薪水的人数占总人数的比例。

        5.PERCENT_RANK():分组内当前行的RANK值-1/分组内 总行数-1

        6. ntile:用于将分组数据按照顺序切分成n片,返回当前切片值,如果切片不均匀,默认增加第一个切片的分布。NTILE不支持ROWS BETWEEN,比如NTILE(2) OVER(PARTITION BY cookieid         ORDER BY createtime ROWS BETWEEN 3 PERCEDING AND CURRENT ROW)

    3.细节内容:

      a. PRECEDING:往前

      b. FOLLOWING:往后

      c. CURRENT ROW:当前行

      d. UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDED FOLLOWING:表示到后面的终点

      以下内容参考:https://www.cnblogs.com/swg1124/p/7089683.html

      e.grouping sets: 在一个group by语句里面,根据不同的维度组合进行聚合,等价于group by 的结果进行uniinall

      f.grouping__id:表示结果属于哪一个分组集合.

      g. cube:根据group by的维度的所有组合进行聚合: with cube

      h.rollup:是cube的子集,以最左侧的维度为主,从该维度进行层级聚合

  • 相关阅读:
    SQL Server, Timeout expired.all pooled connections were in use and max pool size was reached
    javascript 事件调用顺序
    Best Practices for Speeding Up Your Web Site
    C语言程序设计 使用VC6绿色版
    破解SQL Prompt 3.9的几步操作
    Master page Path (MasterPage 路径)
    几个小型数据库的比较
    CSS+DIV 完美实现垂直居中的方法
    由Response.Redirect引发的"Thread was being aborted. "异常的处理方法
    Adsutil.vbs 在脚本攻击中的妙用
  • 原文地址:https://www.cnblogs.com/chengdu-jackwu/p/10167572.html
Copyright © 2011-2022 走看看