当前位置: 首页 > article >正文

Hive 常用函数详细总结

Hive 常用函数详细总结本文汇总了 Hive 开发与面试中最常用、最实用的内置函数每个函数均附有语法说明和代码示例。内容涵盖字符串处理、日期时间、条件判断、聚合统计、开窗分析、集合操作、类型转换、JSON 解析等。目录一、字符串函数concat/concat_wssubstr/substringlengthupper/lowertrim/ltrim/rtrimregexp_replaceregexp_extractsplitinstr/locateget_json_object二、日期时间函数current_date/current_timestampyear/month/day/hour/minute/seconddatediffdate_add/date_subto_datefrom_unixtime/unix_timestampdate_formattrunc/last_day/next_day三、条件函数ifcase whencoalescenvlnullif/isnull/isnotnull四、聚合函数count/sum/avg/max/mincollect_set/collect_listarray_distinct/sizepercentile/percentile_approxhistogram_numeric五、开窗函数分析函数row_number/rank/dense_ranklag/leadfirst_value/last_valuesum/avg等聚合函数配合overntile六、集合与复杂类型函数array_containssort_arraystruct/named_structmap相关map_keys/map_values/map_contains_key七、类型转换与数学函数castround/floor/ceilrandabs/pow/sqrt八、其他实用函数explodeLateral Viewposexplodereflect调用 Java 方法hashmd5/sha1九、UDF 与 宏临时函数TEMPORARY FUNCTION宏CREATE TEMPORARY MACRO一、字符串函数1.concat/concat_ws功能连接字符串。concat(str1, str2, ...)直接拼接若任一为NULL则结果为NULL。concat_ws(separator, str1, str2, ...)用分隔符拼接自动跳过NULL。SELECTconcat(Hello, ,Hive);-- Hello HiveSELECTconcat_ws(-,2025,04,18);-- 2025-04-18SELECTconcat_ws(,,a,NULL,b);-- a,b2.substr/substring功能截取子串。substr(string, start[, length])start从 1 开始负数表示从末尾倒数。SELECTsubstr(Apache Hive,8,4);-- HiveSELECTsubstr(Apache Hive,-4);-- Hive3.length功能返回字符串长度字符数。SELECTlength(Hive);-- 44.upper/lower功能大小写转换。SELECTupper(hive),lower(HIVE);-- HIVE, hive5.trim/ltrim/rtrim功能去除首尾空格默认或指定字符。SELECTtrim( Hive );-- HiveSELECTltrim( Hive);-- HiveSELECTrtrim(Hive );-- Hive6.regexp_replace功能正则替换。regexp_replace(string, pattern, replacement)SELECTregexp_replace(2025-04-18,-,/);-- 2025/04/18-- 去掉数字外的所有字符SELECTregexp_replace(abc123def,[^0-9],);-- 1237.regexp_extract功能正则提取第n个捕获组。regexp_extract(string, pattern, n)SELECTregexp_extract(Hive 3.1.2,(\\d)\\.(\\d)\\.(\\d),2);-- 18.split功能按正则分割字符串返回数组。split(string, pattern)SELECTsplit(a,b,c,,)[1];-- b数组下标从0开始9.instr/locate功能返回子串第一次出现的位置从1开始。instr(str, substr)locate(substr, str[, pos])SELECTinstr(Hive is great,is);-- 6SELECTlocate(great,Hive is great);-- 1010.get_json_object功能从 JSON 字符串中提取指定字段。get_json_object(json_string, path)SELECTget_json_object({name:Alice,age:25},$.name);-- Alice二、日期时间函数11.current_date/current_timestampSELECTcurrent_date;-- 2026-04-18SELECTcurrent_timestamp;-- 2026-04-18 10:30:00.12312.year/month/day/hour/minute/secondSELECTyear(2025-04-18),month(2025-04-18),day(2025-04-18);-- 2025, 4, 18SELECThour(2025-04-18 14:30:00),minute(...),second(...);13.datediff功能计算两个日期相差的天数。datediff(endDate, startDate)SELECTdatediff(2025-04-18,2025-04-10);-- 814.date_add/date_sub功能日期加减天数。date_add(date, days)/date_sub(date, days)SELECTdate_add(2025-04-18,5);-- 2025-04-23SELECTdate_sub(2025-04-18,3);-- 2025-04-1515.to_date功能从时间戳中提取日期部分。SELECTto_date(2025-04-18 13:20:00);-- 2025-04-1816.from_unixtime/unix_timestampunix_timestamp([string[, pattern]])日期转 Unix 时间戳秒。from_unixtime(bigint[, pattern])时间戳转日期字符串。SELECTunix_timestamp(2025-04-18 10:00:00);-- 1744956000SELECTfrom_unixtime(1744956000,yyyy-MM-dd);-- 2025-04-1817.date_format功能格式化日期。date_format(date, format)SELECTdate_format(2025-04-18,yyyy年MM月dd日);-- 2025年04月18日18.trunc/last_day/next_daytrunc(date, MM)返回当月第一天。last_day(date)返回当月最后一天。next_day(date, Monday)返回下一个周一。SELECTtrunc(2025-04-18,MM);-- 2025-04-01SELECTlast_day(2025-04-18);-- 2025-04-30SELECTnext_day(2025-04-18,SUNDAY);-- 下一个周日三、条件函数19.if功能if(condition, true_value, false_value)SELECTif(11,Yes,No);-- Yes20.case when功能多条件判断。SELECTcasewhenscore90thenAwhenscore60thenBelseCendasgradeFROMscores;21.coalesce功能返回第一个非NULL值。coalesce(v1, v2, ...)SELECTcoalesce(NULL,NULL,Hive,Spark);-- Hive22.nvl功能nvl(value, default)若value为NULL则返回default。SELECTnvl(NULL,default);-- default23.nullif/isnull/isnotnullnullif(a, b)若a b返回NULL否则返回a。isnull(a)等价于a is null。SELECTnullif(5,5);-- NULLSELECTisnull(NULL);-- true四、聚合函数24.count/sum/avg/max/minSELECTcount(1),sum(sales),avg(price),max(price),min(price)FROMorders;25.collect_set/collect_list功能将分组内某列的值收集成数组collect_set去重collect_list不去重。SELECTdept,collect_set(name)ASdistinct_namesFROMemployeesGROUPBYdept;26.array_distinct/sizearray_distinct(array)数组去重。size(array|map)返回元素个数。SELECTarray_distinct(collect_list(city))FROMtable;SELECTsize(collect_set(uid))FROMlogs;27.percentile/percentile_approxpercentile(col, p)精确计算百分位数仅整数列。percentile_approx(col, p[, B])近似计算p为 0~1 或数组。SELECTpercentile_approx(salary,0.5)ASmedianFROMemp;-- 中位数SELECTpercentile_approx(salary,array(0.25,0.5,0.75))FROMemp;28.histogram_numeric功能生成直方图近似数据。histogram_numeric(col, nbins)SELECThistogram_numeric(age,10)FROMusers;-- 返回结构数组五、开窗函数分析函数29.row_number/rank/dense_rankrow_number()从 1 开始连续编号不并列。rank()并列时跳过后续序号1,2,2,4。dense_rank()并列不跳号1,2,2,3。SELECTname,dept,salary,row_number()over(partitionbydeptorderbysalarydesc)asrnFROMemp;30.lag/leadlag(col, n, default)取当前行前n行的值。lead(col, n, default)取后n行的值。SELECTdt,amount,lag(amount,1,0)over(orderbydt)asprev_amountFROMsales;31.first_value/last_value取窗口内第一个或最后一个值注意last_value默认窗口范围。SELECTname,dept,first_value(salary)over(partitionbydeptorderbysalary)asmin_salaryFROMemp;32. 聚合函数配合oversum(salary) over (partition by dept order by hire_date rows between unbounded preceding and current row)累积和。SELECTname,dept,salary,sum(salary)over(partitionbydeptorderbyhire_date)asrunning_totalFROMemp;33.ntile功能将分组数据分成n个桶返回桶编号1~n。SELECTname,score,ntile(4)over(orderbyscore)asquartileFROMstudents;六、集合与复杂类型函数34.array_contains功能判断数组是否包含某元素。SELECTarray_contains(array(1,2,3),2);-- true35.sort_array功能对数组排序升序。SELECTsort_array(array(3,1,2));-- [1,2,3]36.struct/named_struct创建结构体。SELECTnamed_struct(name,Alice,age,25)asperson;37.map相关map_keys(map)返回所有键的数组。map_values(map)返回所有值的数组。map_contains_key(map, key)是否包含键。SELECTmap_keys(map(a,1,b,2));-- [a,b]七、类型转换与数学函数38.cast功能显式类型转换。cast(value AS type)SELECTcast(123ASINT);-- 123SELECTcast(2025-04-18ASDATE);-- 2025-04-1839.round/floor/ceilround(col, d)四舍五入保留 d 位小数。floor/ceil向下/向上取整。SELECTround(3.14159,2);-- 3.14SELECTfloor(3.9);-- 340.rand功能返回 0~1 之间的随机数。rand([seed])SELECTrand();-- 随机小数41.abs/pow/sqrtSELECTabs(-5),pow(2,3),sqrt(9);-- 5, 8, 3八、其他实用函数42.explode配合 Lateral View功能将数组或 map 展开成多行。常与LATERAL VIEW联用。SELECTid,hobbyFROMuser_hobbies LATERALVIEWexplode(hobbies)tAShobby;43.posexplode功能展开数组同时返回位置索引。SELECTpos,valFROM(SELECTarray(a,b,c)ASarr)t LATERALVIEWposexplode(arr)ASpos,val;-- 结果(0,a), (1,b), (2,c)44.reflect功能调用 Java 静态方法。reflect(class, method, arg1, ...)SELECTreflect(java.util.UUID,randomUUID);-- 生成随机 UUID45.hash功能计算哈希值int。SELECThash(Hive);-- 返回整数46.md5/sha1/sha2加密哈希函数。SELECTmd5(password);-- 5f4dcc3b5aa765d61d8327deb882cf99九、UDF 与 宏47. 临时函数注册自定义函数当前会话有效。ADDJAR/path/to/my-udf.jar;CREATETEMPORARYFUNCTIONmy_lenAScom.example.MyLengthUDF;SELECTmy_len(hello);48. 宏功能创建可重用的表达式片段。CREATE TEMPORARY MACRO macro_name(参数) 表达式CREATETEMPORARYMACRO square(x)x*x;SELECTsquare(5);-- 25

