Hive
记录平时使用Hive时常用的场景、函数技巧。不局限于Hive,Impala和MySQL
RessCris
怕什么真理无穷,进一寸有一寸的欢喜
展开
-
Impala drop问题
impala drop 命令删表,再往里面插入数据的时候原来的数据还在。可以先在hive里面删,然后运行命令INVALIDATE METADATA表名;就可以了。原创 2020-10-27 10:52:19 · 601 阅读 · 0 评论 -
利用cross join解决hive/mysql循环跑多个时间值的问题
问题背景:计算2019.6.1-2019.7.31每一天的累计注册人数。解决方法一:通过shell脚本设置时间变量,通过hiveconf传时间参数 调用spark-sql -f完成循环计算。缺点是每次都要重新启动spark-sql,非常耗时。传时间参数shell脚本如下:begin_date=$1end_date=$2sql_file=$3begin_date=`date -d +%Y-%m-%d`while [ "$begin_date" \< "$end_date" ]原创 2020-06-04 13:04:45 · 507 阅读 · 0 评论 -
MySQL增删改查常用语句
插入记录罗列记录插入数据insert into test(id, name)values (1, "Cristina");通过 select插入记录insert into test(id, name)select id,name from test_2;删除删除表保留表结构truncate table test;删除表记录delete from table test where id = 1;修改修改表名alter table test rename as tes原创 2020-05-08 21:25:01 · 406 阅读 · 0 评论 -
【Hive】常用日期格式转换和计算
regexp_replace(‘2017-12-05’,’-’,’’)set belong_month=2020-04;date_format(concat(year(’hiveconf:belongmonth′)−1,′−′,month(′{hiveconf:belong_month}')-1,'-',month('hiveconf:belongmonth′)−1,′−′,month(′{hiveconf:belong_month}’)),‘yyyy-MM’)感觉这个可以用date函数去做。AN原创 2020-05-27 20:17:25 · 4374 阅读 · 0 评论 -
explode的一个例子
SELECT "level" as level, explode(split('1,2,3',',')) as value;可以生成结果level valuelevel 1level 2level 3原创 2020-05-09 17:26:13 · 234 阅读 · 0 评论 -
Hive获取指定日期的星期一和星期天
select DATE_SUB( '${hiveconf:belong_date}', PMOD(DATEDIFF('${hiveconf:belong_date}','2020-05-04'),7)); -- 星期一select DATE_SUB( '${hiveconf:belong_date}', PMOD(DATEDIFF('${hiveconf:belong_date}','2020-05-10'),7)); -- 星期天其实只要把‘2020-05-04’换成某个星期几,就可以获取相应的那一原创 2020-05-09 17:13:11 · 7348 阅读 · 0 评论 -
记一次值得收藏的案例
计算淘系近一年购物会员人数,近一年购物会员数量,复购率,取日、周、月维度计算。思路是:计算得到每一次购买的上次购买时间,坑的地方在于 LAG这个使用并不是rank的减一操作,而是单纯得取上一列。所以用denserank去做rank的操作是不可行的。后改为用 f_rank=f_rank+1 的方式。先放代码,quiky之处空了再补充!with date_info as (select period_date,from_unixtime(unix_timestamp(month_start_原创 2020-09-28 03:03:05 · 69 阅读 · 0 评论 -
Hive不支持不等值连接;构建近一年的日期辅助列
不等值连接指的是 ON 条件中出现不等式,HIVE暂时不支持这种写法。改成用INNER JOIN + WHERE 的方式with date_para as (selectperiod_date,date_sub(period_date,366) as year_agofrom dim.dim_app_period_dwhere year>2019)selecta.period_date,b.period_date,b.year_agofrom date_para ainne原创 2020-09-27 15:16:15 · 776 阅读 · 0 评论