数仓漏斗模型,正则匹配REGEXP_EXTRACT,SORT_ARRAY

什么是数据分析的漏斗模型? 作者:李启方 很早之前就知道漏斗模型,但没有做更多的了解和运用,后来对漏斗模型的了解稍加深入之后,觉得它不仅仅是一个模型,更是一种可以普遍适用的方法论,或者说是一种思维方式。 本文主要谈谈漏斗模型的本质、漏斗模型案例分析以及如何绘制漏斗模型。 漏斗模型 关于漏斗模型,我认为本质是分解和量化。为什么这么说,这里以营销漏斗模型举栗。 百科给出的解释 阅读详情

日志数据 test.action_dtl_ld

1、步骤定义

第一步: eventid = 'e1' and properties['p1'] = 'v1'

第二步: eventid = 'e4' and properties['p5'] = 'vx'

第三步: eventid = 'e6' and properties['p2'] = 'v2'

2、步骤号计算

select
	guid,
	eventid,
	properties ,
	ts,
	case
        -- 前边添加一个ld 是为了正则表达式好抽取
		when eventid = 'e1'
		and properties['p1'] = 'v1' then 'ld1'
		when eventid = 'e4'
		and properties['p5'] = 'vx' then 'ld2'
		when eventid = 'e6'
		and properties['p2'] = 'v2' then 'ld3'
		else null
	end as orderid
from
	test.action_dtl_ld

3、步骤号计算结果 

4、步骤正则编码计算 

1、根据步骤号计算结果,过滤掉orderid是null的

2、concat(ts,'_',orderid)将ts与orderid拼接起来(拼接ts放在前边用来排序,sort_array)

3、collect_list(_),将ts与orderid拼接起来的结果收集到list中

4、sort_array(_),将list中的数据进行排序,因为前边拼接了ts所以会根据时间先后排序

5、concat_ws(_), 将list中排好序的数据,转成字符串,as Regstr

concat_ws(',',sort_array(collect_list(concat(ts,'_',orderid)))) as regstr

with t_orderid as (
select
	guid,
	eventid,
	properties ,
	ts,
	case
		when eventid = 'e1'
		and properties['p1'] = 'v1' then 'ld1'
		when eventid = 'e4'
		and properties['p5'] = 'vx' then 'ld2'
		when eventid = 'e6'
		and properties['p2'] = 'v2' then 'ld3'
		else null
	end as orderid
from
	test.action_dtl_ld
)

select
	guid,
	concat_ws(',',sort_array(collect_list(concat(ts,'_',orderid)))) as regstr
from
	t_orderid
where
	orderid is not null
	group by guid

5、步骤正则编码计算结果

 6、利用正则表达式判断上述结果

regexp_extract(subject,parttern,inedx)
解释:
--subject 是被解析的字符串
--pattern 是正则表达式
--index 是返回结果,取表达式的哪一部,“默认值为1”。
----0表示把整个正则表达式对应的结果全部返回;
----1表示返回正则表达式中第一个() 对应的结果 以此类推。
----注意点:
----要注意的是idx的数字不能大于表达式中()的个数。
----否则报错

select REGEXP_EXTRACT('3_ld1,4_ld1,5_ld2,7_ld3','.*?(ld1).*?(ld2).*?(ld3).*?',3)
----ld3

  7、 计算语句

  7、1  计算每个人完成的最大漏斗步数


with t_orderid as (
select
	guid,
	eventid,
	properties ,
	ts,
	case
		when eventid = 'e1'
		and properties['p1'] = 'v1' then 'ld1'
		when eventid = 'e4'
		and properties['p5'] = 'vx' then 'ld2'
		when eventid = 'e6'
		and properties['p2'] = 'v2' then 'ld3'
		else null
	end as orderid
from
	test.action_dtl_ld
),
regstr_res as (
select
	guid,
	concat_ws(',',
	sort_array(collect_list(concat(ts, '_', orderid)))) as regstr
from
	t_orderid
where
	orderid is not null
group by
	guid
)
-- 计算每个人完成的最大漏斗步数
select
	guid,
	case
	when REGEXP_EXTRACT(regstr,'.*?(ld1).*?(ld2).*?(ld3).*?',3) = 'ld3' then 3 
	when REGEXP_EXTRACT(regstr,'.*?(ld1).*?(ld2).*?',2) = 'ld2' then 2 
	when REGEXP_EXTRACT(regstr,'.*?(ld1).*?',1) = 'ld2' then 1 
	else 0
	end as stepmax 
