数据湖探索 DLI-cume_dist:示例代码

时间:2024-11-11 14:11:01

示例代码

为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表salary,并添加数据,命令示例如下:
CREATE EXTERNAL TABLE salary (
dept STRING, -- 部⻔名称
userid string, -- 员⼯ID
sal INT -- 薪⽔
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
stored as textfile;

添加数据如下:

d1,user1,1000
d1,user2,2000
d1,user3,3000
d2,user4,4000
d2,user5,5000
  • 统计小于等于当前薪水的人数占比
    select dept, userid, sal,
           cume_dist() over(order by sal) as cume1
    from salary;
    --  结果:
    d1 user1 1000 0.2
    d1 user2 2000 0.4
    d1 user3 3000 0.6
    d2 user4 4000 0.8
    d2 user5 5000 1.0
  • 按部⻔分组统计⼩于等于当前薪⽔的⼈数的⽐例
    select dept, userid, sal,
           cume_dist() over (partition by dept order by sal) as cume2
    from salary;
    -- 结果:
    d1 user1 1000 0.3333333333333333
    d1 user2 2000 0.6666666666666666
    d1 user3 3000 1.0
    d2 user4 4000 0.5
    d2 user5 5000 1.0
  • 按照sal降序排序后,结果就是统计 ⼤于等于 当前薪⽔的⼈数的⽐例
    select dept, userid, sal,
           cume_dist() over(order by sal desc) as cume3
    from salary;
    -- 结果:
    d2 user5 5000 0.2
    d2 user4 4000 0.4
    d1 user3 3000 0.6
    d1 user2 2000 0.8
    d1 user1 1000 1.0
    select dept, userid, sal,
           cume_dist() over(partition by dept order by sal desc) as cume4
    from salary;
    -- 结果:
    d1 user3 3000 0.3333333333333333
    d1 user2 2000 0.6666666666666666
    d1 user1 1000 1.0
    d2 user5 5000 0.5
    d2 user4 4000 1.0
support.huaweicloud.com/sqlref-spark-dli/dli_spark_cume_dist.html