Hive详解(4)

Hive

窗口函数

分析函数

  1. 聚合函数,例如sumavgmaxmin

  2. 移位函数

    1. lag(colName, n):以当前行为基础,来处理第前n行的数据

    2. lead(colName, n):以当前行为基础,来处理第后n行的数据

    3. ntile(n):要求数据必须有序,将有序的数据依次放入n个桶中,保证每个桶中的数据几乎一致,相差最多不超过1个

  3. 排序函数

    1. row_number:数据排序之后,按顺序给数据进行编号,即使数据相同,也是给定不同的编号

    2. rank:数据排序之后,按顺序给数据进行编号,如果数据相同,则给定相同的序号,会产生空位

    3. dense_rank:数据排序之后,按顺序给数据进行编号,如果数据相同,则给定相同的序号,但是不会产生空位

移位函数案例

  1. 需求二:查询每一位顾客的消费明细以及上一次的消费时间

    复制代码
    select *,
           lag(order_date, 1) over (partition by name order by order_date) as last_order_date
    from orders;
  2. 需求三:查询最早进店消费的前20%的顾客信息

    复制代码
    select * from (
        select *,
               ntile(5) over (order by order_date) as n
        from orders
    ) t1 where n = 1;

排序函数案例

  1. 原始数据

    复制代码
    Bob Chinese 85
    Alex Chinese 76
    Bill Chinese 78
    David Chinese 92
    Jack Chinese 69
    Lucy Chinese 74
    LiLy Chinese 78
    Bob Maths 91
    Alex Maths 82
    Bill Maths 69
    David Maths 60
    Jack Maths 69
    Lucy Maths 71
    LiLy Maths 82
    Bob English 60
    Alex English 62
    Bill English 85
    David English 85
    Jack English 69
    Lucy English 78
    LiLy English 93
  2. 案例

    复制代码
    -- 建表
    create table scores (
        name    string,
        subject string,
        score   int
    ) row format delimited fields terminated by ' ';
    -- 加载数据
    load data local inpath '/opt/hive_data/scores' into table scores;
    -- 查询数据
    select *
    from scores tablesample (5 rows);
    -- 按科目对成绩进行降序排序
    select *,
           row_number() over (partition by subject order by score desc) as rn,
           rank() over (partition by subject order by score desc)       as ra,
           dense_rank() over (partition by subject order by score desc) as dr
    from scores;
    -- 获取各科目前三名的信息
    select * from (
        select *, rank() over (partition by subject order by score desc) as n from scores
    ) t where n <= 3;
相关推荐
字节跳动数据平台15 小时前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
武子康20 小时前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive
字节跳动数据平台2 天前
代码量减少 70%、GPU 利用率达 95%:火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
得物技术2 天前
深入剖析Spark UI界面:参数与界面详解|得物技术
大数据·后端·spark
武子康2 天前
大数据-238 离线数仓 - 广告业务 Hive分析实战:ADS 点击率、购买率与 Top100 排名避坑
大数据·后端·apache hive
武子康3 天前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天3 天前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
武子康5 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康6 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet