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

[Hive] 常见函数

文章目录

  • 字符串函数
  • 数值函数
  • 随机函数
  • 日期和时间函数
    • 字符串转时间
  • 聚合函数
  • 数组函数
  • 结构体函数
  • 数组函数
  • 映射函数 map
  • 正则
  • 处理JSON

字符串函数

CONCAT(string1, string2, …):将多个字符串连接成一个字符串。

LENGTH(string):返回字符串的长度。

LOWER(string):将字符串转换为小写。

UPPER(string):将字符串转换为大写。

TRIM(string):去除字符串两端的空格。

SUBSTR(string, start, length):从字符串中提取子字符串,从指定的起始位置开始,指定长度。

REPLACE(string, search, replace):替换字符串中的指定子字符串。

REGEXP_REPLACE(string, pattern, replace):使用正则表达式替换字符串中的匹配项。

SPLIT(string, delimiter):将字符串按指定分隔符拆分为数组。

INSTR(string, substring):返回子字符串在字符串中第一次出现的位置。

LIKE(string, pattern):判断字符串是否与指定模式匹配(支持通配符)。

RTRIM(string):去除字符串末尾的空格。

LTRIM(string):去除字符串开头的空格。

CONCAT_WS(separator, string1, string2, …):将多个字符串使用指定的分隔符连接成一个字符串。

INITCAP(string):将字符串的首字母大写。


数值函数

ABS(x):返回数值的绝对值。

ROUND(x, d):将数值四舍五入到指定的小数位数。

CEIL(x):向上取整。

FLOOR(x):向下取整。


随机函数

rand():生成一个 0 到 1 之间的随机浮点数。

随机取出一张表的10条数据
select * from t1 order by rand() limit 10

randn():生成一个符合标准正态分布(均值为 0,标准差为 1)的随机浮点数。
rand_seed(n):使用给定的种子值 n 来初始化随机数生成器,从而产生可重复的随机数序列。
rand_integer(n):生成一个 0 到 n-1 之间的随机整数。
rand_array(n, expr):生成一个包含 n 个元素的数组,每个元素的值由表达式 expr 决定。


日期和时间函数

CURRENT_DATE():返回当前日期。

CURRENT_TIMESTAMP():返回当前时间戳。

YEAR(date):返回日期中的年份。

MONTH(date):返回日期中的月份。

DAY(date):返回日期中的天数。

DATEDIFF(enddate, startdate):返回两个日期之间的天数差异。

DATE_ADD(startdate, num_days):将指定数量的天数添加到给定日期中。

DATE_SUB(startdate, num_days):从给定日期中减去指定数量的天数。

文章目录

  • 字符串函数
  • 数值函数
  • 随机函数
  • 日期和时间函数
    • 字符串转时间
  • 聚合函数
  • 数组函数
  • 结构体函数
  • 数组函数
  • 映射函数 map
  • 正则
  • 处理JSON

字符串转时间

TO_DATE(string, format):将字符串转换为日期类型。format 参数指定字符串的日期格式。

TO_TIMESTAMP(string):将字符串转换为时间戳类型。

UNIX_TIMESTAMP(string, format):将字符串转换为 Unix 时间戳。format 参数指定字符串的日期格式。

FROM_UNIXTIME(unix_time, format):将 Unix 时间戳转换为指定格式的时间字符串。

日期格式的模式包括以下常用的符号:

  • yyyy:四位数的年份。
  • MM:两位数的月份(01-12)。
  • dd:两位数的日期(01-31)。
  • HH:24 小时制的小时数(00-23)。
  • mm:分钟数(00-59)。
  • ss:秒数(00-59)。

以下是一些示例

‘2023-10-25’ 的格式为 ‘yyyy-MM-dd’。
‘10/25/23’ 的格式为 ‘MM/dd/yy’。
‘2023-10-25 15:30:45’ 的格式为 ‘yyyy-MM-dd HH:mm:ss’。
‘25-Oct-23’ 的格式为 ‘dd-MMM-yy’。


聚合函数

SUM(column):计算列的总和。

AVG(column):计算列的平均值。

MAX(column):返回列的最大值。

MIN(column):返回列的最小值。

COUNT(column):计算非空行的数量。

进阶聚合函数

GROUP_CONCAT(expr[, sep]):将分组内的多个值连接成一个字符串,并可以指定分隔符。

COLLECT_LIST(expr):返回分组内的所有值作为一个数组。

COLLECT_SET(expr):返回分组内的所有唯一值作为一个集合。

FIRST(expr):返回分组内的第一个非空值。

