数据仓库技术及应用(Hive函数)

一、Hive函数

1.函数概述

从函数输入与输出角度来看,函数可分为:

(1)标准函数

以一行数据中心的一列或多列数据作为输入参数,返回的结果是一个值的函数。

(2)聚合函数

以多行中的零个到多个列的数据作为输入,返回单一值的函数。

(3)表生成函数

接受零个或多个输入,产生多列或多行输出。

2.查看函数 

show functions命令可以显示当前Hive会话中所加载的所有函数,包括内置函数与自定义函数。

#查看函数详情,在Hive命令行中运行命令
DESCRIBE FUNCTIONS <function_name>;

函数更多详细文档可以通过增加EXTENDED关键字查看。 

3.调用函数

  调用函数直接在HiveSQL中使用函数名调用,如需传入参数,直接传入相应参数即可调用。

函数调用可在SELECT与WHERE子句中实现,具体包含下面3种典型情况:

# table 表中选取 col1 和 col2 列的值,并将它们连接成一个字符串,作为结果集的一列
SELECT concat(col1,col2) AS x FROM table;# 连接两个字符串常量 'abc' 和 'def',并返回连接后的结果
SELECT concat(‘abc’,‘def’);# 从 table 表中选取所有列的数据,并筛选出 col 列的长度小于 10 的记录。
SELECT * FROM table WHERE length(col)<10;

二、内置函数 

  • 字符处理
  • 类型转换
  • 聚合运算
  • 数学计算
  • 日期计算 

1.字符函数 

返回值函数签名描述
stringconcat(a, b,...)它返回从a后串联b产生的字符串
stringconcat_ws(sep,a,b,...)与concat类似,但第一个参数为指定的连接符
stringconcat_ws(sep,array<string>)与concat_ws类似,但拼接的是指定array中的元素
array<>split(str,pat)按正则表达式pat来分割字符串str,并将分割后的结果以数组返回
map<string,string>str_to_map(text[,deli1,deli2])将字符串转换为map,第一个参数是需要转换的字符串,第二个参数是元素之间分隔符,默认”,”,第三个参数是键值分隔符默认“=”
intinstr(str,substr)查找字符串str中子字符串substr出现的位置,如果查找失败返回0
stringsubstr(a,start[,len])对字符串a从start位置开始截取长度为len的字符串并返回
intlocate(substr,str[,pos])查找字符串str中pos位置后字符串substr第一次出现的位置
intlength(a)返回字符串长度
stringlower(a)将字符串中所有字母转换成小写
stringupper(a)将字符串中所有字母转换成大写
# 在零售数据顾客表中转换顾客姓名为全大写
select upper(concat_ws('',customer_fname,customer_lname))as fullname
from customers limit 10;

 

2.聚合函数 

常用包括count、sum、max/min、avg等。与标准函数的不同之处在于,聚合函数是在一组多行数据中进行计算并返回单一值的函数。

3.类型转换函数

如下表:

返回值函数签名描述
binarybinary(string|binary)将输入的值转换成二进制
<type>cast(expr as <type>)将expr转换成type类型,转换失败返回NULL

4.数学函数 

通常针对数据类型进行操作。

doubleround(a)返回对a四舍五入的值,小数位为0
doubleround(a,d)返回对a四舍五入的值,并且保留d位小数
bigintfloor(a)向下取整,如floor(3.84) = 3
doublerand(),rand(seed)返回随机数,可指定随机因子seed

5.日期函数

返回值函数签名描述
stringfrom_unixtime(unixtime[,format])将时间的秒值转换成format格式,如”yyyy-MM-dd hh:mm:ss”
bigintunix_timestamp()获取当前本地时区下的时间戳
bigintunix_timestamp(date)将”yyyy-MM-dd hh:mm:ss”格式的时间字符串转为时间戳
stringto_data(timestamp)返回时间字符串的日期部分
intyear(date)返回时间字符串的年份部分
intmonth(date)返回时间字符串的月份部分
intday(date)返回时间字符串的天
inthour(date)返回时间字符串的小时
intminute(date)返回时间字符串的分钟
intsecond(date)返回时间字符串的秒钟
intdatediff(startdate,enddate)计算开始时间到结束时间的天数
stringdate_add(startdate,days)从startdate时间开始加上days天
stringdate_sub(startdate,days)从startdate时间开始减去days天
# 统计月度订单数量
select from_unixtime(unix_timestamp(order_date),"yyyy-MM")as year_month,
count(order_id) from orders
group by from_unixtime(unix_timestamp(order_date),"yyyy-MM")

6.条件函数

