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、定…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
