Hive中的基础函数(一)

news2024/9/30 3:26:22

一、hive中的内置函数根据应用归类整体可以分为8大种类型。

1、 String Functions 字符串函数
主要针对字符串数据类型进行操作,比如下面这些:

字符串长度函数:length

•字符串反转函数:reverse

•字符串连接函数:concat

•带分隔符字符串连接函数:concat_ws

•字符串截取函数:substr,substring

•字符串转大写函数:upper,ucase

•字符串转小写函数:lower,lcase

•去空格函数:trim

•左边去空格函数:ltrim

•右边去空格函数:rtrim

•正则表达式替换函数:regexp_replace

•正则表达式解析函数:regexp_extract

•URL解析函数:parse_url

•json解析函数:get_json_object

•空格字符串函数:space

•重复字符串函数:repeat

•首字符ascii函数:ascii

•左补足函数:lpad

•右补足函数:rpad

•分割字符串函数: split

•集合查找函数: find_in_set

【案例演示】

select length(“maxwell”); 获取字符串maxwell的长度

select reverse(“maxwell”); 字符串反转函数reverse

–字符串连接函数:concat(str1, str2, … strN)
select concat(“max”,“well”); 输出结果为maxwell

–带分隔符字符串连接函数:concat_ws(separator, [string | array(string)]+)
select concat_ws(‘.’, ‘www’, array(‘baidu’, ‘com’)); 输出结果为www.baidu.com

–字符串截取函数:substr(str, pos[, len]) 或者 substring(str, pos[, len])
select substr(“maxwell”,-2); --pos是从1开始的索引,如果为负数则倒着数
select substr(“maxwell”,2,2);

2、日期函数

主要针对时间、日期数据类型进行操作
•获取当前日期: current_date
•获取当前时间戳: current_timestamp
•UNIX时间戳转日期函数: from_unixtime
•获取当前UNIX时间戳函数: unix_timestamp
•日期转UNIX时间戳函数: unix_timestamp
•指定格式日期转UNIX时间戳函数: unix_timestamp
•抽取日期函数: to_date
•日期转年函数: year
•日期转月函数: month
•日期转天函数: day
•日期转小时函数: hour
•日期转分钟函数: minute
•日期转秒函数: second
•日期转周函数: weekofyear
•日期比较函数: datediff
•日期增加函数: date_add
•日期减少函数: date_sub

–获取当前日期: current_date
select current_date();

–获取当前时间戳: current_timestamp
–同一查询中对current_timestamp的所有调用均返回相同的值。
select current_timestamp();

–获取当前UNIX时间戳函数: unix_timestamp
select unix_timestamp();

3、Mathematical Functions数学函数

•取整函数: round
•指定精度取整函数: round
•向下取整函数: floor
•向上取整函数: ceil
•取随机数函数: rand
•二进制函数: bin
•进制转换函数: conv
•绝对值函数: abs

–取整函数: round 返回double类型的整数值部分 (遵循四舍五入)
select round(3.1415926);

–指定精度取整函数: round(double a, int d) 返回指定精度d的double类型
select round(3.1415926,4);

–向下取整函数: floor
select floor(3.1415926);
select floor(-3.1415926);

–向上取整函数: ceil
select ceil(3.1415926);
select ceil(-3.1415926);

–取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数
select rand();

–指定种子取随机数函数: rand(int seed) 得到一个稳定的随机数序列
select rand(2);

4、Collection Functions集合函数
•集合元素size函数: size(Map<K.V>) size(Array)
•取map集合keys函数: map_keys(Map<K.V>)
•取map集合values函数: map_values(Map<K.V>)
•判断数组是否包含指定元素: array_contains(Array, value)
•数组排序函数:sort_array(Array)

–集合元素size函数: size(Map<K.V>) size(Array) 查看集合中size
select size(array(11,22,33));
select size(map(“id”,10010,“name”,“zhangsan”,“age”,18));

–取map集合keys函数: map_keys(Map<K.V>)
select map_keys(map(“id”,10086,“name”,“zhangsan”,“age”,18));

