hive 常用函数

1.分位数

  percentile_approx(DOUBLE col, p [, B])     Returns an approximate pth percentile of a numeric column (including floating point types) in the group

  含义: 在col列中返回p%的分位数

  select percentile_approx( arr_id , 0.5 )from (selectarr_idfrom(selectarray(1, 2, 3, 4, 5, 6, 7, 8, 9, 1000) as arr) a lateral view explode(arr) tt as arr_id) a 

2.url解析

解码url: URL转码,encodeURI,encodeURIComponent — 在线工具
解析json: 在线JSON校验格式化工具(Be JSON)

上报:
:path: /log/web?0000171612422098683https%3A%2F%2Fwww.bilibili.com%2Fbangumi%2Flist%2Fsl17662%3Ffrom_spmid%3Dpgc.cinema-tab.0.0%26intentFrom%3D15%26native.theme%3D1%26navhide%3D1%26share_medium%3Dandroid%26share_plat%3Dandroid%26share_source%3DCOPY%26share_tag%3Ds_i%26timestamp%3D1612343552%26unique_k%3DHKz3gy|666.49.selfDef.click_unfollow||1612422098000|0|0|980x1743|2|{%22event%22:%22click_unfollow%22,%22value%22:{%22sl_id%22:%2217662%22,%22season_id%22:35582,%22season_type%22:3,%22mid%22:36865977},%22bsource%22:%22share_source_copy_link%22}|{}|https%3A%2F%2Fm.bilibili.com%2F|FF7C614F-2539-A3E3-1AE8-E4265F23111B03042infoc|zh-CN|nullmsg:
{%22event%22:%22click_season%22,%22value%22:{%22sl_id%22:%2218665%22,%22season_id%22:32429,%22season_type%22:2,%22mid%22:179753067},%22bsource%22:%22%22}解码url:  https://www.sojson.com/encodeurl.html
解析json: https://www.bejson.com/
解析msg 字段:
select
*
,get_json_object(msg, '$.event') as event1
,get_json_object(msg, '$.value') as value1
,get_json_object(get_json_object(msg, '$.value'), '$.sl_id')  as sub_value_sl
,get_json_object(get_json_object(msg, '$.value'), '$.season_id')  as sub_value_season
,get_json_object(get_json_object(msg, '$.value'), '$.season_type')  as sub_value_season_type
,get_json_object(get_json_object(msg, '$.value'), '$.mid')  as sub_value_mid
from
(
select '{"event":"click_season","value":{"sl_id":"18665","season_id":32429,"season_type":2,"mid":179753067},"bsource":""}'  as msg  union all
select '{"event":"unload","value":{"enter":1612292714266,"leave":1612292745642},"bsource":""}'  as msg  union all
select '{"event":"show_hover","value":{"sl_id":"20233","season_id":33987,"season_type":2,"mid":172278354},"bsource":""}'  as msg  union all
select '{"event":"click_season","value":{"sl_id":"17834","season_id":34565,"season_type":2,"mid":271658710},"bsource":"search_baidu"}'  as msg  union all
select '{"event":"show_hover","value":{"sl_id":"17834","season_id":28274,"season_type":2,"mid":281264988},"bsource":""}'  as msg  
)  alimit 2000select
*,
reflect("java.net.URLDecoder", "decode", msg, "UTF-8")  as url
,get_json_object(reflect("java.net.URLDecoder", "decode", msg, "UTF-8"), '$.event') as event_type
,get_json_object(reflect("java.net.URLDecoder", "decode", msg, "UTF-8"), '$.value') as event_value
,get_json_object(get_json_object(reflect("java.net.URLDecoder", "decode", msg, "UTF-8"), '$.value'), '$.sl_id')  as sub_value_sl
,get_json_object(get_json_object(reflect("java.net.URLDecoder", "decode", msg, "UTF-8"), '$.value'), '$.season_id')  as sub_value_season
,get_json_object(get_json_object(reflect("java.net.URLDecoder", "decode", msg, "UTF-8"), '$.value'), '$.season_type')  as sub_value_season_type
,get_json_object(get_json_object(reflect("java.net.URLDecoder", "decode", msg, "UTF-8"), '$.value'), '$.mid')  as sub_value_mid
fromb_dwd.dwd_flow_web_click_l_d
WHERElog_date between '<%= log_date  %>'  and '<%= log_date %>' and   substr(spm_id,1,6)= '666.49'limit 2000

