Hive 函数(实例操作版2)

server/2024/11/25 15:25:32/

数据脱敏函数

-- 演示数据脱敏函数
-- mask_hash:  返回指定字符串的hash编码
select mask_hash('binzi');-- 拓展
--将查询回的数据,大写字母转换为X,小写字母转换为x,数字转换为n。
select mask("abc123DEF"); -- xxxnnnXXX--自定义替换的字母: 依次为大写小写数字
select mask("abc123DEF",'大','小','数');
select mask("abc123DEF",'/','.','%');--mask_first_n(string str[, int n]
--对前n个进行脱敏替换 大写字母转换为X,小写字母转换为x,数字转换为n。
select mask_first_n("abc123DEF",6);--mask_last_n(string str[, int n])
--对后n个进行脱敏替换 大写字母转换为X,小写字母转换为x,数字转换为n。
select mask_last_n("abc123DEF",6);--mask_show_first_n(string str[, int n])
--除了前n个字符,其余进行掩码处理
select mask_show_first_n("abc123DEF",6);--mask_show_last_n(string str[, int n])
select mask_show_last_n("abc123DEF",6);

加密函数

--取哈希值函数:hash
select hash("binzi"); -- 93742710--MD5加密: md5(string/binary)
select md5("binzi"); -- 32位   072853027b387fcf891a610137f8dc1b
select length('072853027b387fcf891a610137f8dc1b');--SHA-1加密: sha1(string/binary)
select sha1("binzi"); -- 40位 66368c80ca9125f9a8a945aaf1e1ec3f8b21f7f9
select length('66368c80ca9125f9a8a945aaf1e1ec3f8b21f7f9');--SHA-2家族算法加密:sha2(string/binary, int)  (SHA-224, SHA-256, SHA-384, SHA-512)
select sha2("binzi",224);
select sha2("binzi",512);--crc32加密:
select crc32("binzi"); -- 3221865747

炸裂函数

把一个容器的多个数据炸裂出单独展示:  explode(容器)

    

炸裂函数配合侧视图使用格式:

select 原表别名.字段名,侧视图名.字段名 from 原表 原表别名 lateral view explode(要炸开的字段) 侧视图名 as 字段名 ;

-- 切水果实战练习
-- 已知字符串'苹果-香蕉-西瓜-哈密瓜-火龙果-榴莲'要求切割放到容器中
select '苹果-香蕉-西瓜-哈密瓜-火龙果-榴莲';
select split('苹果-香蕉-西瓜-哈密瓜-火龙果-榴莲', '-');-- UDTF: 一进多出
select explode(array('binzi', '666', '888'));
select explode(map('a', 1, 'b', 2, 'c', 3));-- 演示炸裂函数示例(一进多出)
-- 查看指定函数详细扩展信息(有对应示例)
desc function extended explode;-- 已知array容器中"苹果","香蕉","西瓜","哈密瓜","火龙果","榴莲"要求炸开
select explode(array("苹果", "香蕉", "西瓜", "哈密瓜", "火龙果", "榴莲"));

实例

数据文件👉The_NBA_Championship.txt

--建表
create table the_nba_championship(team_name string,champion_year array<string>
) row format delimited
fields terminated by ','
collection items terminated by '|';--加载数据文件到表中  先上传到hdfs/source目录
load data  inpath '/source/The_NBA_Championship.txt' into table the_nba_championship;--验证
select * from the_nba_championship;-- 只查询冠军年份
select explode(champion_year) as year from the_nba_championship ;-- 配合侧视图完成需求
with tmp as(select  a.team_name,b.yearfrom the_nba_championship alateral view explode(champion_year) b as year)
select * from tmp;

行列转换

行转列

collect_set(字段名): 把多个数据收集到一起,默认去重
collect_list(字段名): 把多个数据收集到一起,默认不去重
把多个子串用指定分隔符拼接成一个大字符串: concat_ws(分隔符,多个数据...)      注意: 如果拼接数据不是字符串可以使用cast转换

--建表
create table row2col2(col1 string,col2 string,col3 int
)row format delimited fields terminated by '\t';--加载数据到表中(按照图中数据在DataGrip可视化界面添加)
select * from row2col2;需求1: 把原表数据变成以下格式
a b [1,2,3]
c d [4,5,6]selectcol1,col2,collect_list(col3)
fromrow2col2
group bycol1, col2;需求2: 把原表数据变成以下格式
a b '1-2-3'
c d '4-5-6'selectcol1,col2,concat_ws('-',collect_list(cast(col3 as string)))
fromrow2col2
group bycol1, col2;


http://www.ppmy.cn/server/144825.html

相关文章

乐鑫ESP32物联网方案,设备人机交互技术应用,启明云端乐鑫代理商

随着技术的不断革新&#xff0c;人机交互已经从简单的输入输出指令&#xff0c;发展到能够理解人类意图的复杂系统。从刚开始的命令行界面到今天的触摸屏和语音识别&#xff0c;人机交互的每一次进步都提升了我们与机器的互动效率。 人机交互的核心在于理解人类的行为和需求&a…

CodeIgniter架构和处理流程

CodeIgniter是一个轻量级的PHP框架&#xff0c;专为小到中型的Web应用开发设计&#xff0c;它以其简洁、灵活和易于学习的特点而受到开发者的喜爱。以下是对CodeIgniter架构和处理流程的解释&#xff1a; 一、CodeIgniter架构 CodeIgniter遵循经典的MVC&#xff08;Model-Vie…

2025考研报名人数预测380万?考研还是考公,二者历年报录比分析

一、历年考研报名人数分析 从2015年到2023年&#xff0c;研究生报名人数呈现出明显的上升趋势&#xff0c;2024年考研人数出现了近10年的首次下降。下图为2015-2024年考研报名人数及增长率的可视化图形&#xff1a; 分析上图可知&#xff1a; 2015年至2022年&#xff0c;考研…

Jenkins-Gitlab 前端项目自动化部署

1. 机器准备 开发10.0.0.204gitlab10.0.0.201jenkins10.0.0.200web10.0.0.202 2. 开发主机配置 创建密钥对&#xff0c;将公钥添加到gitlab账号的ssh密钥中 [rootdev ~]#ssh-keygen [rootdev ~]#cat /root/.ssh/id_rsa.pub 复制远程仓库的内容到本地 [rootdev ~]#git clone …

如何安全删除 Linux 用户帐户和主目录 ?

Linux 以其健壮性和灵活性而闻名&#xff0c;是全球服务器和桌面的首选。管理用户帐户是系统管理的一个基本方面&#xff0c;包括创建、修改和删除用户帐户及其相关数据。本指南全面概述了如何在 Linux 中安全地删除用户帐户及其主目录&#xff0c;以确保系统的安全性和完整性。…

【Github】如何使用Git将本地项目上传到Github

【Github】如何使用Git将本地项目上传到Github 写在最前面1. 注册Github账号2. 安装Git工具配置用户名和邮箱仅为当前项目配置&#xff08;可选&#xff09; 3. 创建Github仓库4. 获取仓库地址5. 本地操作&#xff08;1&#xff09;进入项目文件夹&#xff08;2&#xff09;克隆…

AWS EventBridge 和 Lambda 监控 ECS 事件并发送钉钉通知

在现代云原生架构中,Amazon Elastic Container Service (ECS) 是一项非常流行的容器编排服务。它允许您轻松地运行和管理容器化应用程序,并提供了许多有用的功能,如自动扩展、负载均衡和服务发现等。然而,随着应用程序的复杂性不断增加,有效监控 ECS 事件变得至关重要,以确保应…

数据结构与算法——1120——时间空间效率问题求边界值

目录 1、效率问题 1、时间复杂度 1、O(1) 2、O(n) 3、O(n) 或O(n*log2n)——n倍的log以2为底n的对数 例题 4、O(n) 2、空间复杂度 3、数组和链表 2、面试题之求边界值 题目 解答 &#xff08;1&#xff09;-i &#xff08;2&#xff09;~i &#xff08;3&#x…