相关文章:

Hive 常用函数详细总结

Hive 常用函数详细总结 本文汇总了 Hive 开发与面试中最常用、最实用的内置函数,每个函数均附有语法说明和代码示例。内容涵盖:字符串处理、日期时间、条件判断、聚合统计、开窗分析、集合操作、类型转换、JSON 解析等。 目录 一、字符串函数 concat / …...

从GRID到Common Voice:不同语音语料库到底该怎么选?(附适用场景与优缺点对比)

语音语料库选型指南:从科研到落地的精准匹配策略 语音技术从业者常面临一个关键挑战:如何在众多语料库中找到最适合特定任务的数据资源?本文将深入解析主流语音语料库的核心特性、适用场景与潜在限制,帮助您建立系统化的选型决策框…...

Windows系统优化终极指南:用Winhance轻松提升电脑性能30%以上

Windows系统优化终极指南:用Winhance轻松提升电脑性能30%以上 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winh…...

图书商城|基于springboot + vue图书商城系统(源码+数据库+文档)

图书商城系统 目录 基于springboot vue图书商城系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue图书商城系统 一、前言 博主介绍:✌…...

影墨·今颜小红书算法洞察:‘神韵强度’参数如何动态调节LoRA注入权重

影墨今颜小红书算法洞察:‘神韵强度’参数如何动态调节LoRA注入权重 1. 引言:从“塑料感”到“呼吸感”的跃迁 如果你玩过AI生成人像,大概率遇到过这样的困扰:生成的人像乍一看很美,但细看总觉得哪里不对劲——皮肤过…...