返回值函数签名描述
Tif(testCondition,valueTrue,valueFalseOrNull)如果testCondition为True,返回valueTrue,否则返回valueFalse
booleanisnull(a)如果a为Null返回True,否则返回False
booleanisnotnull(a)如果a不为Null返回True,否则返回False
Tnvl(value,defaultValue)如果value为Null,返回defaultValue,否则返回value
Tcoalesce(v1,v2,…)返回第一个非Null的值,如coalesce(NULL,1,2)=1
Tcase a when b then c [when d then e] [else f] end当a=b时返回c,当a=d时返回e,否则返回f
Tcase when a then b [when c then d] [else e] end当a=true返回b,当c=true返回d否则返回e
voidassert_true(condition)用于测试,当condition=false抛出异常

 

#  根据商品价格将商品分为3个级别:0~100、100~200及200以上,并分别统计各档商品个数。
select level,count(*)from ( select *,
case when product_price<100 then 1
when product_price between 100 and 200 then 2
else 3 end as level
from products ) as a group by level;

7.集合函数

集合函数用于对集合进行操作。

eg.雇员表empdb.emp,使用集合函数查询其中所有员工所在部门的名称及总数。

use empdb;
select name,map_keys(depart_title),size(depart_title)from emp;

8.表生成函数

可以将一个或多个输入值转换为多行输出,该输出可以作为表来使用。

eg.(1)使用表生成函数将如下数据生成为表。

['Apple','Orange','Mongo']

['A':'Apple','O':'Orange']

select explode(array('Apple','Orange','Mongo'));
select explode(map('A','Apple','O','Orange'));

 (2)将json字符串"{"name":"Jason","age":"18"}"转换为表

select json_tuple('{"name":"Jason","age":"18"}','name','age');

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

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

相关文章

HBuilder X运行项目到微信开发者工具调试和发布Uniapp小程序

1.下载和安装 HBuilderX hbuilder首页&#xff1a;https://www.dcloud.io/hbuilderx.html 下载hbuilder编辑器,选择对应的系统,Windows和mac正式版即可,下载后免安装直接点击即可使用。 打开HBuilder之后&#xff0c;它会要求你注册一个用户&#xff0c;然后才可以使用。 …

如何预览XtraGrid控件