from
	regstr_res

结果1

  7、2 计算每个人完成的最大漏斗步数

with t_orderid as (
select
	guid,
	eventid,
	properties ,
	ts,
	case
		when eventid = 'e1'
		and properties['p1'] = 'v1' then 'ld1'
		when eventid = 'e4'
		and properties['p5'] = 'vx' then 'ld2'
		when eventid = 'e6'
		and properties['p2'] = 'v2' then 'ld3'
		else null
	end as orderid
from
	test.action_dtl_ld
),
regstr_res as (
select
	guid,
	concat_ws(',',
	sort_array(collect_list(concat(ts, '_', orderid)))) as regstr
from
	t_orderid
where
	orderid is not null
group by
	guid
),
step_nums as (
select
	guid,
	case
		when REGEXP_EXTRACT(regstr, '.*?(ld1).*?(ld2).*?(ld3).*?', 3) = 'ld3' then 3
		when REGEXP_EXTRACT(regstr, '.*?(ld1).*?(ld2).*?', 2) = 'ld2' then 2
		when REGEXP_EXTRACT(regstr, '.*?(ld1).*?', 1) = 'ld2' then 1
		else 0
	end as stepmax
from
	regstr_res
)
-- 计算各个步数的人数
select
	count(if(stepmax>0,1,null)) as step1,
	count(if(stepmax>1,1,null)) as step2,
	count(if(stepmax>2,1,null)) as step3
from
	step_nums

结果2

8、结论

1、用户g01完成2步、用户g02完成3步

2、步骤1有2人完成,步骤2有两人完成,步骤3有两人完成

大数据Doris(五十九):SQL函数之字符串函数(三) 如果 len 大于 str 的长度,则在 str 的后面不断补充 pad 字符,直到该字符串的长度达到 len 为止。如果 len 小于 str 的长度,该函数相当于截断 str 字符串,只返回长度为 len 的字符串。如果没有匹配,返回空字符串。将字符串 str 重复 count 次输出,count 小于1时返回空串,str,count 任一为NULL时,返回 NULL。它返回具有指定长度的字符串的右边部分, 长度的单位为utf8字符。将字符串反转,返回的字符串的顺序和源字符串的顺序相反。 阅读详情

相关推荐

数仓工具—Hive语法之正则表达式函数

在我的其他文章中,我们已经看到了如何使用Hive正则表达式从字符串中提取日期值。正则表达式的另一个常见用途是提取数值,例如从字符串数据中提取区号或电话号码。当您处理不同的数据源时,可能需要从给定的字符串类型列中提取数字值,如电话号码或区号。例如,考虑下面的Hive示例,使用函数中的不同表达式从字符串中提取数字。例如,考虑以下示例,使用Hive正则表达式从字符串中仅获取3位数字。这些关键字,都是和匹配有关的,今天我们介绍一下hive 的。例如,以下示例中的正则表达式仅从字符串中提取6位数字。

4万+

Doris--基础--13.4--SQl函数--字符串函数

如果’str’字符串非空并且末尾不包含’trailing_char’字符,则将’trailing_char’字符附加到末尾。trailing_char只包含一个字符,如果包含多个字符,将返回NULL。

zhou920786312的博客 4839

Hive str to array / regexp_extract

with releases as (select '["us","ca","fr"]' as country) select split(regexp_extract(country,'^\\["(.*)\\"]$',1),'","') from releases; ["us","ca","fr"] -------- with releases as (select '["us:[abc]","ca:[abc]","fr:[abc]"]' as country) select split.

Top5软件工程硕士,先后在京东、字节从事多年Java后端开发、实时和离线大数据开发 2137

regexp_extract 正则表达式过滤