nlp_structbert_siamese-uninlu_chinese-base高算力适配教程:FP16推理加速与显存占用压测报告

nlp_structbert_siamese-uninlu_chinese-base高算力适配教程:FP16推理加速与显存占用压测报告 1. 引言:当通用NLP模型遇上高算力需求 如果你正在寻找一个能同时搞定命名实体识别、关系抽取、情感分析等多种任务的模型,那么SiameseUniNLU很可…...

从‘文件不见了’到‘数据被覆盖’:新手用C语言fopen写文件常踩的5个坑及解决办法

从‘文件不见了’到‘数据被覆盖’:新手用C语言fopen写文件常踩的5个坑及解决办法 刚接触C语言文件操作时,很多人会惊讶于fopen()这个看似简单的函数竟能引发如此多诡异问题。我曾见过学生因为误用"w"模式导致实验数据全毁,也遇到…...

基于机器标识重置的Cursor Pro持续访问技术方案实现

基于机器标识重置的Cursor Pro持续访问技术方案实现 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request li…...

从QQ音乐API签名机制,聊聊前端反爬的常见套路与应对思路

从QQ音乐API签名机制看现代Web应用的前端反爬设计 最近在分析几个主流音乐平台的API接口时,发现QQ音乐的签名机制设计得相当巧妙。作为一个日活过亿的应用,其API防护策略确实有不少值得研究的地方。今天我们就以vKey和Sign的生成为切入点,聊聊…...