LAST(expr):返回分组内的最后一个非空值。

PERCENTILE(expr, p):计算分组内的某个百分位数。

STDDEV(expr):计算分组内值的标准差。

VARIANCE(expr):计算分组内值的方差。


数组函数

SIZE(array):返回数组的大小。

ARRAY_CONTAINS(array, value):检查数组是否包含指定的值。

EXPLODE(array):将数组展开为多行。

array_intersect(arr1, arr2) 函数来判断两个数组是否存在交集。该函数将返回两个数组中共有的元素组成的一个新数组。


结构体函数

STRUCT(col1, col2, …):创建一个结构体。

col_name.field_name:访问结构体中的字段。


数组函数

ARRAY(col1, col2, …):创建一个数组。

SIZE(array):返回数组的大小。

ELEMENT_AT(array, index):返回数组中指定索引位置的元素。

EXPLODE(array):将数组展开为多行。

ARRAY_CONTAINS(array, value):检查数组是否包含指定的值。


映射函数 map

MAP(key1, value1, key2, value2, …):创建一个映射。

MAP_KEYS(map):返回映射中的所有键。

MAP_VALUES(map):返回映射中的所有值。

GET_JSON_OBJECT(json_string, path):从 JSON 字符串中提取指定路径的值。
复杂数据类型转换函数:

STRUCT_TO_MAP(struct):将结构体转换为映射。

MAP_TO_STRUCT(map):将映射转换为结构体。


文章目录

  • 字符串函数
  • 数值函数
  • 随机函数
  • 日期和时间函数
    • 字符串转时间
  • 聚合函数
  • 数组函数
  • 结构体函数
  • 数组函数
  • 映射函数 map
  • 正则
  • 处理JSON


正则

Hive 的正则表达式函数使用的是 Java 的正则表达式语法。

REGEXP_EXTRACT(string, pattern, index):从字符串中使用正则表达式模式提取匹配的子字符串。index 参数用于指定提取的子字符串索引。

regexp_extract_all(str, regexp[, index]) 函数来返回所有匹配的元素的一个数组

REGEXP_REPLACE(string, pattern, replacement):使用正则表达式模式替换字符串中的匹配项为指定的替换字符串。

REGEXP_SPLIT(string, pattern):根据正则表达式模式将字符串拆分为数组。

RLIKE(string, pattern):检查字符串是否与正则表达式模式匹配,返回布尔值。


处理JSON

GET_JSON_OBJECT(json_string, path):从 JSON 字符串中提取指定路径的值。

JSON_TUPLE(json_string, col1, col2, …):将 JSON 字符串解析为指定的列。

JSON_ARRAY(json_string, col1, col2, …):将 JSON 数组字符串解析为指定的列。

JSON_OBJECT(key1, value1, key2, value2, …):创建一个 JSON 对象。

JSON_SIZE(json_string):返回 JSON 字符串中顶层元素的数量。

JSON_EXTTRACT(json_string, json_path):从 JSON 字符串中提取满足 JSONPath 表达式的值。


http://www.kler.cn/a/105981.html

相关文章:

  • QList和QSet常用操作(查找、插入、排序、交集)
  • AWTK VSCode 实时预览插件端口冲突的解决办法
  • 【微信小程序】访客管理
  • 使用YOLOv9进行图像与视频检测
  • Centos 7 安装wget
  • Python 正则表达式使用指南
  • BUUCTF刷题记录
  • echarts将展示全天的数据,如一天的电费,一个停车场一天的饱和度等问题
  • Qt中的单例模式
  • 游戏研发的解决方案有哪些?
  • onclick事件的用法
  • uni-app:实现picker下拉列表的默认值设置
  • kafka丢数据的原因
  • Hadoop3.0大数据处理学习1(Haddop介绍、部署、Hive部署)
  • 【Python · PyTorch】数据基础
  • 如何进行渗透测试以提高软件安全性?
  • Java可重复注解接口(Repeatable Annotation Interfaces)
  • 软件测试肖sir__python之ui自动化测试框架作业案例
  • 关于接口|常见电商API接口种类|接口数据类型|接口请求方法
  • OpenText 安全取证软件——降低成本和风险的同时,简化电子取证流程
  • 【反射】Java反射机制 -- 常用构造器与方法
  • componentDidMount只执行一次的解决方法
  • 【软件测试】超细HttpRunner接口自动化框架使用案例,一篇策底打通...
  • 更换网络ip地址怎么设置
  • Pytorch使用torchvision.datasets.ImageFolder读取数据集,数据集的内容排列状况
  • 如何使用SpringBoot处理全局异常