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

hive统计页面停留时间

1、背景:通过业务埋点数据,统计用户在页面的停留时间

样例数据,样例数据存入表tmp,

有如下字段用户uid、动作时间戳time、页面名称pn、动作名称action

SELECT '12345' AS uid, '1695613731020' AS time, '搜索' AS pn, 'click' AS action
UNION ALL
SELECT '12345' AS uid, '1695613732021' AS time, '搜索' AS pn, 'click' AS action
UNION ALL
SELECT '12345' AS uid, '1695613734024' AS time, '搜索' AS pn, 'click' AS action
UNION ALL
SELECT '12345' AS uid, '1695613737036' AS time, '列表' AS pn, 'click' AS action
UNION ALL
SELECT '12345' AS uid, '1695613738037' AS time, '列表' AS pn, 'click' AS action
UNION ALL
SELECT '12345' AS uid, '1695613740040' AS time, '列表' AS pn, 'click' AS action
uidtimepnaction
123451695613731020搜索click
123451695613732021搜索click
123451695613734024搜索click
123451695613737036列表click
123451695613738037列表click
123451695613740040列表click

思路:以用户维度按时间进行升序排列,通过lag函数找到上一个时间动作last_pn

SELECT uid, time, pn, row_number() OVER (PARTITION BY uid ORDER BY time DESC) AS rn, lag(pn, 1) OVER (PARTITION BY uid ORDER BY time ASC) AS last_pn
FROM tmp

rn排序的作用是找到最后一个动作

uidtimepnrnlast_pn
123451695613731020搜索6
123451695613732021搜索5搜索
123451695613734024搜索4搜索
123451695613737036列表3搜索
123451695613738037列表2列表
123451695613740040列表1列表

然后将发生页面变化的节点进行标记,

SELECT *, if(pn <> nvl(last_pn, '空') OR rn = 1, 1, 0) AS label
FROM (
SELECT uid, time, pn, row_number() OVER (PARTITION BY uid ORDER BY time DESC) AS rn
, lag(pn, 1) OVER (PARTITION BY uid ORDER BY time ASC) AS last_pn
FROM tmp
) t
uidtimepnrnlast_pnlabel
123451695613731020搜索61
123451695613732021搜索5搜索0
123451695613734024搜索4搜索0
123451695613737036列表3搜索1
123451695613738037列表2列表0
123451695613740040列表1列表1

之后统计停留时间就可以只看label =1的日志之间的时间差即可,全部代码如下,

WITH tmp AS (SELECT '12345' AS uid, '1695613731020' AS time, '搜索' AS pn, 'click' AS actionUNION ALLSELECT '12345' AS uid, '1695613732021' AS time, '搜索' AS pn, 'click' AS actionUNION ALLSELECT '12345' AS uid, '1695613734024' AS time, '搜索' AS pn, 'click' AS actionUNION ALLSELECT '12345' AS uid, '1695613737036' AS time, '列表' AS pn, 'click' AS actionUNION ALLSELECT '12345' AS uid, '1695613738037' AS time, '列表' AS pn, 'click' AS actionUNION ALLSELECT '12345' AS uid, '1695613740040' AS time, '列表' AS pn, 'click' AS action)
SELECT *
FROM (SELECT uid, pn, time, CAST((lead(time, 1) OVER (PARTITION BY uid ORDER BY time ASC) - time) / 1000 AS BIGINT) AS stay_timeFROM (SELECT *, if(pn <> nvl(last_pn, '空')OR rn = 1, 1, 0) AS labelFROM (SELECT uid, time, pn, row_number() OVER (PARTITION BY uid ORDER BY time DESC) AS rn, lag(pn, 1) OVER (PARTITION BY uid ORDER BY time ASC) AS last_pnFROM tmp) t) ttWHERE label = 1
) ttt
WHERE stay_time IS NOT NULL

最终统计结果如下

uidpntimestay_time
12345搜索16956137310206
12345列表16956137370363

相关文章:

hive统计页面停留时间

1、背景&#xff1a;通过业务埋点数据&#xff0c;统计用户在页面的停留时间 样例数据&#xff0c;样例数据存入表tmp&#xff0c; 有如下字段用户uid、动作时间戳time、页面名称pn、动作名称action SELECT 12345 AS uid, 1695613731020 AS time, 搜索 AS pn, click AS acti…...

LeetCode 24.两两交换链表中的结点

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 首先可以特判一下&#xff0c;如果结点数目小于等于1&#xff0c;则直接返回即可&#xff0c;因为数目小于等于1就不需要交换了。 然后我们可以创建一个虚拟的头结点&#xff0c;然…...

【每日一记】OSPF区域划分详讲、划分区域的优点好处

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;喜欢编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…...

复旦管院启动科创战略,培养科技研发人才,引领未来发展!

