Hive数仓操作(十一)
一、Hive 日期函数
在日常的数据处理工作中,日期和时间的处理是非常常见的操作。Hive 提供了丰富的日期函数,能够帮助我们方便地进行日期和时间的计算。本文将详细介绍 Hive 中常用的日期函数,并通过具体的示例展示其用法和结果。
1. 获取当前时间
获取包含毫秒的当前时间
SELECT current_timestamp();
示例结果:
2024-10-01 12:34:56.789
获取当前日期
SELECT current_date();
示例结果:
2024-10-01
2. Unix 时间戳处理
获取当前 Unix 时间戳
SELECT unix_timestamp();
示例结果:
1727801696
解释:Unix 时间戳是自1970年1月1日(UTC)以来的秒数
将 Unix 时间戳转换为日期时间
SELECT from_unixtime(1727801696);
示例结果:
2024-10-01 12:34:56
3. 日期计算
日期加减天数
在指定的日期上增加或减少天数。
SELECT date_add(current_date(), 2);
示例结果:
2024-10-03
日期加减月份
在指定的日期上增加或减少月份。
SELECT add_months(current_date(), 1);
示例结果:
2024-11-01
4. 获取指定日期的特殊日期
获取指定日期所在月份的最后一天
SELECT last_day(current_date());
示例结果:
2024-10-31
获取指定日期的下一个星期几
第二个参数决定了返回的星期几,例如 'MO' 表示星期一。
SELECT next_day(current_date(), 'MO');
示例结果:
2024-10-07
5. 日期差计算
计算两个日期之间相差的天数
SELECT datediff(current_date(), to_date('2020-10-08'));
示例结果:
1454
计算两个日期之间相差的月数
SELECT months_between(current_timestamp(), to_date('2022-10-08'));
示例结果:
24.97
6. 日期格式转换
将字符串类型的日期转换为时间戳
SELECT unix_timestamp('2008-08-08', 'yyyy-MM-dd');
示例结果:
1218144000
7. 提取日期中的年、月、日
获取日期中的年、月、日
SELECT year(current_date()), month(current_date()), day(current_date());
示例结果:
2024 10 1
二、Hive 条件函数
1. IF 函数
if(判断条件, x, y):当判断条件成立时,返回 x,否则返回 y。
SELECT ename, sal, if(sal > 2500, 'great than 2500', 'less equers 2500') FROM emp;
示例结果:
+-------+------+-------------------+
| ename | sal | result |
+-------+------+-------------------+
| John | 3000 | great than 2500 |
| Jane | 2000 | less equers 2500 |
+-------+------+-------------------+
2. CASE WHEN 函数
CASE WHEN 函数用来根据条件进行分支判断,打标签,并结合聚合函数进行统计,然后以列的方式显示结果。
SELECT ename, sal,
CASE WHEN sal <= 1000 THEN 'A 级'WHEN sal <= 2000 THEN 'B 级'WHEN sal <= 3000 THEN 'C 级'WHEN sal <= 4000 THEN 'D 级'ELSE 'E 级'
END as grade
FROM emp;
示例结果:
+-------+------+-------+
| ename | sal | grade |
+-------+------+-------+
| John | 3000 | C 级 |
| Jane | 2000 | B 级 |
+-------+------+-------+
三、Hive 空值处理函数
1. COALESCE 函数
coalesce(a, b, c, ...) 返回参数里第一个不为空的值。
SELECT ename, coalesce(comm, 0) as comm FROM emp;
示例结果( Jane的comm为空值 ):
+-------+------+
| ename | comm |
+-------+------+
| John | 500 |
| Jane | 0 |
+-------+------+
2. NVL 函数
NVL(x, y) 如果 x 不为 NULL,就返回 x,否则返回 y。
SELECT ename, nvl(comm, 0) as comm FROM emp;
示例结果( Jane的comm为空值 ):
+-------+------+
| ename | comm |
+-------+------+
| John | 500 |
| Jane | 0 |
+-------+------+
四、聚合函数
常用的聚合函数有 MAX、SUM、COUNT、MIN、AVG 以及 GROUP BY 和 HAVING 的用法和 Mysql、Oracle 是一样的。
SELECT COUNT(1), MAX(sal), MIN(sal), AVG(sal), SUM(sal) FROM emp;
示例结果:
+---------+----------+----------+----------+----------+
| count(1)| max(sal) | min(sal) | avg(sal) | sum(sal) |
+---------+----------+----------+----------+----------+
| 2 | 3000 | 2000 | 2500 | 5000 |
+---------+----------+----------+----------+----------+
五、类型转换函数
1. array 数组类型转换函数
将不同的元素拼接成一个数组。
SELECT array(1, 2, 3) as num_array, array('a', 'b', 'c') as char_array;
示例结果:
+-----------+-------------+
| num_array | char_array |
+-----------+-------------+
| [1,2,3] | ['a','b','c']|
+-----------+-------------+
2. str_to_map map类型转换函数
将字符串参数转换成一个 map 类型。
SELECT str_to_map('name:zhangsan,age:20', ',', ':') as info_map;
示例结果:
+-------------------------------+
| info_map |
+-------------------------------+
| {"name":"zhangsan","age":"20"}|
+-------------------------------+
语法:
str_to_map(text, x, y)
text:包含键值对信息的字符串。x:键值对之间的分隔符。y:键和值之间的分隔符。
3. CAST 强制类型转换函数
CAST(x AS 类型) 强制类型转换。
SELECT from_unixtime(CAST('1652271247' AS bigint)) as datetime;
示例结果:
+---------------------+
| datetime |
+---------------------+
| 2022-05-11 03:34:07 |
+---------------------+
相关文章:
Hive数仓操作(十一)
一、Hive 日期函数 在日常的数据处理工作中,日期和时间的处理是非常常见的操作。Hive 提供了丰富的日期函数,能够帮助我们方便地进行日期和时间的计算。本文将详细介绍 Hive 中常用的日期函数,并通过具体的示例展示其用法和结果。 1. 获取当…...
C语言初步介绍(初学者,大学生)【上】
1.C语⾔是什么? ⼈和⼈交流使⽤的是⾃然语⾔,如:汉语、英语、⽇语 那⼈和计算机是怎么交流的呢?使⽤ 计算机语⾔ 。 ⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令&am…...
陈文自媒体:现在的房价,已经跌到7年前!
今年的国庆北上广深都放开了政策,很多人都放弃旅游去看房了,现在的全民都有一个基本意识,现在的房子已经到了谷底,从各大政策就可以看出来,稍微有点钱的可以出手买房了。 昨天我哥跟我说,现在xx地方的房子…...
基于STM32的智能水族箱控制系统设计
引言 本项目基于STM32微控制器设计一个智能水族箱控制系统。该系统能够通过传感器监测水温、照明和水位,并自动控制加热器、LED灯和水泵,确保水族箱内的环境适宜鱼类生长。该项目展示了STM32在环境监测、设备控制和智能反馈系统中的应用。 环境准备 1…...
java语言基础案例-cnblog
java语言基础案例 象棋口诀 输出 package nb;public class XiangQi {public static void main(String[] args) {char a 马;char b 象;char c 卒;System.out.println(a"走日"b"走田""小"c"一去不复还");} }输出汇款单 package nb…...
MyBatis-Plus 之 typeHandler 的使用
一、typeHandler 的使用 1、存储json格式字段 如果字段需要存储为json格式,可以使用JacksonTypeHandler处理器。使用方式非常简单,如下所示: 在domain实体类里面要加上,两个注解 TableName(autoResultMap true) 表示自动…...
HDLBits中文版,标准参考答案 |2.5 More Verilog Features | 更多Verilog 要点
关注 望森FPGA 查看更多FPGA资讯 这是望森的第 7 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 Conditional ternary operator | 条件三目运算符 2 Reduction operators | 归约运算器 3 Reduction: Even wider gates | 归约:更宽的门电路 4 Combinational fo…...
提升开机速度:有效管理Windows电脑自启动项,打开、关闭自启动项教程分享
日常使用Windows电脑时,总会需要下载各种各样的办公软件。部分软件会默认开机自启功能,开机启动项是指那些在电脑启动时自动运行的程序和服务。电脑开机自启太多的情况下会导致电脑卡顿,开机慢,运行不流畅的情况出现,而…...
数据库简单介绍
数据库是现代信息技术中用于存储、管理和检索数据的重要工具。数据库技术的发展经历了多个阶段,从早期的层次模型和网状模型,到关系型数据库的兴起,再到NoSQL和NewSQL的多样化发展。数据库系统已经成为现代信息系统的核心和基础设施。 数据库…...
运用MinIO技术服务器实现文件上传——利用程序上传图片(二 )
在上一篇文章中,我们已经在云服务器中安装并开启了minio服务,本章我们将为大家讲解如何利用程序将文件上传到minio桶中 下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。 - **对象(Object࿰…...
C语言 | Leetcode C语言题解之第461题汉明距离
题目: 题解: int hammingDistance(int x, int y) {int s x ^ y, ret 0;while (s) {s & s - 1;ret;}return ret; }...
Qt 3D、QtQuick、QtQuick 3D 和 QML 的关系
理清 Qt 3D、QtQuick、QtQuick 3D 和 QML 的关系 在开发图形界面应用时,特别是在使用 Qt 框架时,开发者可能会接触到多个概念,如 Qt 3D、QtQuick、QtQuick 3D 和 QML。这些术语分别代表了 Qt 中不同的模块或技术,但由于它们的功能…...
软件设计师(软考学习)
数据库技术 数据库基础知识 1. 数据库中的简单属性、多值属性、复合属性、派生属性简单属性:指不能够再分解成更小部分的属性,通常是数据表中的一个列。例如学生表中的“学号”、“姓名”等均为简单属性。 多值属性:指一个属性可以有多个值…...
第一讲:Go语言开发入门:环境搭建与基础语法
文章目录 环境搭建windows环境搭建Mac环境搭建安装GO使用 Homebrew 安装 Go手动下载安装 Go 配置环境变量配置环境变量检查 Go 是否正确安装 验证安装:编写第一个 Go 程序创建 Go 工作区编写 Hello World 程序运行程序编译程序 常用的 Go 命令 Go语言基础语法1. 变量…...
Linux CentOS stream9配置本地yum源
在Linux系统中,yum源配置是一个重要的环节。把系统安装时配置的国外yum源转换为国内yum源,能够帮助系统快速安装软件包。对于网络环境不稳定或无法联网的系统,配置本地yum源,可以让用户在离线状态下也能进行软件包的安装,十分重要。 一、国内源 在使用Linux的日常工作中…...
std::string
std::string是C标准库中的一个基本类模板,专门用于处理字符串。它提供了一个可变长度的字符序列,以及一系列用于字符串操作的方法。std::string是值类型,这意味着当它作为函数参数传递或赋值时,整个字符串数据会被复制。 std::st…...
【Docker】03-自制镜像
1. 自制镜像 2. Dockerfile # 基础镜像 FROM openjdk:11.0-jre-buster # 设定时区 ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷贝jar包 COPY docker-demo.jar /app.jar # 入口 ENTRYPOINT ["ja…...
Java GC 分类,8和9使用的哪种?
Java的垃圾收集器(Garbage Collector, GC)负责自动管理内存,回收不再使用的对象所占用的空间。随着JVM的发展,出现了多种不同特性的垃圾收集器来适应不同的应用场景和性能需求。在Java 8中,主要有以下几种垃圾收集器&a…...
【Docker从入门到进阶】01.介绍 02.基础使用
1. 介绍 1.1. 什么是 Docker Docker 是一个开源的平台,用于开发、发布和运行应用程序。它使开发者能够以更精简的方式封装应用及其依赖,做到“打包一次,到处运行”。通过 Docker,您可以创建轻量级、可移植的容器,每个…...
GraphRAG-Local-UI - 基于 GraphRAG 支持本地的聊天UI
文章目录 一、关于 GraphRAG-Local-UI 🕸️特点🌟🗺️路线图最近更新即将推出的功能 二、📦安装和设置三、使用入门🚀1、创建索引目录2、添加示例数据(可选)3、初始化索引文件夹4、配置设置5、定…...
百度网盘提速全攻略:从限速对抗到效能优化的实战指南
百度网盘提速全攻略:从限速对抗到效能优化的实战指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 诊断限速瓶颈:从协议层破解速度封印 原理图解&am…...
从逻辑门到CPU:计算机工作原理详解
戏说CPU的工作原理:从逻辑门到计算系统1. 计算系统的基本构建单元1.1 逻辑门的物理实现计算系统最基本的构建单元是逻辑门,它们可以通过简单的物理实体来演示。以三名士兵为例,我们可以构建最基本的逻辑运算单元:输入单元…...
从零搭建:Spring Boot+OpenTelemetry+Jaeger全链路监控环境配置指南
从零搭建Spring Boot全链路监控:OpenTelemetry与Jaeger实战指南 引言:为什么需要全链路监控? 想象一下这样的场景:你的电商平台在促销期间突然出现订单提交缓慢的问题。用户投诉不断涌入,但传统的日志系统只能告诉你…...
CAN总线技术:数字信号与汽车电子应用解析
CAN总线技术解析:从数字信号本质到汽车电子应用1. CAN总线概述1.1 基本定义与技术背景CAN(Controller Area Network)总线是一种专为工业控制和汽车电子设计的串行通信协议,由德国Bosch公司于1983年开发,后成为国际标准…...
从GOPATH到Go Mod:老项目迁移必知的5个文件结构陷阱
从GOPATH到Go Mod:老项目迁移必知的5个文件结构陷阱 当Golang社区在2018年推出Go Modules时,很少有人预料到这个看似简单的包管理工具会成为Go语言发展史上的分水岭。四年后的今天,仍有大量遗留项目困在GOPATH的泥潭中,而迁移过程…...
PowerShell效率提升秘籍:10个必备插件让你的终端飞起来
PowerShell效率革命:10款生产力插件深度评测与实战指南 对于每天与终端打交道的开发者来说,PowerShell的默认功能往往难以满足高效开发的需求。本文将深入剖析10款经过实战检验的效率工具,从智能补全到目录导航,从文件操作到命令解…...
ComfyUI与Stable Diffusion WebUI模型共享终极指南:如何通过extra_model_paths.yaml一键配置
ComfyUI与Stable Diffusion WebUI模型共享终极指南:如何通过extra_model_paths.yaml一键配置 在AI绘图领域,ComfyUI和Stable Diffusion WebUI(简称WebUI)各有优势。ComfyUI以其高度可定制的工作流著称,而WebUI则提供了…...
避免这些坑!Unity2D界面转换中常见的动画事件处理问题及解决方案
避免这些坑!Unity2D界面转换中常见的动画事件处理问题及解决方案 在Unity2D游戏开发中,界面转换是提升用户体验的关键环节。一个流畅的淡入淡出效果能让场景切换更加自然,但很多开发者在实际操作中常会遇到动画事件不触发、协程执行异常等问题…...
OpenClaw+Qwen3-32B双剑合璧:个人知识库的智能维护方案
OpenClawQwen3-32B双剑合璧:个人知识库的智能维护方案 1. 为什么需要自动化知识管理 作为一个长期依赖个人知识库的内容创作者,我发现自己正陷入"信息过载"的困境。每天需要处理的网页文章、PDF报告、会议录音等碎片化内容超过20份ÿ…...
VS2022项目复制后报错打不开?别慌,手把手教你用记事本5分钟修复.sln文件
VS2022项目复制后报错打不开?记事本5分钟修复.sln文件全指南 刚复制完的VS2022项目一打开就报错?解决方案资源管理器一片空白?别急着重装或放弃,这很可能只是.sln文件中的路径需要手动更新。作为经历过数十次类似问题的开发者&…...