3.正则 

 滑动验证页面

select
*,
a.from_spmid rlike concat('^','dynamic') ,
a.from_spmid rlike concat('^','dt+') ,
a.from_spmid rlike '^dt'
from
(
select 'ott-platform.ott-dynamic.0.0' as from_spmid union ALL
select 'out_open_deeplink_gdtlh-and-yf-31yaz-17776718' as from_spmid union ALL
select 'out_open_deeplink_gdtlh-and-yf-31yaz-18253662' as from_spmid union ALL
select 'ott-platform.ott-dynamic.0.0' as from_spmid union ALL
select 'dynamic.video-tab.0.0' as from_spmid union ALL
select 'default-value' as from_spmid
) a

3.hsql 间隔日期补数

方法1:窗口函数

with  tmp_table as (select dt ,city ,  val from (select  '20220101' as dt ,'上海' as city ,  100  val union all select  '20220102' as dt ,'上海' as city ,  null val union all select  '20220104' as dt ,'上海' as city ,  null val union all select  '20220106' as dt ,'上海' as city ,  200  val ) a 
) ,tmp_a as (
select dt ,city ,  val ,
case when val  is null then 0 else 1 end val1  -- 将空值设置为0,非空值设置为1
from tmp_table
),
tmp_b as (
select dt ,city ,  val ,val1,
sum(val1) over(partition by '1' order by dt) as cnt_val1 -- 区分 空和费控分空分组 
from tmp_a
)
select dt ,city ,  val ,val1,cnt_val1,
max(val) over(partition by cnt_val1 order by dt) as fill_val  -- 使用开窗函数按照分组求最大值
from tmp_b


方法2:udf 

4. 用户大会员在期的天数
with tmp_dt as (select id,sdt,edtfrom (select 1 id, '2022-02-02' as sdt, '2022-02-07' as edt union all select 1 id, '2022-02-07' as sdt, '2022-02-18' as edt union allselect 1 id, '2022-02-10' as sdt, '2022-02-23' as edt ) a 
)
select 
id,base_line,max(dt) dt 
,datediff(max(dt),base_line)+1 as days
from 
(select id ,dt,max(base_f) over (PARTITION BY id ORDER BY dt) base_line
from 
(select id ,dt,flag,sum(flag) over(partition by id order by concat(dt,flag) desc) as sm ,case when sum(flag) over(partition by id order by concat(dt,flag) desc)=0 then dt else 0 end as base_ffrom (select id,sdt as dt,1 as flagfrom tmp_dtunion all select id,edt,-1 as flagfrom tmp_dt) a 
) b
) c
group by id ,base_line

5.取每个mid同时播放的设备数分布。

已经整理好buvid、mid、开始播放时间、结束播放时间。主要背景是想看下现在“共享账号”的用户量级有多少

https://berserker.bilibili.co/?URL=http://berserker.bilibili.co/#/adhoc?sqlId=100670985

