HIVE解决连续登录问题

HIVE解决连续登录问题

目录

HIVE解决连续登录问题

1.解决连续登录问题

如何去分析数据:            

2.需求:        

3.-- 间隔天数


1.解决连续登录问题

如何去分析数据:
            

1)查看数据的字段信息
            

2)需要查看每一行数据代表什么意思
 

create table learn5.deal_tb(
    id string
    ,datestr string
    ,amount string
)row format delimited fields terminated by ',';


load data local inpath "/usr/local/soft/hive-3.1.2/data/deal_tb.txt" into table learn5.deal_tb;

2.需求:
        

统计用户

①连续交易的总额、
②连续登陆天数、
③连续登陆开始和结束时间、
④间隔天数等

    

连续交易的总额分析:
        

①什么是连续交易:用户每天都在交易
                

WITH sum_amount_table AS(
SELECT
T.id
,T.datestr
,SUM(amount) as sum_amount
FROM learn5.deal_tb T
GROUP BY T.id,T.datestr
)

SELECT
id
,datestr
,sum_amount
, ROW_NUMBER() OVER(PARTITION BY id ORDER BY datestr) days
FROM sum_amount_table

+-----+-------------+-------------+-------+
| id  |   datestr   | sum_amount  | days  |
+-----+-------------+-------------+-------+
| 1   | 2019-02-08  | 12461.55    | 1     |
| 1   | 2019-02-09  | 1052.99     | 2     |
| 1   | 2019-02-10  | 85.69       | 3     |
| 1   | 2019-02-12  | 769.85      | 4     |
| 1   | 2019-02-13  | 943.86      | 5     |
| 1   | 2019-02-14  | 538.42      | 6     |
| 1   | 2019-02-15  | 369.76      | 7     |
| 1   | 2019-02-16  | 369.76      | 8     |
| 1   | 2019-02-18  | 795.15      | 9     |
| 1   | 2019-02-19  | 715.65      | 10    |
| 1   | 2019-02-21  | 537.71      | 11    |
| 2   | 2019-02-08  | 12461.55    | 1     |
| 2   | 2019-02-09  | 1052.99     | 2     |
| 2   | 2019-02-10  | 85.69       | 3     |
| 2   | 2019-02-12  | 769.85      | 4     |
| 2   | 2019-02-13  | 943.86      | 5     |
| 2   | 2019-02-14  | 943.18      | 6     |
| 2   | 2019-02-15  | 369.76      | 7     |
| 2   | 2019-02-18  | 795.15      | 8     |
| 2   | 2019-02-19  | 715.65      | 9     |
| 2   | 2019-02-21  | 537.71      | 10    |
| 3   | 2019-02-08  | 12461.55    | 1     |
| 3   | 2019-02-09  | 1052.99     | 2     |
| 3   | 2019-02-10  | 85.69       | 3     |
| 3   | 2019-02-12  | 769.85      | 4     |
| 3   | 2019-02-13  | 943.86      | 5     |
| 3   | 2019-02-14  | 276.81      | 6     |
| 3   | 2019-02-15  | 369.76      | 7     |
| 3   | 2019-02-16  | 369.76      | 8     |
| 3   | 2019-02-18  | 795.15      | 9     |
| 3   | 2019-02-19  | 715.65      | 10    |
| 3   | 2019-02-21  | 537.71      | 11    |
+-----+-------------+-------------+-------+

我们创建一个表格 将查询语句的结果数据插入到里面 方便查询


CREATE TABLE continue_res (
id string 
,start_day STRING
,  continue_amount  STRING
,  continue_days STRING
,  continue_start STRING
, continue_end STRING
)
WITH sum_amount_table AS(
SELECT
T.id
,T.datestr
,SUM(amount) as sum_amount
FROM learn5.deal_tb T
GROUP BY T.id,T.datestr
)
, days_table AS (
SELECT
id
,datestr
,sum_amount
, ROW_NUMBER() OVER(PARTITION BY id ORDER BY datestr) days
FROM sum_amount_table
)
, date_sub_table AS(
SELECT
id
,datestr
,sum_amount
,days
,date_sub(datestr,days) start_day  --通过日期减去排序得到日期开始的天
FROM days_table
)
--连续登陆天数、连续登陆开始和结束时间
INSERT INTO TABLE  continue_res 
SELECT
id
,start_day
,sum(sum_amount) as continue_amount  -- 通过对起始天数一致的数据进行分组统计得到 连续交易的总额
,count(*) AS continue_days
,min(datestr) AS continue_start
,max(datestr) as continue_end
FROM date_sub_table
GROUP BY id,start_day

