Hive 计算用户留存率(次日,3日,N日)

news2024/11/25 12:37:07

文章目录

    • 什么是用户留存率?
    • 创建数据源
    • 计算留存率
    • 计算 N 日的留存率

什么是用户留存率?

用户留存率是指在特定时间段内,用户在使用某个产品或应用程序后,再次使用该产品或应用程序的比例。

它可以帮助公司了解用户是否喜欢他们的产品,并提供有价值的信息,用于改进产品和增加用户满意度。例如,如果有 100 名用户在第一次使用某个应用程序后,有 80 名用户再次使用该应用程序,那么这个应用程序的用户留存率就是 80%。

创建数据源

drop table userinfo;
-- 记录用户的注册日期。
create table userinfo (
id int,
registerDate timestamp);

drop table log;
-- 记录用户后续使用产品的日期。
create table log (
id int,
logDate timestamp);

insert into userinfo values
(1,"2022-12-01 12:22:35"),
(2,"2022-12-01 12:22:35" ),
(3,"2022-12-03 12:22:35" ),
(4,"2022-12-03 12:22:35" ),
(5,"2022-12-02 12:22:35" ),
(5,"2022-12-02 12:22:35" ),
(7,"2022-12-03 12:22:35" ),
(8,"2022-12-03 12:22:35" ),
(9,"2022-12-03 12:22:35" ),
(10,"2022-12-01 12:22:35");

insert into log values
(1,"2022-12-02 20:21:40"),
(1,"2022-12-02 22:21:40"),
(1,"2022-12-02 22:21:40"),
(2,"2022-12-02 12:30:35"),
(3,"2022-12-04 12:22:35"),
(4,"2022-12-04 12:22:35"),
(5,"2022-12-04 12:22:35"),
(5,"2022-12-02 12:22:35"),
(7,"2022-12-05 12:22:35"),
(8,"2022-12-06 12:22:35"),
(9,"2022-12-07 12:22:35"),
(10,"2022-12-03 12:22:35");

计算留存率

我在 Hive 中创建了如下两张表:

用户表 userinfo:

在这里插入图片描述

日志表 log:

在这里插入图片描述

次日留存率计算:

SELECT date(u.registerDate) registerDate,
       count(distinct l.id) / count(distinct u.id) leave_percent
FROM userinfo u
LEFT JOIN log l
    ON u.id = l.id
    and
    date(l.logDate) = date_add(date(u.registerDate),1)
GROUP BY  date(u.registerDate);

计算结果:

在这里插入图片描述

思路:

首先我们根据主键对用户表和日志表进行左连接,再加上连接条件 date(l.logDate) = date_add(date(u.registerDate),1) 进行过滤,根据注册日期进行分组统计。注意对 id 进行去重,利用左连接的特性,来完成计算。count 并不会统计 null 值。

可以看到 2022-12-01 的次日留存率为 66%,2022-12-02 的次日留存率为 0%,2022-12-03 的次日留存率为 40%。

验证:

在这里插入图片描述

从用户表中可以看到在 2022-12-01 日一共注册了 3 名用户(1,2,10)。

在这里插入图片描述

在日志表中 ,2022-12-02 日只出现了两名老用户(1,2)。显然,在次日留存率计算中,我们流失了一名用户(10)。所以,2022-12-01 的次日留存率为 2/3,66%

计算 N 日的留存率

只需要修改连接条件 date(l.logDate) = date_add(date(u.registerDate),1) 即可。

如:date(l.logDate) = date_add(date(u.registerDate),N)

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

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

相关文章

2022 第十四届蓝桥杯模拟赛第二期题目题解(比赛时使用方法)

目录 第一题:最小的2022 第二题:经过天数 第三题:特殊的十六进制数 第四题:矩阵的最小路径 第五题:质数拆分 第六题:拷贝时间 第七题:单词去重 第八题:最短回文串 第九题&a…

[附源码]Node.js计算机毕业设计大学校园二手教材与书籍Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

GoWeb 优雅的 ORM 框架之 GORM,实现 MySQL 数据库的增删改查等操作(附案例全代码)

1、前言 什么是web应用,Web应用程序简单流程如下图所示 通过上图我们发现,我们 GoWeb 实战项目还缺少最后关键的环节数据库。那么如何使用 GO 语言操作数据库并完成增删改查等操作是我们今天学习的目标。 GoWeb 的 MVC 入门实战案例,基于 Iris 框架实现(附案例全代码) …

[附源码]Python计算机毕业设计Django的连锁药店销售管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

11.校验token和解析token获取数据代码优化

校验token和解析token获取数据代码优化 解决方案 基于ThreadLocal 拦截器的形式统一处理 一、使用拦截器进行统一身份鉴权 1.1定义拦截器 package com.tanhua.server.interceptor;import com.tanhua.commons.utils.JwtUtils; import org.springframework.web.servlet.Handl…

[附源码]Nodejs计算机毕业设计基于java旅游信息分享网站Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

