hive 传参学习笔记

hive写脚本传递参数

hive的本质也是一门编程语言,因此想办法使用循环,减少代码
因此在hive查询语句中,还是可以传入一些参数,减少重复代码的

select * 
    from 
    demo.demotable 
    where dt='20210217' and label='${hiveconf:label}'
    limit 1000

上面的代码中label就是需要传入的参数,其实是都可以传入

row_number over...

因为row_unmber的优先级是在partition by 和 order by之后的,因此想要随机抽取数据的时候需要 让order by 后面是随机排序的

使用row_number over主要是按照某个column中的类别进行分组,然后抽取这组中的某几条,但是要随机抽取,否则每次可能会抽取到一样的数据.

select * from (
         select *,row_number() over(partition by label order by rand()) rn
         from demo.demotable where dt='20210103'
 ) r where r.rn <=50  -- 每类别抽50条

每天记录一点点,方便自己学习新的东西

原文地址:https://www.cnblogs.com/gaowenxingxing/p/14487026.html