–取map集合values函数: map_values(Map<K.V>)
select map_values(map(“id”,10086,“name”,“zhangsan”,“age”,18));

–判断数组是否包含指定元素: array_contains(Array, value)
select array_contains(array(11,22,33),11);
select array_contains(array(11,22,33),66);

5、 Conditional Functions 条件函数
主要用于条件判断、逻辑判断转换这样的场合
•if条件判断: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
•空判断函数: isnull( a )
•非空判断函数: isnotnull ( a )
空值转换函数: nvl(T value, T default_value)

•非空查找函数: COALESCE(T v1, T v2, …)
•条件转换函数: CASE a WHEN b THEN c [WHEN d THEN e] [ELSE f] END*

其中if条件判断函数和case函数和java中的if else道理一样,开发中if函数更方便

–if条件判断: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
select if(1=2,100,200);
select if(sex =‘男’,‘M’,‘W’) from student limit 3;
总结:if中的参数和三元运算符的逻辑一样 ,条件,值1,值2。条件true则返回值1,条件为false,则返回值2

–空值转换函数: nvl(T value, T default_value)
select nvl(“helloworld”,“maxwell”); nvl(值1,值2) 值1为null则返回值值2 ,值1不为null则返回值1
select nvl(null,“maxwell”);

6、Type Conversion Functions 类型转换函数
•任意数据类型之间转换:cast
–任意数据类型之间转换:cast
select cast(12.14 as bigint);
select cast(12.14 as string);

7、 Data Masking Functions 数据脱敏函数
–mask
–将查询回的数据,大写字母转换为X,小写字母转换为x,数字转换为n。
select mask(“abc123DEF”);
select mask(“abc123DEF”,‘-’,‘.’,‘^’); --自定义替换的字母