with ogv_play as (select mid,buvid,season_id,epid,log_date,arch_play_timestamp as stime,arch_play_timestamp+total_duration as etimefrom bili_ogv.dwd_flow_ogv_play_app_timed_i_dwhere log_date between '20230226' and '20230226'  and season_id >0 and total_duration>0  union select mid,buvid,season_id,epid,log_date,arch_play_timestamp as stime,arch_play_timestamp+played_duration as etimefrom bili_ogv.dwd_flow_ogv_play_web_timed_i_dwhere log_date between '20230226' and '20230226' and season_id >0 and played_duration>0  ),vip_user as (select mid,log_datefrom bili_ogv.dim_user_full_d where log_date between '20230226' and '20230226'  and is_vip_user = 1  ),vip_play_pay_ep as (select a.mid,a.buvid,a.epid,a.stime,a.etime ,a.log_datefrom ogv_play a join vip_user b on a.mid = b.mid  and a.log_date = b.log_datejoin (select epid,log_datefrom bili_ogv.dim_ep_av_full_d where log_date between '20230226' and '20230226' and ep_status not in (2,14)) c on a.epid = c.epid and a.log_date = c.log_date)-- mid同时播放的设备数分布
select i.buvid_cnt,count(*)  as mid_cnt   
from
(
select 
-- mid 的设备数去重 buvidj.mid,count(distinct j.buvid ) as buvid_cnt  
from
(select  
-- 删除重复进入播放记录, 保留同时进入播放的记录h.log_date,h.mid,h.buvid,h.epid,h.in_out_time,h.label ,h.num -- 每个mid 同时在线计数,h.in_out_time_rank  -- 每个mid 播放开始时间排序 ,h.num1  -- 用户进入次数计数,h.diff ,h.max_num ,h.max_inc_rank -- 升序的最大值,h.max_inc_rank_for_row -- 升序的最大值存放在每一行,h.acc_by_mid_num1  --  每个mid重复进入播放计数
from 
(selectg.log_date,g.mid,g.buvid,g.epid,g.in_out_time,g.label ,g.num -- 每个mid 同时在线计数,g.in_out_time_rank  -- 每个mid 播放开始时间排序 ,g.num1  -- 用户进入次数计数,g.diff ,g.max_num ,g.max_inc_rank -- 升序的最大值,g.max_inc_rank_for_row -- 升序的最大值存放在每一行,sum(1)  over(partition by mid,num1 )  as acc_by_mid_num1  --  每个mid重复进入播放计数
from
(select
-- 得到同时在线num 的升序部分 f.log_date,f.mid,f.buvid,f.epid,f.in_out_time,f.label ,f.num -- 每个mid 同时在线计数,f.in_out_time_rank  -- 每个mid 播放开始时间排序 ,f.num1  -- 用户进入次数计数,f.diff ,f.max_num ,f.max_inc_rank -- 升序的最大值,f.max_inc_rank_for_row -- 升序的最大值存放在每一行
from
(select e.log_date,e.mid,e.buvid,e.epid,e.in_out_time,e.label ,e.num -- 每个mid 同时在线计数,e.in_out_time_rank,e.num1  -- 用户进入次数计数,e.diff ,e.max_num ,e.max_inc_rank -- 升序的最大值,max(e.max_inc_rank) over(partition by e.mid)  max_inc_rank_for_row -- 升序的最大值存放在每一行
from 
(select d.log_date,d.mid,d.buvid,d.epid,d.in_out_time,d.label ,d.num  -- 每个mid 同时在线计数,d.in_out_time_rank,d.num1  -- 用户进入次数计数,d.diff ,d.max_num ,if(d.max_num=d.num,d.in_out_time_rank,0)  as max_inc_rank -- 升序的最大值
from
(select c.log_date,c.mid,c.buvid,c.epid,c.in_out_time,c.label ,c.num   -- 每个mid 同时在线计数,c.in_out_time_rank,c.num1 -- 用户进入次数计数,c.diff ,first_value(c.num) over(partition by c.mid order by c.num desc ) as max_num 
from 
(selectb.log_date,b.mid,b.buvid,b.epid,b.in_out_time,b.label ,b.num  -- 每个mid 同时在线计数,b.in_out_time_rank,sum(b.label1)  over(partition by b.mid  order by b.in_out_time )  as num1  -- 用户进入次数计数,b.in_out_time_rank-b.num as  diff from(select a.log_date,a.mid,a.buvid,a.epid,a.in_out_time,a.label,sum(a.label)  over(partition by a.mid  order by a.in_out_time )  as num -- 每个mid 同时在线计数,row_number() over(partition by  a.mid  order by a.in_out_time ) as in_out_time_rank,if(a.label=-1 ,0,a.label) as label1  -- 退出分组from (-- 开始时间select log_date,mid,buvid,epid,stime  as   in_out_time,1      as   labelfrom vip_play_pay_ep-- where mid = 57706 -- 1645967203union all -- 结束时间select log_date,mid,buvid,epid,etime   as   in_out_time,-1      as   labelfrom vip_play_pay_ep-- where mid = 57706 -- 1645967203) a) b ) c ) d ) e ) f where  f.in_out_time_rank between 1 and  f.max_inc_rank_for_row
) g ) h 
where h.acc_by_mid_num1 =1   --  每个mid重复进入播放计数) j 
group by j.mid) i 
group by i.buvid_cnt