select * from continue_res;

SELECT
id
,continue_end
,LEAD(continue_start,1,current_date) OVER(PARTITION BY id ORDER BY start_day) as last_day
FROM continue_res

+-----+-------------+---------------------+----------------+-----------------+--------------                                -+
| id  |  start_day  |   continue_amount   | continue_days  | continue_start  | continue_end                                  |
+-----+-------------+---------------------+----------------+-----------------+--------------                                -+
| 1   | 2019-02-07  | 13600.23            | 3              | 2019-02-08      | 2019-02-10                                    |
| 1   | 2019-02-08  | 2991.6500000000005  | 5              | 2019-02-12      | 2019-02-16                                    |
| 1   | 2019-02-09  | 1510.8              | 2              | 2019-02-18      | 2019-02-19                                    |
| 1   | 2019-02-10  | 537.71              | 1              | 2019-02-21      | 2019-02-21                                    |
| 2   | 2019-02-07  | 13600.23            | 3              | 2019-02-08      | 2019-02-10                                    |
| 2   | 2019-02-08  | 3026.6499999999996  | 4              | 2019-02-12      | 2019-02-15                                    |
| 2   | 2019-02-10  | 1510.8              | 2              | 2019-02-18      | 2019-02-19                                    |
| 2   | 2019-02-11  | 537.71              | 1              | 2019-02-21      | 2019-02-21                                    |
| 3   | 2019-02-07  | 13600.23            | 3              | 2019-02-08      | 2019-02-10                                    |
| 3   | 2019-02-08  | 2730.04             | 5              | 2019-02-12      | 2019-02-16                                    |
| 3   | 2019-02-09  | 1510.8              | 2              | 2019-02-18      | 2019-02-19                                    |
| 3   | 2019-02-10  | 537.71              | 1              | 2019-02-21      | 2019-02-21                                    |
+-----+-------------+---------------------+----------------+-----------------+--------------                                -+

3.-- 间隔天数


LAG(col,n,default_val):往前第n行数据 
LEAD(col,n, default_val):往后第n行数据
 


SELECT
T1.id
,T1.continue_end
,T1.last_day
,datediff(T1.last_day,T1.continue_end)
FROM (
SELECT
id
,continue_end
,LEAD(continue_start,1,"2022-04-15") OVER(PARTITION BY id ORDER BY start_day) as last_day
FROM learn5.continue_res
) T1

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java进阶-SpringCloud设计模式-工厂模式的设计与详解

一、设计模式介绍 设计模式是我们开发中常常需要面对的核心概念,它们是解决特定问题的模板或者说是经验的总结。这些模式被设计出来是为了让软件设计更加清晰、代码更加可维护且能应对未来的变化。良好的设计模式不仅能解决重复代码的问题,还能使团队中…

计算机毕业设计 | SpringBoot健身房管理系统(附源码)

1,项目背景 随着人们生活水平的提高和健康意识的增强,健身行业逐渐兴起并迅速发展。而现代化的健身房管理系统已经成为健身房发展的必备工具之一。传统的健身房管理方式已经无法满足现代化健身房的需求,需要一种更加高效、智能、安全的管理系…

在云计算与人工智能中,7ECloud扮演着什么样的角色

数据驱动的时代,云计算和人工智能已成为推动现代科技进步的两大引擎。作为一家专注于云计算的公司,7ECloud正是在这个领域发挥自己的力量,力图为企业提供一站式解决方案,并拥有来自厂家的源头支持,用极其低的价格助力企…

【51】Camunda8-Zeebe核心引擎-Zeebe Gateway

概述 Zeebe网关是Zeebe集群的一个组件,它可以被视为Zeebe集群的联系点,它允许Zeebe客户端与Zeebe集群内的Zeebe代理进行通信。有关Zeebe broker的更多信息,请访问我们的附加文档。 总而言之,Zeebe broker是Zeebe集群的主要部分,它完成所有繁重的工作,如处理、复制、导出…

消息中间件是什么?有什么用?常见的消息中间件有哪些?

1.什么是消息中间件? 消息中间件基于队列模型在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。 2.现实中的痛点: 1.Http请求基于请求与响应的模型,在高并发的情况下,客户端发送大量的请求达到服务器端…

[华为OD]BFS C卷 200 智能驾驶

题目: 有一辆汽车需要从m*n的地图的左上角(起点)开往地图的右下角(终点),去往每一个地区都需 要消耗一定的油量,加油站可进行加油 请你计算汽车确保从起点到达终点时所需的最少初始油量说明: (1)智能汽车可以上下左右四个方向…