网址1:http://blog.sina.com.cn/s/blog_a18b33080102wsdw.html 网址2:http://blog.youkuaiyun.com/jv_rookie/article/details/55211955 函数描述: regexp_extract(str, regexp[, idx]) - extracts a group that matches r

ydc321的专栏 9529

运营数据分析模型—漏斗分析

漏斗分析可以很好的量化我们各个环节的用户流转和转化的情况漏斗分析的关键是提取出用户路径。

6万+

自动标签系统(关键字提取)

输入任何信息,可以提取其中的关键字,作为搜索用

SQL之concat()、collect_set()、collect_list()和concat_ws()用法

sort_array(e: column, asc: boolean)将array中元素排序(自然排序),默认asc。将collect_set无序集合,改成collect_list或sort_array进行排序。函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL。不同的是collect_list不去重而collect_set去重。的时候,只要有一个字符串不是NULL,就不会返回NULL。他们都是将分组中的某列转为一个数组返回,实际结果,class合并后并不是有序。

weixin_48272780的博客 1万+

MOBsf联动雷电模拟器(在docker国内库撤销后)

MobSF (全称:Mobile Security Framework,中文名:移动安全框架) 是一个自动化的移动应用程序(Android / iOS / Windows)开源测试工具,该工具采用Python开发,能够执行静态,动态和恶意软件分析。MobSF提供了很多自动化分析功能,尤其适用于Android应用。安装必备(默认已准备好)docker(kali) 现在的国内镜像源都已经下架了只能开代理下载桌面版然后给pull到本地。

qq_48149564的博客 1600

数据分析-AARRR漏斗模型案例

漏斗模型是一套流程式数据分析模型,用来反映用户在流程里的关键行为以及从起点到终点个阶段转化和流失情况漏斗分析模型已经广泛应用于类产品,且功能十分强大:它可以评估总体或各个环节的转化情况、促销活动效果;也可以与其他数据分析模型结合进行深度用户行为分析(如多维下钻分析、用户分群、对比分析等),从而找到用户流失的原因,以提升用户量、活跃度、留存率。

n2670820434的博客 2836

从零构建:四轴机械臂D-H参数建模与MATLAB实战指南

本文详细介绍了四轴机械臂D-H参数建模的完整流程与MATLAB实战应用。从机械臂运动学基础出发,解析D-H参数原理与坐标系建立规则,提供MATLAB Robotics Toolbox的安装、模型创建及正逆运动学求解的代码实现。特别针对四轴机械臂的逆运算优化、轨迹规划和奇异位形规避等高级应用给出实用解决方案,是机器人开发者的实战指南。

weixin_29062255的博客 420

Windows环境下pcl点云库 安装配置全流程(精简、有效)

本文为Windows配置点云库pcl步骤,具体是win10、visual studio 2017、pcl1.11.1。

zaibeijixing的专栏 1万+

hive中regexp_extract的用法总结

1、关于正则表达式的符号及意义 正则表达式由标准的元字符(metacharacters)所构成: / 做为转意,即通常在"/"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后//b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"/"后,/a/

jv_rookie的博客 10万+

线性模型:AR、MA、ARMA、ARMAX、ARX、ARARMAX、OE、BJ等

线性模型:AR、MA、ARMA、ARMAX、ARX、ARARMAX、OE、BJ等

zephyr_wang的博客 1万+

hive:函数:正则:regexp_extract 匹配正则取字段中的中文或英文+其他替换用法(清洗数据)

========英文======= select regexp_extract("Aptamil 爱他美(德国)",'([A-Z][a-z]*(\\s|$))+', 1) filed; 返回: Aptamil ========中文=======

不花的花和尚的博客 2万+

Matlab App Designer自学笔记(六):坐标轴控件axis函数绘图方法

作用: 绘制函数显示 显示图像(jpg png tiff) 颜色选项: r(红色) g(绿色) b(蓝色) w(白色) k(黑色) 其他 一、坐标区控件及设置 可以对坐标去进行设计: 二、功能实现及编程 功能:点击“绘图按钮”,能显示曲线。 实现:对按钮设置回调函数 若要多个图像显示在一个坐标系中,需要语句:hold(app.UIAxes,"on"); app.UIAxes是这个坐标轴的名字。 function ButtonP...

