当前位置: 首页 > news >正文

Hologres实战:路径分析函数

前言

Hologres提供了一套高效的路径分析函数,包括路径明细计算和结果解析功能,能够帮助用户深入理解用户行为路径,并通过桑基图实现数据可视化。

一、核心功能

  • 路径明细计算:精确记录用户在产品或功能中的完整访问路径
  • 结果解析:对路径数据进行深度分析和指标计算
  • 可视化支持:生成桑基图展示路径流量分布和转化情况
    在这里插入图片描述

二、路径明细函数

1. 路径明细函数(path_analysis_detail

path_analysis_detail函数用于将指定的事件数据深度解析并呈现为详细的路径结构。其输出结果以序列化数组的形式展现,内容详尽丰富,涵盖了路径的完整序列、路径内各个节点间的父子关系,以及每个路径步骤的执行耗时等关键信息。

语法
path_analysis_detail(event, event_time, start_event, session_interval_sec, path_depth, path_offset, is_reverse,
split_session_by_event)
参数说明

在这里插入图片描述

2. 路径漏斗函数(pad_funnel

pad_funnel函数用于获取特定事件组合构成的子路径信息。

语法
pad_full_path(path_analysis_detail())
参数说明

path_analysis_detail():路径明细函数返回的路径明细的聚合结果数组。

返回值说明
pad_sub_path_left(unnested_pad_result)
pad_sub_path_right(unnested_pad_result)
pad_sub_index_left(unnested_pad_result)
pad_sub_index_right(unnested_pad_result)
pad_sub_cost(unnested_pad_result)
pad_sub_session(unnested_pad_result)

在这里插入图片描述

3. pad_session_path_array

pad_session_path_array路径结果解析函数可以根据指定的会话ID,精准提取出该会话内发生的事件序列,并按照路径前缀进行有序组织。

语法
pad_session_path_array(path_analysis_detail(), session_idx)
参数说明
  • path_analysis_detail():路径明细函数返回的路径明细的聚合结果数组。
  • session_idx:指定的会话序号。

三、使用示例

1. 准备数据

--创建Extension,Extension是DB级别的函数,一个DB只需执行一次即可
CREATE extension flow_analysis;
--准备数据
CREATE TABLE path_demo( uid text,event text,event_time timestamptz
);INSERT INTO path_demo VALUES
('1','注册','2023-11-24 16:01:23+08'),
('1','登录','2023-11-24 16:02:10+08'),
('1','浏览','2023-11-24 16:02:15+08'),
('1','看直播','2023-11-24 16:03:10+08'),
('1','浏览','2023-11-24 16:03:15+08'),
('1','收藏','2023-11-24 16:04:20+08'),
('1','浏览','2023-11-24 16:07:21+08'),
('1','购买','2023-11-24 16:08:23+08'),
('1','退出','2023-11-24 16:09:05+08'),('2','登录','2023-11-24 16:10:23+08'),
('2','购买','2023-11-24 16:12:23+08'),('3','登录','2023-11-24 16:02:23+08'),
('3','浏览','2023-11-24 16:02:23+08'),
('3','收藏','2023-11-24 16:03:53+08'),
('3','看直播','2023-11-24 16:04:53+08'),('4','登录','2023-11-24 16:02:23+08'),
('4','浏览','2023-11-24 16:03:53+08'),
('4','购买','2023-11-24 16:04:23+08'),
('4','看直播','2023-11-24 16:05:53+08'),
('4','取消下单','2023-11-24 16:06:53+08');

2. 使用案例

示例1:记录事件全部路径
  • 按照时间切分SESSION:指定起始事件,按照时间切分SESSION,并设置SESSION间隔为180 s,匹配的序列长度为7。
--按照时间切分:指定开始事件为“登录”,SESSION时间间隔为180 s,匹配序列长度为7,并通过pad_full_path函数对结果解码
SELECT uid, pad_full_path(path_analysis_detail(event, event_time, '登录', 180, 7, 0, false)) AS ret FROM path_demo GROUP BY uid;

在这里插入图片描述

  • 按照时间和事件切分SESSION:指定起始事件,SESSION时间间隔为180 s,匹配序列长度为7。
--按照时间和事件切分:起始事件为"浏览",间隔时间为180 s,序列长度为7,并通过pad_full_path函数对结果解码
SELECT uid, pad_full_path(path_analysis_detail(event, event_time, '浏览', 180, 7, 0, false,TRUE)) AS ret FROM path_demo GROUP BY uid;

在这里插入图片描述

示例2:展开路径结果
--将路径展开
SELECT uid, unnest(pad_full_path(path_analysis_detail(event, event_time, '登录', 180, 7, 0, false))) AS ret FROM path_demo GROUP BY uid;

在这里插入图片描述

示例3:展开子路径并获取每一步的路径明细
--展开子路径
SELECTuid,pad_sub_session (ret) AS session_id,pad_sub_path_left (ret) AS sub_path_left,pad_sub_path_right (ret) AS sub_path_right,pad_sub_index_left (ret) AS sub_index_left,pad_sub_index_right (ret) AS sub_index_right,pad_sub_cost (ret) AS sub_cost
FROM (SELECTuid,unnest( path_analysis_detail (event, event_time, '登录', 180, 7, 0, FALSE)) AS retFROMpath_demo GROUP BYuid) a ;

在这里插入图片描述
同时我们也可以结合可视化工具,例如DataV的Echarts 桑基图,将计算结果形成可视化的桑基图,示例如下:

在这里插入图片描述

示例4:计算每个子路径的PV、UV(未去重)
--计算每个子路径的uv/pv,未去重,如果需要去重,可以对uid做
SELECTsub_index,sub_path_left,sub_path_right,count(uid)
FROM (SELECTuid,pad_sub_path_left (ret) AS sub_path_left,pad_sub_path_right (ret) AS sub_path_right,pad_sub_index_right (ret) AS sub_indexFROM (SELECTuid,unnest(path_analysis_detail (event, event_time, '登录', 180, 7, 0, FALSE)) AS retFROMpath_demoGROUP BYuid) a) a
GROUP BYsub_index,sub_path_left,sub_path_right
ORDER BYsub_index,sub_path_left,sub_path_right;

在这里插入图片描述

示例5:计算每个子路径的平均耗时
--计算子路径的平均耗时
SELECTsub_path_left,sub_path_right,avg(sub_cost)
FROM (SELECTuid,pad_sub_path_left (ret) AS sub_path_left,pad_sub_path_right (ret) AS sub_path_right,pad_sub_cost (ret) AS sub_costFROM (SELECTuid,unnest(path_analysis_detail (event, event_time, '登录', 180, 7, 0, FALSE)) AS retFROMpath_demoGROUP BYuid) a) a
GROUP BYsub_path_left,sub_path_right
ORDER BYsub_path_left,sub_path_right;

在这里插入图片描述

示例6:会话路径与子路径明细关联
`--会话路径与子路径关联
selectuid,pad_sub_session(item) as session_id,full_path [pad_sub_session(item)+1] as full_path,pad_sub_path_left(item) as sub_path_left,pad_sub_path_right(item) as sub_path_right,pad_sub_index_right(item) as sub_idx,pad_sub_cost(item) as sub_cost
from(selectuid,unnest(ret) as item,pad_full_path(ret) as full_pathfrom(selectuid,path_analysis_detail(event, event_time, '登录', 180, 7, 0, false) as retfrompath_demogroup byuid) a) a;

在这里插入图片描述

示例7:查看指定的部分路径明细
--通过pad_funnel函数可以查看指定的部分路径明细,示例只看Browse>purchase 的转化情况,查看对应的明细,或者子路径情况
SELECT uid, pad_full_path(pad_funnel(path_analysis_detail(event, event_time, '登录', 180, 7, 0, false), array['登录', '购买'])) AS ret FROM path_demo GROUP BY uid;

在这里插入图片描述

四、结束语

通过路径分析,可以清晰地了解产品每个关键功能的访问情况,进一步辅助运营和产品进行下一步的业务策略优化和产品迭代,帮助业务更加健康地成长。

相关内容

Hologres实战:优雅处理字符串数组
https://blog.csdn.net/weixin_43932609/article/details/149934590
开启数据湖 “宝匣”
https://blog.csdn.net/weixin_43932609/article/details/144406593
数据仓库:智控数据中枢
https://blog.csdn.net/weixin_43932609/article/details/144393368
湖仓一体:数据未来之路
https://blog.csdn.net/weixin_43932609/article/details/144433084
————————————————

=========================================================

人生得意须尽欢,莫使金樽空对月!
__一个热爱说唱的程序员。
今日份推荐音乐:单依纯《李白 (live)》

=========================================================

http://www.lryc.cn/news/621939.html

相关文章:

  • 【开发语言】Groovy语言:Java生态中的动态力量
  • 1.2. qemu命令起虚拟机增加网络配置
  • [git] 当GitHub宕机时,我们如何协作?| github同步gitee的部署方法
  • uniApp App 端日志本地存储方案:实现可靠的日志记录功能
  • Flutter 自定义组件开发指南
  • Wi-Fi 与蜂窝网络(手机网络)的核心区别,以及 Wi-Fi 技术未来的发展方向
  • css变量的妙用(setProperty()的使用)
  • MySQL的学习笔记
  • 前端性能优化工具Performance面板实战指南
  • w484扶贫助农系统设计与实现
  • Android项目中Ktor的引入与使用实践
  • @[TOC](计算机是如何⼯作的) JavaEE==网站开发
  • 从理论到实战:KNN 算法与鸢尾花分类全解析
  • Python基础(Flask①)
  • Sklearn 机器学习 手写数字识别 使用K近邻算法做分类
  • DAY41打卡
  • IO多路复用底层原理
  • TDengine IDMP 高级功能(1. 元素模板)
  • frp踩坑 以及进阶教程
  • Floyd 判圈算法(龟兔赛跑算法)
  • Linux运维新手的修炼手扎之第29天
  • 【网络】IP总结复盘
  • Claude Opus 4.1深度解析:抢先GPT5发布,AI编程之王主动出击?
  • day31 UDP通信
  • Ansible 学习笔记:变量事实管理、任务控制与文件部署
  • 计算机视觉(opencv)实战四——图片阈值处理cv2.threshold()
  • Android RxJava变换操作符详解
  • 从0开始学习Java+AI知识点总结-15.后端web基础(Maven基础)
  • 使用 PyQt5 构建 Python 人脸采集系统实战指南
  • 16进制pcm数据转py波形脚本