思路:

1.每个mid 同时在线计数

2.同时播放数提取升序部分

3.删除重复进入播放部分

5. 提取一个字符串中重复的item_id 后缀数字

select 
regexp_extract(sub_str,'item_id\\":\\"([0-9]+)(\\")',1)
FROM 
(select '{"item_infos":[{"item_id":"701969"},{"item_id":"701965"}]},{"item_infos":[{"item_id":"701964"},{"item_id":"701963"}]}' as  string_test
) a 
lateral view explode(split(string_test,',')) t as sub_str 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣-404.左叶子之和

Idea attention&#xff1a;先看清楚题目&#xff0c;题目说的是左叶子结点&#xff0c;不是左结点【泣不成声】 遇到像这种二叉树类型的题目呢&#xff0c;我们一般还是选择dfs&#xff0c;然后类似于前序遍历的方式加上判断条件即可 AC Code class Solution { public:void d…

【JavaEE】_HTTP请求与HTTP响应

目录 1. HTTP协议 2. HTTP请求 2.1 HTTP请求首行 2.2 URL 2.3 HTTP方法 2.3.1 GET请求 2.3.2 POST请求 2.3.3 GET与POST的区别 2.3.4 其他方法 2.4 请求报头header 2.4.1 Host&#xff1a; 2.4.2 Content-Length与Content-Type&#xff1a; 2.4.3 User-Agent&…

王道考研计算机组成原理——计算机硬件的基础知识

计算机组成原理的基本概念 计算机硬件的针脚都是用来传递信息&#xff0c;传递数据用的&#xff1a; 服务程序包含一些调试程序&#xff1a; 计算机硬件的基本组成 控制器通过电信号来协调其他部件的工作&#xff0c;同时负责解析存储器里存放的程序指令&#xff0c;然后指挥…

数据结构--》数组和广义表:从基础到应用的全面剖析

数据结构为我们提供了组织和处理数据的基本工具。而在这个广袤的数据结构领域中&#xff0c;数组和广义表是两个不可或缺的重要概念。它们作为线性结构的代表&#xff0c;在算法与应用中扮演着重要的角色。 无论你是初学者还是进阶者&#xff0c;本文将为你提供简单易懂、实用可…

十二、Django之模板的继承+用户列表

模板的继承 新建layout.html&#xff1a; {% load static %} <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"{% static plugins…

计算机毕设 大数据B站数据分析与可视化 - python 数据分析 大数据

文章目录 0 前言1 课题背景2 实现效果3 数据获取4 数据可视化5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做…

阿里云轻量应用服务器有月流量限制吗?

阿里云轻量应用服务器限制流量吗&#xff1f;部分限制&#xff0c;2核2G3M和2核4G4M这两款轻量应用服务器不限制月流量&#xff0c;其他的轻量服务器套餐有月流量限制。 腾讯云轻量应用服务器价格便宜&#xff0c;活动页面&#xff1a;aliyunbaike.com/go/tencent 细心的同学看…

第四课 递归、分治

文章目录 第四课 递归、分治lc78.子集--中等题目描述代码展示 lc77.组合--中等题目描述代码展示 lc46.全排列--中等题目描述代码展示 lc47.全排列II--中等题目描述代码展示 lc226.翻转二叉树--简单题目描述代码展示 lc98.验证二叉搜索树--中等题目描述代码展示 lc104.二叉树的最…

八大排序详解(默认升序)

一、直接插入排序 直接插入排序&#xff1a;直接插入排序就是像打扑克牌一样&#xff0c;每张牌依次与前面的牌比较&#xff0c;遇到比自己大的就将大的牌挪到后面&#xff0c;遇到比自己小的就把自己放在它后面(如果自己最小就放在第一位)&#xff0c;所有牌排一遍后就完成了排…

GitHub工具之云资产管理