2026年如何搭建OpenClaw?阿里云2分钟新手步骤含大模型API与Skill配置

2026年如何搭建OpenClaw?阿里云2分钟新手步骤含大模型API与Skill配置。本文面向零基础用户,完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw(Clawdbot)的流程,包含环境配置、服务启动、Skills集…...

告别手动输入:在Windows Terminal与Powershell中实现类iTerm2的智能补全体验

1. 为什么Windows开发者需要iTerm2般的智能补全体验 作为一个从macOS转回Windows的开发者,最让我抓狂的就是命令行环境的效率落差。在iTerm2里,轻轻按个Tab键就能自动补全路径和命令,上下箭头可以快速切换历史记录,这种丝滑体验在…...

基于Python的课表管理系统毕设

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在开发一套基于Python的课表管理系统,以实现课程信息的自动化管理、优化教学资源配置和提高教学效率。具体研究目的如下:实现课程…...

别再手动编译了!用Maven的annotationProcessorPaths一键搞定自定义注解处理器

别再手动编译了!用Maven的annotationProcessorPaths一键搞定自定义注解处理器 每次修改完代码都要手动执行额外编译步骤?团队内部开发的注解处理器总是无法像Lombok那样自动触发代码生成?这可能是大多数Java开发者在使用自定义注解处理器时遇…...

基于安卓的跨校区资源共享平台毕设源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于安卓操作系统的跨校区资源共享平台以解决当前高校教育资源分布不均与利用效率低下等问题。随着高等教育机构规模不断扩大及校区数量…...

mysql如何配置插件以提升查询性能_安装启用memcached插件

MySQL 8.0.29起已彻底移除daemon_memcached插件,因其与InnoDB缓存重叠、维护成本高且功能受限;推荐改用Redis应用层缓存或优化InnoDB配置与SQL索引。memcached插件在 MySQL 8.0 已被移除,无法安装MySQL 官方从 8.0.29 版本起彻底删除了 libme…...

软件泛化管理中的模板元编程

软件泛化管理中的模板元编程:解锁高效开发新范式 在当今快速迭代的软件开发领域,如何提升代码复用性、降低维护成本成为团队的核心挑战。模板元编程(Template Metaprogramming, TMP)作为泛型编程的高级形态,通过在编译…...

按降AI率工具排行榜选完,下一步怎么用?保姆级教程来了

按降AI率工具排行榜选完,下一步怎么用?保姆级教程来了 每次有人问我"降AI率工具排行榜哪个好",我推荐完嘎嘎降AI、比话降AI、率零这排行榜前3之后,下一个问题永远是:"那……我该怎么用?&qu…...

C++的std--ranges视图适配器组合与函数组合在表达力上的相似性

C20引入的std::ranges库彻底改变了序列操作的范式,其中视图适配器的链式组合与函数式编程中的函数组合展现出惊人的相似性。这种设计哲学上的共鸣,让开发者能够以声明式风格构建高效的数据处理管道。本文将从三个关键角度探讨两者在表达力上的异曲同工之…...

