窗口函数cluster_sample

命令格式:
boolean cluster_sample(bigint x[, bigint y])
        over(partition by col1[, col2..])
用途:
分组抽样参数说明:
x:Bigint类型常量,x>=1。若指定参数y,x表示将一个窗口分为x份;否则,x表示在一个窗口中抽取x行记录(即有x行返回值为true)。x为NULL时,返回值为NULL。
y:Bigint类型常量,y>=1,y<=x。表示从一个窗口分的x份中抽取y份记录(即y份记录返回值为true)。y为NULL时,返回值为NULL。
partition by col1[, col2]:指定开窗口的列。
返回值:Boolean类型。
示例,如表test_tbl中有key,value两列,key为分组字段,值有groupa,groupb两组,value为值,如下
    +------------+--------------------+
    | key        | value              |
    +------------+--------------------+
    | groupa     | -1.34764165478145  |
    | groupa     | 0.740212609046718  |
    | groupa     | 0.167537127858695  |
    | groupa     | 0.630314566185241  |
    | groupa     | 0.0112401388646925 |
    | groupa     | 0.199165745875297  |
    | groupa     | -0.320543343353587 |
    | groupa     | -0.273930924365012 |
    | groupa     | 0.386177958942063  |
    | groupa     | -1.09209976687047  |
    | groupb     | -1.10847690938643  |
    | groupb     | -0.725703978381499 |
    | groupb     | 1.05064697475759   |
    | groupb     | 0.135751224393789  |
    | groupb     | 2.13313102040396   |
    | groupb     | -1.11828960785008  |
    | groupb     | -0.849235511508911 |
    | groupb     | 1.27913806620453   |
    | groupb     | -0.330817716670401 |
    | groupb     | -0.300156896191195 |
    | groupb     | 2.4704244205196    |
    | groupb     | -1.28051882084434  |
    +------------+--------------------+
想要从每组中抽取约10%的值,可以用以下ODPS SQL完成:
    select key, value
    from (
        select key, value, cluster_sample(10, 1) over(partition by key) as flag
        from tbl
        ) sub
    where flag = true;
    +--------+--------------------+
    | key    | value              |
    +--------+--------------------+
    | groupa | -1.34764165478145  |
    | groupb | -0.725703978381499 |
    | groupb | 2.4704244205196    |
    +-----+-----------------------+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值