如何预览XtraGrid。 private void ShowGridPreview(DevExpress.XtraGrid.GridControl grid) {// Check whether the Grid Control can be previewed.if(!grid.IsPrintingAvailable) {MessageBox.Show("The DevExpress.XtraPrinting Library is not found", "Er…

使用 Scapy 库编写 TCP 窗口大小探测攻击脚本

一、介绍 1.1 概述 TCP窗口大小探测攻击是一种信息收集攻击&#xff0c;攻击者通过向目标服务器发送特制的TCP数据包&#xff0c;探测目标服务器的TCP接收窗口大小&#xff08;TCP Window Size&#xff09;。了解目标服务器的TCP接收窗口大小&#xff0c;可以帮助攻击者优化后…

【漏洞复现】CraftCMS ConditionsController.php 代码执行漏洞(CVE-2023-41892)

0x01 产品简介 Crat CMS是一个开源的内容管理系统&#xff0c;它专注于用户友好的内容创建过程&#xff0c;逻辑清晰明了&#xff0c;是一个高度自由&#xff0c;高度自定义设计的平台&#xff0c;可以用来创建个人或企业网站也可以搭建企业级电子商务系统。 0x02 漏洞概述 …

单链表的头插法 尾插法----期末复习2

对于头插法与尾插法创建单链表的示意图&#xff1a; ### 头插法 初始为空链表&#xff1a; L -> NULL 每次插入一个节点&#xff0c;如插入节点3&#xff1a; L -> |3| -> NULL ^ L 接着插入节点2&#xff1a; L -> |2| -> |3| -> NULL ^ …

万兴优转 v15 解锁版安装教程(全能音视频格式转换器)

前言 Wondershare UniConverter&#xff08;万兴优转&#xff09;国产全能音视频格式转换器。万兴格式转换器具有音视频格式转换、合并视频、视频压缩、视频编辑、视频录制、下载视频、元数据修复、VR视频转换、字幕编辑器、GIF制作、DVD刻录等一站式视频工具箱功能。万兴转换…

程序员如何转行成为一个漫画自媒体-连载3

与漫画师的初步合作几期之后&#xff0c;在相互间的沟通中&#xff0c;我尽我所能以让漫画师的工作更加顺畅。 比如我逐步完善的漫画文案模板主要包括以下几点&#xff1a; ① 按照场景划分单元&#xff0c;每个场景包含“场景描述”&#xff08;尽可能清晰地描绘场景细节&am…

数新网络签单国泰君安:利用数据服务平台提升金融业务用数能力

近日&#xff0c;数新网络与国泰君安证券股份有限公司&#xff08;以下简称“国泰君安”&#xff09;达成了数据服务平台升级项目的签约。这一项目的推进将更好地服务于国泰君安内部业务部门的数据需求&#xff0c;帮助数据平台更加有效地实现提升业务响应效率的目标&#xff0…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:AI智能监控 用于沙滩救援

以色列的一个团队在人工智能领域取得的成果引起了轰动。 今天他们取得的成果源于多年前的一个想法。Netanel Eliav 和 Adam Bismut 是校园时代的旧伙伴&#xff0c;当时他们想要解决一个可以改变世界的问题&#xff0c;由此引出这样一个想法&#xff1a;溺水的 Bismut 漂流到死…

【数据分析基础】实验二 Python程序流程控制、函数设计与使用

实验目的 熟悉选择结构嵌套时代码的缩进与对齐。理解带 else 子句的循环结构执行流程和条件表达式 value1 if condition else value2 的用法。熟悉使用循环和异常处理机构对用户输入进行约束的用法。掌握Python程序中进行选择、循环流程控制的语句、语法&#xff0c;熟练运用选…

SpringAI--使用免费API-Key和API进行配置

目录 &#x1f4da; 前言 &#x1f4d1;Spring AI简介 &#x1f4ac; 项目配置 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 编写Controller控件 &#x1f4da; 前言 &#x1f4d1;博客主页&#xff1a;丘比特惩罚陆 &#x1f496;欢迎关注&#xff1a;点赞收藏⭐留言✒…

【Vue】getters

除了state之外&#xff0c;有时我们还需要从state中筛选出符合条件的一些数据&#xff0c;这些数据是依赖state的&#xff0c;此时会用到getters getters就类似于属性中的计算属性 这个getter只有获取&#xff0c;如果需要设置修改&#xff0c;还是需要经过mutations getters里…

C++网络编程基础

文章目录 协议局域网通信IP 地址网络通信的本质tcp 和 udp 协议网络字节序网络主机数据转化接口 协议 协议&#xff1a;收到数据后&#xff0c;多出来的那一部分&#xff0c;也叫一种 “约定”&#xff0c;一整套的自硬件到软件&#xff0c;都有协议&#xff0c;需要有人定制&a…

如何使用Python在word文档中创建表格

如何使用Python在word文档中创建表格 介绍效果代码 介绍 本文将介绍如何使用Python库python-docx在Word文档中创建表格。 效果 插入表格前的word文档&#xff1a; 插入表格后的word文档&#xff1a; 代码 from docx import Document# 加载现有的Word文档 doc Document(…

重新学习STM32(1)GPIO

概念简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚。STM32 芯片通过 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、控制以及数据采集的功能。 GPIO被分成很多组&#xff0c;比如 GPIOA和GPIOB等。所有的 GPIO引脚都有基本的…

C语言期末概念题100道

花括号“{”和“}”只能作为函数体的定界符 F。花括号不仅可以作为函数体的定界符&#xff0c;还可以用于其他块结构&#xff0c;如控制语句&#xff08;if、while、for等&#xff09;和复合语句。 C程序中的每行只能写一条语句 F。C语言中每行可以包含多条语句&#xff0c;只需…

【护网简历模版】改了10个在校大学生的简历的感想

护网简历模版 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 在上篇文章中&#xff1a;如何面试…

前端JS必用工具【js-tool-big-box】学习,获取当前浏览器向上滚动还是向下滚动,获取当前距离顶部和底部的距离

这一小节&#xff0c;我们说一下 js-tool-big-box 添加的最新工具方法&#xff0c;在日常前端开发工作中&#xff0c;如果网页很长&#xff0c;我们就需要获取当前浏览器是在向上滚动&#xff0c;还是向下滚动。如果向上滚动&#xff0c;滚动到0的时候呢&#xff0c;需要做一些…

Linux网络命令——netstat

netstat是Linux系统中非常有用的网络工具&#xff0c;被称为是网络监控中的军工刀&#xff0c;足见其地位。 传统上&#xff0c;它用于问题确定而不是性能测量&#xff0c;但是也可用于查看网络上的流量&#xff0c;以确定性能问题是否由于网络阻塞引起。 netstat用于显示与I…

建筑二建考试试题及答案,分享几个实用搜题和学习工具 #微信#经验分享

大学生必备的搜题工具&#xff0c;专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索&#xff0c;每道题目都有详细的讲解&#xff0c;每个都堪称大学神器。 1.掌上识别王 一个可以快速纸质书籍上内容扫描成电子档的工具&#xff0c;为了方便大家快速搜…