PyQt5中的QGraphicsView()

文章目录 1. 简介2. 一个简单的示例2. 加载一幅图片3. 常用方法示例 1. 简介 QGraphicsView是PyQt5中用于显示图形场景的小部件,它提供了许多常用的方法来控制视图的行为和属性。下面是一些常用的QGraphicsView方法: setScene(scene): 设置要显示的场景…

GCP谷歌云有什么数据库类型,该怎么选择

GCP谷歌云提供的数据库类型主要包括: 关系型数据库:这类数据库适用于结构化数据,通常用于数据结构不经常发生变化的场合。在GCP中,关系型数据库选项包括Cloud SQL和Cloud Spanner。Cloud SQL提供托管的MySQL、PostgreSQL和SQL Se…

Office之Word应用(二)

一、页眉添加文件名称和页码 1、双击页眉,点击“页眉-空白(三栏)” 2、删掉第一处(鼠标放在上面就会选中,Enter即可),第二处输入文档名称,第三处插入页码。 注:插入页码时…

微信小程序毕业设计-基于Java后端的微信小程序源码150套(附源码+数据库+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 🧡今天给大家分享150的微信小程序毕业设计,后台用Java开发,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业设…

灾备建设中虚拟机备份自定义数据块大小应用

灾备建设中,传输备份数据时,自定义数据块大小可以帮助优化数据传输和存储效率。 确定数据块大小,首先,需要确定合适的数据块大小。这可以根据备份数据量和网络带宽来决定。通常情况下,较小的数据块可以更好地适应网络…

82.网络游戏逆向分析与漏洞攻防-移动系统分析-坐标修正数据包的处理与模拟

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

采油厂职工向媒体投稿的好方法找到了

作为一名采油厂的职工,我深知在媒体上定期投稿的重要性。这不仅是我们展示工作成果、传播企业文化的重要途径,更是上级考核我们工作表现的一项指标。然而,在投稿的过程中,我经历了不少心酸与困扰。 起初,我采用传统的邮箱投稿方式。每天,我都会花费大量时间在网络上搜索合适的媒…

kafka 图形化

介绍 idea 中的一个插件 kafkalytic,kafka 图形化 简单又强大 安装 使用界面 总体信息 数据查看

Python管理PVE(Proxmox VE)云平台--节点资源统计

一、前言 写本脚本的初衷是因手动查看统计已分配的PVE资源过于耗时,因此写一个脚本一劳永逸,具体实现方法:利用Python的paramiko模块进行远程命令查看、统计PVE平台各节点已分配的cpu、内存、磁盘空间。 二、步骤 1.构建shell脚本 1.1 统计…

每日一题 城市群的数量

题目解析 城市群数量_牛客题霸_牛客网 当解决这个问题时,首先需要理解题目要求。题目中给出了一个城市之间的邻接矩阵,矩阵中的元素表示城市之间是否直接相连。如果两个城市直接相连,或者通过其他城市间接相连,它们就属于同一个城…

进程间的IPC通信机制

一、介绍 进程与进程间的用户空间相互独立,内核空间共享。 1.传统的进程间通信机制 a.无名管道 pipe b.有名管道 fifo c.信号 signal 2.system V中的IPC对象 a.消息队列 message queue b.共享内存 shared memory c.信号灯集 semaphoare 3.可用于跨主机传输…

Weblogic 任意文件上传漏洞(CVE-2018-2894)

1 漏洞描述 CVE-2018-2894漏洞存在于Oracle WebLogic Server的Web服务测试页面(Web Service Test Page)中。这个页面允许用户测试Web服务的功能,但在某些版本中,它包含了一个未经授权的文件上传功能。攻击者可以利用这个漏洞&…

变频器通过Modbus转Profinet网关接电机与PLC通讯在自动化的应用

Modbus转Profinet网关(XD-MDPN100/300/600)的作用是将Modbus协议转换为Profinet协议,支持Modbus RTU主站/从站,并且Modbus转Profinet网关设备自带网口和串口,既可以实现协议转换的同时,也可以实现接口的转换…

ARM架构安全特性之隔离技术

安全之安全(security)博客目录导读 目录 一、保护代码和数据 二、TrustZone 三、安全世界之间的隔离 四、Secure-EL2扩展 五、保护主流计算工作负载 六、领域管理扩展(RME) 七、内存密集型可信应用程序 八、Arm动态TrustZone技术 强制执行明确定义的安全边界是安全工程…