文章目录 0x01 介绍0x02 软件架构0x03 下载地址0x04 更新记录0x05 实现功能0x06 使用截图1、云存储工具-资产列表2、云存储工具-阿里云3、云存储工具-七牛云4、云存储工具-腾讯云5、云存储工具-亚马逊6、云存储工具-京东云7、云存储工具-金山云8、云存储工具-其他9、云存储工具…

【Kotlin精简】第1章 基础类型

1 Kotlin基础类型 Kotlin中&#xff0c;我们可以调用任何变量的成员函数和属性&#xff0c;从这个角度来说&#xff0c;一切皆对象。某些类型可以有特殊的内部表现。例如&#xff1a;数字、字符和布尔型在运行时可以表现为基础类型&#xff08;primitivetypes&#xff09;。 …

Stable diffusion的架构解读(本博客还是以unet架构为主)

博客只是简单的记录一下自己学的&#xff0c;基于自己的一些情况&#xff0c;所以简单了一些只是将来忘记&#xff0c;用来回顾用。 论文的大体框架 unet结构位于 unet会接受prompt特征、latent特征、和t时间步特征&#xff0c;最后生成新一轮的特征 可以参考知乎大佬htt…

Android之App跳转其他软件

文章目录 前言一、效果图二、实现步骤1.弹框xml(自己替换图标)2.弹框utils3.两个弹框动画4.封装方便调用5.调用6.长按事件方法7.跳转步骤8.复制utils 总结 前言 最近遇到一个需求&#xff0c;就是App内大面积需要长按复制并跳转指定App&#xff0c;没办法&#xff0c;只能埋头…

大语言模型之十六-基于LongLoRA的长文本上下文微调Llama-2

增加LLM上下文长度可以提升大语言模型在一些任务上的表现&#xff0c;这包括多轮长对话、长文本摘要、视觉-语言Transformer模型的高分辨4k模型的理解力以及代码生成、图像以及音频生成等。 对长上下文场景&#xff0c;在解码阶段&#xff0c;缓存先前token的Key和Value&#…

SpringCloud Alibaba - Sentinel 高级玩法,修改 Sentinel-dashboard 源码,实现 push 模式

目录 一、规则持久化 1.1、什么是规则持久化 1.1.1、使用背景 1.1.2、规则管理的三种模式 a&#xff09;原始模式 b&#xff09;pull 模式 c&#xff09;push 模式 1.2、实现 push 模式 1.2.1、修改 order-service 服务&#xff0c;使其监听 Nacos 配置中心 1.2.2、修…

RocketMQ 5.0 新版版本新特性总结

1 架构变化 RocketMQ 5.0 架构上的变化主要是为了更好的走向云原生 RocketMQ 4.x 架构如下&#xff1a; Broker 向 Name Server 注册 Topic 路由信息&#xff0c;Producer 和 Consumer 则从 Name Server 获取路由信息&#xff0c;然后 Producer 根据路由信息向 Broker 发送消…

2023年中国石化行业节能减排发展措施分析:用精细化生产提高生产效率,降低能耗[图]

2022年&#xff0c;我国石油和化工行业克服诸多挑战取得了极其不易的经营业绩&#xff0c;行业生产基本稳定&#xff0c;营业收入和进出口总额增长较快&#xff0c;效益比上年略有下降但总额仍处高位。2022年&#xff0c;我国石油化工行业市场规模为191761.2亿元&#xff0c;同…

macbook电脑磁盘满了怎么删东西?

macbook是苹果公司的一款高性能笔记本电脑&#xff0c;受到很多用户的喜爱。但是&#xff0c;如果macbook的磁盘空间不足&#xff0c;可能会导致一些问题&#xff0c;比如无法开机、运行缓慢、应用崩溃等。那么&#xff0c;macbook磁盘满了无法开机怎么办&#xff0c;macbook磁…

Qt实现 图片处理器PictureEdit

目录 图片处理器PictureEdit1 创建工具栏2 打开图片3 显示图片4 灰度处理5 颜色反转6 马赛克 图片处理器PictureEdit 创建工程&#xff0c;添加资源文件 1 创建工具栏 widget.h中 #include <QWidget> #include<QPixmap> #include<QFileDialog> #include&l…

【赠书活动】如何让AI在企业多快好省的落地

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…