今年夏天&#xff0c;600多位优秀的企业家成为复旦大学EMBA 2023级新生。在疫情结束后&#xff0c;他们选择百战归来再读书&#xff0c;重新回到久违的课堂&#xff0c;共同探索科创大时代下企业的商业本质&#xff0c;开启新的学习与人生旅程。复旦大学管理学院院长陆雄文教授…...

Infinity同步

...

C语言:转义字符

目录 话不多说&#xff0c;先上表 \n \? \ \" \\ \t \a \ddd 附一张ASCII表 \xdd 练习 话不多说&#xff0c;先上表 一一举例解释下哈 \n 读取到结尾标识符\0 printf("demo\n\0Zh"); // demo \? 在书写连续多个问号时使用&#xff0c;防止…...

为什么 0.1 + 0.1 !== 0.2

为什么 0.1 0.1 ! 0.2 总结了几个很有意思的基础题目&#xff0c;分享一下。 为什么 0.1 0.1 ! 0.2 看到这个问题&#xff0c;不得不想到计算机中的数据类型&#xff0c;其中浮点数表示有限的精度。那么它就无法精确的表示所有的十进制小数&#xff0c;所以在在某些情况下…...

超详细!主流大语言模型的技术原理细节汇总!

1.比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节&#xff1a;tokenizer、位置编码、Layer Normalization、激活函数等。 2. 大语言模型的分布式训练技术&#xff1a;数据并行、张量模型并行、流水线并行、3D 并行、零冗余优化器 ZeRO、CPU 卸载技术 ZeRo-offload、混合精度训…...

本人4年测试经验,211 本科计算机专业,由于互联网裁员,然后谈谈我最近测试面试的总结

本人4年测试经验&#xff0c;211 本科计算机专业&#xff0c;由于互联网裁员&#xff0c;最近在 bosss 上投了些简历&#xff0c;测试开发岗&#xff0c;看看目前市场情况。 虽然都在说大环境不好&#xff0c;失业的人很多&#xff0c;我最近约面试的还是比较多的&#xff0c;…...

Android中级——Activity数据恢复过程

Activity数据恢复 onSaveInstanceState()onRestoreInstanceState()扩展 onSaveInstanceState() 在Activity调用onStop()之前调用会onSaveInstanceState()&#xff0c;如下 final void performStopActivity(IBinder token, boolean saveState, String reason) {ActivityClient…...

国内就能使用的chatgpt网页版,包含AIGC应用工具

Chatgpt的出现在多个领域带来了重要的影响。它能够显著提高我们的工作效率&#xff0c;无论是编写文案代码还是回答常见问题&#xff0c;都能在短时间内完成任务。通过Chatgpt&#xff0c;我们能够迅速获取所需答案。随着人工智能技术的不断发展&#xff0c;相信在未来AI能够带…...

Fast DDS之RTPS

目录 RTPS的使用 RTPS层实现了RTPS标准。DDS层概念映射关系如下&#xff1a; DDS LayerRTPS LayerDomainRTPSDomainDomainParticipantRTPSParticipantDataWriterRTPSWriterDataReaderRTPSReader RTPS的使用...

【算法|动态规划No.16】leetcode931. 下降路径最小和

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…...

Jenkins 构建时动态获取参数

文章目录 问题简介Groovy 脚本配置进阶 问题 在做jenkins项目时&#xff0c;有些参数不是固定写死的&#xff0c;而是动态变化的&#xff0c;这时我们可以用 Active Choices 插件来远程调用参数 问题解决方案&#xff1a;执行构建前使用Groovy Scrip调用本地脚本&#xff0c;…...

android app开机自启动

参考文章&#xff1a; Android APP开机启动&#xff0c;安卓APP开发自启动&#xff0c;安卓启动后APP自动启动 Android让程序开机自动运行APP_安卓应用开机启动并打开软件_weijia3624的博客-CSDN博客...

XSS CSRF

XSS & CSRF xss&#xff1a;跨站脚本攻击&#xff1a;注入一些非法的脚本 csrf&#xff1a;冒充身份 XSS 反射型 /welcome&#xff1a;res.send(req.query.type) 输入什么就输出什么&#xff08;httpOnly:false&#xff0c;但不是解决方案&#xff09; 比如&#xff1a;?&…...

新加坡星银行项目组笔试题面试题

Java/Fullstack___开发常见问题收集&#xff1a;&#xff08;根据个人面试岗位进行参考&#xff09; 项目介绍部分 介绍最近做过的项目&#xff0c;项目中遇到的印象深刻的问题&#xff0c;如何解决&#xff1f;就项目用到的技术&#xff0c;自己的技术以及如何使用&#xff1…...

基于SpringBoot的智能物流管理系统

目录 前言 一、技术栈 二、系统功能介绍 顾客信息管理 员工信息管理 员工信息管理 门店信息管理 门店信息管理 订单信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施…...

【开源电商网站】(2),使用docker-compose和dockerfile进行配置,设置自定义的镜像,安装插件,增加汉化包,支持中文界面汉化。