–mask_first_n(string str[, int n]
–对前n个进行脱敏替换
select mask_first_n(“abc123DEF”,4);

–mask_last_n(string str[, int n])
select mask_last_n(“abc123DEF”,4);

–mask_show_first_n(string str[, int n])
–除了前n个字符,其余进行掩码处理
select mask_show_first_n(“abc123DEF”,4);

–mask_show_last_n(string str[, int n])
select mask_show_last_n(“abc123DEF”,4);

–mask_hash(string|char|varchar str)
–返回字符串的hash编码。
select mask_hash(“abc123DEF”);

总结:在处理用户的敏感信息,如身份证号码,手机号码,地址等敏感信息时,可以采用脱敏函数

8、Misc. Functions 其他杂项函数
•hive调用java方法: java_method(class, method[, arg1[, arg2…]])
•反射函数: reflect(class, method[, arg1[, arg2…]])
•取哈希值函数:hash
•current_user()、logged_in_user()、current_database()、version()
•SHA-1加密: sha1(string/binary)
•SHA-2家族算法加密:sha2(string/binary, int) (SHA-224, SHA-256, SHA-384, SHA-512)
•crc32加密:
•MD5加密: md5(string/binary)

–hive调用java方法: java_method(class, method[, arg1[, arg2…]])
select java_method(“java.lang.Math”,“max”,11,22);

–反射函数: reflect(class, method[, arg1[, arg2…]])
select reflect(“java.lang.Math”,“max”,11,22);

–取哈希值函数:hash
select hash(“allen”);

–current_user()、logged_in_user()、current_database()、version()

–SHA-1加密: sha1(string/binary)
select sha1(“allen”);

–SHA-2家族算法加密:sha2(string/binary, int) (SHA-224, SHA-256, SHA-384, SHA-512)
select sha2(“allen”,224);
select sha2(“allen”,512);

–crc32加密:
select crc32(“allen”);

–MD5加密: md5(string/binary)
select md5(“allen”);

二、用户自定义函数

1、UDF普通函数
特点是一进一出,也就是输入一行输出一行。比如round这样的取整函数,接收一行数据,输出的还是一行数据。

2、UDAF函数
A所代表的单词就是Aggregation聚合的意思。其最大的特点是多进一出,也就是输入多行输出一行。比如count、sum这样的函数。
•count:统计检索到的总行数。
•sum:求和
•avg:求平均
•min:最小值
•max:最大值
•数据收集函数(去重): collect_set(col)
•数据收集函数(不去重): collect_list(col)

select collect_set(sex) from student; sex为student表中的字段名
select collect_list(sex) from student;

**3、**UDTF函数通常把它叫做表生成函数,T所代表的单词是Table-Generating表生成的意思。最大的特点是一进多出,也就是输入一行输出多行。比如explode函数
explode函数接收map或者array类型的数据作为参数,然后把参数中的每个元素炸开变成一行数据。一个元素一行。这样的效果正好满足于输入一行输出多行。

explode(array)将array列表里的每个元素生成一行;
explode(map)将map里的每一对元素作为一行,其中key为一列,value为一列;

一般情况下,explode函数可以直接使用即可,也可以根据需要结合lateral view侧视图使用

select explode(array(11,22,33)) as item;

select explode(map(“id”,10086,“name”,“zhangsan”,“age”,18));

在这里插入图片描述

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

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

相关文章

Word处理控件Aspose.Words功能演示:使用 C++ 在 Word 文档 (DOC/DOCX) 中插入表格

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

基于python的多线程数据库数据录入

说明&#xff1a; 使用python编程结合多线程技术&#xff0c;将已经在python文件中的数据批量写入到数据库&#xff0c;便于数据关系结构化管理。 环境配置&#xff1a; certifi2019.6.16 chardet3.0.4 idna2.8 PyMySQL0.9.3 requests2.22.0 urllib31.25.3 将所需要的环境保…

vue模板语法和数据绑定和el、data的两种

vue模板语法有两大类&#xff1a; 1.插值语法&#xff1a; 功能&#xff1a;用于解拆标签体内容 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性 2.指令语法&#xff1a; 功能&#xff1a;用于解拆标签&#xff08;包括&…

《商用密码应用与安全性评估》第一章密码基础知识1.1应用概念

密码的概念与作用 概念 密码&#xff1a;采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。 密码技术&#xff1a;密码编码、实现、协议、安全防护、分析破译、以及密钥产生、分发、传递、使 用、销毁等技术。 密码技术核心&#xff1a;密码算法…

家用洗地机什么品牌质量好耐用?最适合家用的洗地机

近些年&#xff0c;随着消费水平的不断升级&#xff0c;我们对家电产品的要求也在逐步提高&#xff0c;就以这几年非常流行的洗地机为例&#xff0c;如今的人们在选洗地机时&#xff0c;会综合考虑价位、技术、配置、颜值、功能等多个方面&#xff0c;那么市场上家用洗地机什么…

JAVACC

JavaCC全称为Java Compiler Compiler&#xff0c;它是一个生成器&#xff0c;用于生成词法分析器&#xff08;lexical analysers&#xff09;和语法分析器&#xff08;parsers&#xff09;&#xff1b;JavaCC本身并不是词法分析器和语法分析器&#xff0c;它是一个生成器&#…

mysql数据库之索引结构

MySQL的索引是在存储引擎层实现的&#xff0c;不同的存储引擎有不同的结构。 一、常见索引。 索引结构描述BTree索引最常见的索引类型&#xff0c;大部分引擎都支持B树索引Hash索引底层数据结构是用哈希表实现的&#xff0c;只有精确匹配索引列的查询才有效&#xff0c;不支持…

Web版和客户端哪种SQL工具更好?ChatGPT有话要说

2023年年初公司发布了一款Web版SQL工具&#xff0c;短期内就赢得了众多用户的喜爱和下载。不过&#xff0c;也有SQL用户在评论区中提出自己的观点&#xff0c;认为Web版工具都不可靠&#xff0c;甚至看见Web版工具就劝返… … 工具Web化逐渐成为一种趋势&#xff0c;比如&…

如何使用Bypass-Url-Parser实现URL绕过并访问40X受保护页面

关于Bypass-Url-Parser Bypass-Url-Parser是一款功能强大的URL绕过工具&#xff0c;该工具可以使用多种方法实现URL绕过并访问目标站点的40X受保护页面。 工具下载 由于该工具基于Python 3 开发&#xff0c;因此我们首先需要在本地设备上安装并配置好Python 3环境。接下来&a…

PLC实验—西门子S7 1200读取超声波传感器数据

PLC实验—西门子S7 1200读取超声波传感器数据 US-016超声波测距模块 实验箱上是US-016超声波测距模块&#xff0c;其有关信息可以看实验室的博客 US-016超声波测距模块 1号Pin&#xff1a;接VCC电源&#xff08;直流5V&#xff09; 2号Pin&#xff1a;量程设置引脚&#xff…

GWT安装过程

1:安装前准备 &#xff08;可以问我要&#xff09; appengine-java-sdk-1.9.8 com.google.gdt.eclipse.suite.4.3.update.site_3.8.0 gwt-2.5.1 eclipse-jee-kepler-SR2-win32-x86_64.zip 2&#xff1a;安装环境上 打开eclipse Help –Install New Software… 选择Add –…

如何使用工时表管理项目和非项目的资源?

对新机会做出反应的能力是企业竞争优势的关键。项目不断涌现&#xff0c;企业需要了解具体的可用性以及是否有资源来接受新事物。更进一步来说&#xff0c;企业需要知道员工将时间花在哪里。 使用 8Manage工时表解决方案&#xff0c;你将始终拥有做出正确业务决策所需的全面知…

vue源码分析-响应式系统工作原理

上一章&#xff0c;我们讲到了Vue初始化做的一些操作&#xff0c;那么我们这一章来讲一个Vue核心概念响应式系统。 我们先来看一下官方对深入响应式系统的解释: 当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项&#xff0c;Vue 将遍历此对象所有的属性。 并使用 O…

LeetCode:构造最大二叉树;使用中序和后序数组构造二叉树;使用前序和中序数组遍历二叉树。

构造二叉树最好都是使用前序遍历&#xff1b;中左右的顺序。 654. 最大二叉树 中等 636 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建…

人力资源管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;在当今的信息化社会&#xff0c;为了更有效率地工作&#xff0c;人们充分利用现在的电子信息技术&#xff0c;在办公室架设起办公服务平台&#xff0c;将人力资源相关信息统一起来管理&#xff0c;帮助管理者有效组织降低成本和加速…

【Linux】gcc/g++/gdb的使用

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️社区 : 进步学堂       &#x1f6f0;️欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收…

Mask R-CNN 算法学习总结

Mask R-CNN 相关知识点整体框架1.Resnet 深度残差学习1.1 目的1.2 深度学习深度增加带来的问题1.3 Resnet实现思想【添加恒等映射】2.线性插值2.1 目的2.2 线性插值原理2.3 为什么使用线性插值?3.FPN 特征金字塔3.1 FPN介绍3.2 为什么使用FPN?3.3 自下而上层【提取特征】3.4 …

反激与正激的区别

之前学习了正激开关电源&#xff0c;但是对于正激和反激一直不是很清楚&#xff0c;网上找了一篇&#xff0c;觉得感觉该可以&#xff0c;以此记录。正激和反激是两种不同的开关电源技术一、正激&#xff08;1&#xff09;概述正激式开关电源是指使用正激高频变压器隔离耦合能量…

深度学习笔记:神经网络权重确定初始值方法

神经网络权重不可为相同的值&#xff0c;比如都为0&#xff0c;因为如果这样网络正向传播输出和反向传播结果对于各权重都完全一样&#xff0c;导致设置多个权重和设一个权重毫无区别。我们需要使用随机数作为网络权重 实验程序 在以下实验中&#xff0c;我们使用5层神经网络…

设计模式-服务定位器模式

设计模式-服务定位器模式一、背景1.1 服务定位模式1.2 策略模式二、代码实战2.1 服务定位器2.2 配置ServiceLocatorFactoryBean2.3 定义一个支付的接口2.4 根据不同类型处理Bean2.5 controller层三、项目结构及测试结果3.1 测试结果3.2 项目结构及源码(欢迎star)四、参考资料一…