陶小桃Blog 3万+

合成孔径雷达Chirp Scaling(CS)算法MATLAB仿真实现

本人也是初学《合成孔径雷达成像算法与实现》,在GitHub上下载的关于CS算法的代码,仔细读了读,发现中间有一些不合理之处,动手改了一改,重新写了一个代码供初学者学习,有什么问题留言即可。 非常感谢源代码的作者,虽然中间有少许不正确的地方,但是对我理解cs算法的帮助非常大,非常感谢!!! 代码中提到的(4.31)这种均是在《合成孔径雷达成像算法与实现》中的公式 以下是MATLAB的仿真程序,直接复...

weixin_41700188的博客 7854

大数据—电商数仓项目

一、课程简介随着技术的飞速发展,经过多年的数据积累,各互联网公司已保存了海量的原始数据和各种业务数据,所以数据仓库技术是各大公司目前都需要着重发展投入的技术领域。数据仓库是面向分析的集成化数据环境,为企业所有决策制定过程,提供系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。二、课程内容本次精心打造的数仓项目的课程,从项目架构的搭建,到数据采集模块的设计、数仓架构的设计、实战需求实现、即席查询的实现,我们针对国内目前广泛使用的Apache原生框架和CDH版本框架进行了分别介绍,Apache原生框架介绍中涉及到的技术框架包括Flume、Kafka、Sqoop、MySql、HDFS、Hive、Tez、Spark、Presto、Druid等,CDH版本框架讲解包括CM的安装部署、Hadoop、Zookeeper、Hive、Flume、Kafka、Oozie、Impala、HUE、Kudu、Spark的安装配置,透彻了解不同版本框架的区别联系,将大数据全生态系统前沿技术一网打尽。在过程中对大数据生态体系进行了系统的讲解,对实际企业数仓项目中可能涉及到的技术点都进行了深入的讲解和探讨。同时穿插了大量数仓基础理论知识,让你在掌握实战经验的同时能够打下坚实的理论基础。三、课程目标本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,具体指标包括:每日、周、月活跃设备明细,留存用户比例,沉默用户、回流用户、流失用户统计,最近连续3周活跃用户统计,最近7天内连续3天活跃用户统计,GMV成交总额分析,转化率及漏斗分析,品牌复购率分析、订单表拉链表的设计等,让学生拥有更直观全面的实战经验。通过对本课程的学习,对数仓项目可以建立起清晰明确的概念,系统全面的掌握各项数仓项目技术,轻松应对各种数仓难题。四、课程亮点本课程结合国内多家企业实际项目经验,特别加入了项目架构模块,从集群规模的确定到框架版本选型以及服务器选型,手把手教你从零开始搭建大数据集群。并且总结大量项目实战中会遇到的问题,针对各个技术框架,均有调优实战经验,具体包括:常用Linux运维命令、Hadoop集群调优、Flume组件选型及性能优化、Kafka集群规模确认及关键参数调优。通过这部分学习,助学生迅速成长,获取前沿技术经验,从容解决实战问题。

从4A架构的角度出来 帮我分析一下:数字化转型深水区:企业架构如何成为价值重构的核心引擎?

4A 架构的本质是构建企业的数字神经系统,通过业务感知、数据传输、决策执行、技术支撑的闭环,实现从效率提升到生态重构的质变。正如华为通过该架构实现全球研发资源统一调度,某零售集团借此打造线上线下融合的新零售体系,当业务、数据、应用、技术四个维度形成共振时,企业将获得持续进化的数字免疫力,在不确定的市场环境中保持韧性生长。这一过程不仅需要技术工具的升级,更依赖组织文化的变革 —— 从 “部门墙” 到 “能力网” 的转型,才是数字化转型深水区的终极挑战。

金牌架构师 1047

hive函数:regexp_extract 正则表达式函数(字符串选择)