二、物理层(一)通信基础

目录 1.1通信基础概念 1.2传输方式 1.2.1串行传输和并行传输 1.2.2单工通信、半双工通信和全双工通信 1.3编码与调制 1.3.1数字数据编码为数字信号 1.3.2数字数据调制为模拟信号 1.3.3模拟信号编码为数字信号 1.3.4模拟数据调制为模拟信号 1.4电路交换、报文交换与分…

装了就不舍得卸载,4款电脑必装软件,功能实用又免费

下面4款电脑软件,每一个都是你绝对能用得上的神器,可遇不可求。 1、AutoOff AutoOff是一款完全免费,纯绿色的电脑操作定时工具,功能强大且实用,体积不到1M,非常小巧,支持自动关机、重启、休眠、…

Mysql批量插入对比(附github仓库demo)

前言 本文记录个人使用MySQL插入大数据总结较实用的方案,通过对常用插入大数据的4种方式进行测试, for循环单条拼接SQL批量插入saveBatch()循环 开启批处理模式 最近趁空闲之余,在对MySQL数据库进行插入数据测试 准备工作 测试环境&…

189:vue+openlayers 上传CSV文件,导出Geojson格式文件

第189个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers上传CSV文件,导出GeoJSON文件。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果使用的csv文件安装依赖配置方…

直播场控助手 | 为什么说直播场控比主播更重要?

在竞争白热化的直播时代,作为主播最亲密的伙伴,场控的作用不容忽视。 优秀的场控掌握着关键成交节点,实时帮助主播带节奏、促转化。在精细化直播运营中,优秀的场控能力胜过十位主播,让直播间轻松实现销量翻倍。 「帷幄…

基于jsp+mysql+ssm水果蔬菜销售系统-计算机毕业设计

项目介绍 生活中,人们买水果或者蔬菜都是去菜市场买,因为那里是卖水果、蔬菜的聚集地。农商们把水果、蔬菜从远处运到那里,进行销售。但是这种销售方式的不足在于每次运输的数量是有限的,并且运输过程中也影响了水果、蔬菜的口感…

使用 TVMC 编译和优化模型

内容一览:本节讲解使用 TVMC 编译和优化模型。TVMC 是 TVM 的命令驱动程序,通过命令行执行 TVM 功能。本节是了解 TVM 工作原理的基础。 关键词:TVMC TVM 机器学习 本节将介绍 TVMC(TVM 的命令行驱动程序)。TVM…

单片机扫盲

一、从电路到集成电路 集成电路:使用微器件为“积木”,去搭建一个具备一定功能的电路板 微器件出现之前,一个电路功能需要很大一块电路板才能实现,有了微器件电路板的体积可以降到mm级别。 IC芯片就是将电路的所有微器件集成到一…

大数据时代,数据仓库究竟是干嘛的?

前言 无论你是否专门从事大数据开发,作为一个开发人员,应该都听说过数据仓库的概念,那你知道为什么会出现数据仓库?数据仓库究竟是干嘛的吗?有什么价值和意义呢?那么本文就带到入门,揭开数据仓…

大数据分析工具-FineReport地产行业通用单选按钮组控件插件

1. 概述 1.1 版本 报表服务器版本 JAR 包版本 插件版本 10.0 2018-09-05 V1.3.4 9.0 2015-08-09 V1.3.2 8.0 2015-08-09 V1.3.2 1.2 应用场景 地产行业具有比较特殊的筛选需求,而现有的单选按钮组控件不能很好的满足这一点。我们希望可以实现多层级多…

空间音频技术与生态发展高峰论坛成功举办,业界首个Audio Vivid创作工具花瓣三维声亮相

11月26日至27日,UWA世界超高清视频产业联盟(以下简称“UWA联盟”)、上海交通大学-南加州大学文化创意产业学院、华为联合举办了“互联智慧,共赢未来” 超高清音视频技术与生态发展高峰论坛暨Audio Vivid空间音频工具花瓣三维声训练…

Nocas环境隔离

Nocas环境隔离配置 为了做数据和服务的管理,引出了环境隔离的一个概念。 Nocas中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离。 .yml 配置文件中配置: spring:application:name: orderservicecloud:nacos:se…

OH----Usb rndis,mtp等function添加,config配置

1、驱动侧添加对应功能的驱动代码: 在linux中usb驱动代码中添加rndis或者mtp等功能驱动代码, 路径: linux-5.10/drivers/usb/gadget/function linux usb驱动原生功能代码一般可以直接使用,添加进去参与编译就能继续往下做调试了&…

【校招项目】基于C++11的muduo库

基于C11的网络库 文章目录基于C11的网络库项目介绍项目地址项目特点开发环境并发模型构建项目运行案例模块讲解ChannelPollerEventLoopBufferTimerHTTP异步日志内存池数据库连接池优化计划感谢项目介绍 本项目是参考 muduo 实现的基于 Reactor 模型的多线程网络库。使用 C 11 …