项目相关代代码地址 相关内容&#xff1a; https://blog.csdn.net/freewebsys/category_12461196.html 原文地址&#xff1a; https://blog.csdn.net/freewebsys/article/details/133666433 包括以下运行的详细代码&#xff1a; https://gitee.com/study-demo-all/oscommerc…...

HTML5开发实例-3D全景(ThreeJs全景Demo) 详解(图)

前言 在现在市面上很多全景H5的环境下,要实现全景的方式有很多,可以用css3直接构建也可以用基于threeJs的库来实现,还有很多别的制作全景的软件使用 本教学适用于未开发过3D全景的工程狮 如果觉得内容太无聊可以直接跳到最后 下载代码 理论 整个3D全景所用的相关理论就…...

5步攻克MZmine 3质谱数据分析:从问题解决到专业应用的实战指南

5步攻克MZmine 3质谱数据分析&#xff1a;从问题解决到专业应用的实战指南 【免费下载链接】mzmine3 MZmine 3 source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 MZmine 3作为开源质谱数据分析领域的核心工具&#xff0c;在代谢组学、蛋白质…...

Qwen2.5-72B-Instruct-GPTQ-Int4部署教程:vLLM与HuggingFace Transformers对比

Qwen2.5-72B-Instruct-GPTQ-Int4部署教程&#xff1a;vLLM与HuggingFace Transformers对比 1. 模型简介 Qwen2.5-72B-Instruct-GPTQ-Int4是Qwen大语言模型系列的最新版本&#xff0c;具有720亿参数规模。相比前代Qwen2&#xff0c;这个版本在多个方面实现了显著提升&#xff…...

3个超实用方法:115proxy-for-Kodi插件实现云端视频流畅播放完全指南

3个超实用方法&#xff1a;115proxy-for-Kodi插件实现云端视频流畅播放完全指南 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 你是否曾因115网盘中的高清视频无法在Kodi上流畅播放而困扰…...

从格式枷锁到自由播放:ncmdumpGUI的NCM解码技术突围

从格式枷锁到自由播放&#xff1a;ncmdumpGUI的NCM解码技术突围 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 当你花费数小时精心收藏的音乐专辑在智能音箱上…...

在Windows 11上用VirtualBox搞定WRF-Hydro 5.2.0:一个水文模型小白的Ubuntu 22.04虚拟机避坑实录

在Windows 11上用VirtualBox搞定WRF-Hydro 5.2.0&#xff1a;一个水文模型小白的Ubuntu 22.04虚拟机避坑实录 第一次接触WRF-Hydro时&#xff0c;我盯着满屏的命令行代码和复杂的依赖关系&#xff0c;感觉像在破解某种外星密码。作为一名水文专业的研究生&#xff0c;我的Linux…...

避坑指南:从Paraformer到SenseVoice,语音模型训练数据准备的5个常见错误

避坑指南&#xff1a;从Paraformer到SenseVoice&#xff0c;语音模型训练数据准备的5个常见错误 语音识别和多模态语音模型正在重塑人机交互的边界。当Paraformer凭借其简洁的音频-文本配对要求成为ASR领域的新宠时&#xff0c;SenseVoice却以情感识别、事件标记等多维度分析能…...

把股票数据能力接进 AI:stock-sdk-mcp 的实践整理

起因 如果你经常用 Cursor、Claude 这类 AI 工具&#xff0c;应该已经能明显感觉到它们在通用问答和代码任务上越来越强了。但一旦问题变成金融数据查询&#xff0c;比如“看看贵州茅台今天的行情”“把最近 60 个交易日的日 K 线拉出来&#xff0c;再判断一下 MACD 和 RSI”&…...

YOLOv9官方镜像深度体验:开箱即用,效果超出预期

YOLOv9官方镜像深度体验&#xff1a;开箱即用&#xff0c;效果超出预期 1. 镜像初体验&#xff1a;零配置启动的惊喜 第一次接触YOLOv9官方镜像时&#xff0c;我带着怀疑的态度——毕竟在深度学习领域&#xff0c;"开箱即用"的承诺往往伴随着各种隐藏的环境配置问题…...

手把手教你用Verilog写一个纯组合逻辑的FP32加法器(附完整代码与避坑指南)

手把手教你用Verilog实现纯组合逻辑FP32加法器&#xff08;附完整代码与避坑指南&#xff09; 在数字电路设计中&#xff0c;浮点运算单元一直是性能优化的关键路径。相比时序逻辑实现&#xff0c;纯组合逻辑的FP32加法器能在一个时钟周期内完成所有计算&#xff0c;显著提升吞…...

Vue3 + Cornerstone3D:从零构建支持本地Nifti文件上传与四视图联动的医学影像查看器

1. 为什么选择Vue3Cornerstone3D开发医学影像查看器 医学影像处理一直是前端开发中颇具挑战性的领域&#xff0c;特别是当需要处理专业格式如Nifti时。我在实际项目中尝试过多种技术方案后&#xff0c;发现Vue3和Cornerstone3D的组合特别适合快速构建高性能的医学影像应用。 …...