目标:取出["4873748","666"]数组中的数字。 方式:正则表达式选择。 regexp_extract 函数,第一个参数为要解析的数组或字符串等,第二个参数为正则表达式,第三个索引。 这里,参数一:["4873748","666"] 参数二:([0-9]+) 正则表达式,意为筛选数字,这里的‘+’指的是,多次重复。是正则匹配组的含义 参数三:0 (0表示把整个符合正则表达式对应...

xuehuagongzi000的博客 1万+

2025_NIPS_Grounded Reinforcement Learning for Visual Reasoning

尽管基于思维链的强化学习已在数学、编程等任务中显著提升语言模型性能,但视觉推理面临额外复杂性——需模型引导视觉注意力、解读感知输入,并将抽象推理锚定到空间证据上。本文提出ViGoRL(视觉接地强化学习),这是一种通过强化学习训练的视觉语言模型,能将每个推理步骤明确锚定到特定视觉坐标。受人类视觉决策启发,ViGoRL学会生成空间接地的推理轨迹,在每个步骤引导视觉注意力聚焦任务相关区域。当需要细粒度探索时,我们提出的多轮强化学习框架允许模型随着推理展开动态缩放至预测坐标。

c_cpp_csharp的专栏 59

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

hive regexp_extract

函数描述: regexp_extract(str, regexp[, idx]) - extracts a group that matches regexp 字符串正则表达式解析函数。 -- 这个函数有点类似于 substring(str from 'regexp')  .. 参数解释: 其中: str是被解析的字符串 regexp 是正则表达式

继续微笑lsj 1746

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

转:hive中regexp_extract的用法总结

hive中regexp_extract的用法总结 如: 1)select regexp_extract('hitdecisiondlist','(i)(.*?)(e)',0) ; 得到的结果为: itde 2)select regexp_extract('hitdecisiondlist','(i)(.*?)(e)',1) ; 得到的结果为: i 3)select ...

yuxeaotao的博客 3420

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

数据库访问优化漏斗法则- 四、减少数据库服务器CPU运算

https://www.cnblogs.com/sunziying/p/8998375.html

appleasd123的博客 836

数仓建模主题--漏斗转化分析主题

漏斗分析的含义: 分析师定义一个业务路径,路径上各个步骤的完成人数会逐渐递减,呈漏斗状 漏斗分析的结果表设计: 中间汇总表: 主要作用: 记录每个漏斗模型的每个步骤上完成的人数,以便给分析师快速查询报表 计算逻辑: 主要思想:利用正则表达式来判断用户的行为事件序列的模式是否匹配漏斗模型定义中的要求 步骤: 1.先将用户的事件序列,按照漏斗模型定义的条件进行过滤,留下满足条件的事件 2.将同一个人的满足条件的事件ID收集到数据,按时间先后排序,拼接成字符串 3.将拼接好的字符串,

JinVijay的博客 809

数仓 DW层 用户固定漏斗分析主题

数仓 DW层 用户固定漏斗分析主题 1. 背景 在app业务和流程设计中,页面和页面之间,流程和流程之间的每个环节并不是100%流转下去的。例如大家使用购物App,从商品详情页到下单页面,到支付页面,中间可能随时因为各种原因跳出。这时候就涉及到漏斗分析,也就是分析这些环节之间的转换率。 在当今快节奏开发,推崇敏捷开发时代,不管是什么app,都不会一开始就做成尽善尽美,反而只会有核心功能,然后接入比较完整的数据分析和观察工具后,每个迭代周期根据线上数据分析和用户反馈进行迭代优化。这样就可以使用2周一个迭代的

xiaohu21的博客 557

hive hsql 漏斗模型_191_数仓项目_dwd层_Hive读取索引文件问题

提醒:代码在文档,部分需要进行复制。该项目以国内电商巨头实际业务应用场景为依托,紧跟大数据主流需求,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,让你迅速成长,获取最前沿的技术经验。Flume1.9+Kafka2.4.1+Sqoop1.4.7+MySQL5.7 + Hadoop3.1.3+Hive3.1.2+Tez、Spark3.0.0 + Ranger2.0 + Presto + Ky...

weixin_39746794的博客 264
上一篇: Attempting to reconnect (1 of 1) after 1s. setPartitionColumnStatisticsde
下一篇: Poi操作Excel,保留格式的情况下插入行
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值