代码出错不再重启,不再查日志,不再等PR——智能生成+实时自愈如何将MTTR从小时级压缩至2.7秒,一线大厂SRE团队已全面部署

第一章:代码出错不再重启,不再查日志,不再等PR——智能生成实时自愈如何将MTTR从小时级压缩至2.7秒,一线大厂SRE团队已全面部署 2026奇点智能技术大会(https://ml-summit.org) 当服务突发500错误、数据库连接池耗尽或Kafka消费者…...

终极指南:如何在Linux上使用FSearch实现毫秒级文件搜索

终极指南:如何在Linux上使用FSearch实现毫秒级文件搜索 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 还在为Linux系统上缓慢的文件搜索而烦恼吗&#xf…...

TypeScript的装饰器元数据反射:实现依赖注入容器

TypeScript的装饰器元数据反射:实现依赖注入容器 在现代前端与后端开发中,依赖注入(Dependency Injection, DI)是一种重要的设计模式,它能够解耦组件之间的依赖关系,提升代码的可维护性和可测试性。TypeSc…...

Windows平台APK安装终极指南:APK Installer完整解决方案

Windows平台APK安装终极指南:APK Installer完整解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows系统无法直接安装Android应用而烦恼吗…...

终极OpenCore指南:在PC上安装macOS的完整解决方案 [特殊字符]

终极OpenCore指南:在PC上安装macOS的完整解决方案 🚀 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide OpenCore是现代Hackintosh社区的首选引…...

Windows 10安卓子系统终极指南:轻松运行Android应用的完整解决方案

Windows 10安卓子系统终极指南:轻松运行Android应用的完整解决方案 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 还在为Windows 10无…...

AI算力全解析:定义、数据与产业现状

人工智能的每一回实现跨越式进展,都跟算力的产生转变紧密相关,2012年,于竞赛里凭借超出10个百分点的优势获得冠军,其背后是两块消费级GPU所提供的大约4.7 也就是每秒4.7万亿次浮点运算的训练能力,到了2025年&#xff0…...

AI智能体科普:从概念到实践,一文读懂数字员工的工作原理

2023 年起,大语言模型的爆发式增长促使人工智能从“对话式交互”朝着“自主行动式执行”发生跃迁,这一跃迁当中核心载体是 AI 智能体(AI Agent),截至 2026 年第一季度,全球超 43%的企业在至少一个业务场景里…...

开源鸿蒙 Flutter 实战|页面转场动画完整实现

🎬 开源鸿蒙 Flutter 实战|页面转场动画完整实现 欢迎加入开源鸿蒙跨平台社区→https://openharmonycrosplatform.csdn.net 【摘要】本文面向开源鸿蒙跨平台开发新手,基于 Flutter 框架实现了 7 种风格的页面转场动画,包含淡入淡…...

当Copilot遇上Git Rebase:智能生成代码冲突的8种反直觉模式(附可落地的Pre-Commit Hook检测清单)

第一章:智能代码生成与代码冲突解决 2026奇点智能技术大会(https://ml-summit.org) 现代开发工作流中,AI驱动的代码生成已深度嵌入IDE、CI/CD管道与协作平台。当多个开发者基于同一基线提交语义相似但结构不同的补丁时,传统三路合并常因上下…...

告别CPU搬运工:手把手教你用PL330 DMA指令集优化Exynos 4412数据传输

告别CPU搬运工:手把手教你用PL330 DMA指令集优化Exynos 4412数据传输 在嵌入式系统开发中,数据搬运往往是性能瓶颈的关键所在。想象一下,当你设计的智能摄像头系统因为频繁的图像数据传输而出现卡顿,或者音频处理设备因为实时流处…...

避坑指南:MATLAB gamultiobj参数调优与结果分析全攻略

MATLAB多目标优化实战:gamultiobj参数调优与Pareto解集深度分析 当你第一次用gamultiobj跑出一个看似完美的Pareto前沿时,那种成就感确实令人兴奋。但很快就会发现,同样的代码换个问题就跑出分布不均的解集,或者迭代几百代依然无法…...