hiveql函数笔记(二)

1、数据查询

//提高聚合的性能

SET hive.map.aggr=true;

SELECT count(*),avg(salary) FROM employees;

//木匾不允许在一个查询语句中使用多于一个的函数(DISTINCT。。。)表达式

SELECT count(DISTINCT symbol) FROM stocks;

 

表生成函数:

explode(APPAY array)  返回0到多行结果,每行都对应输入的array数组中的一个元素

explode(ARRAY<TYPE> a)  对于a中的每个元素,explode()会生成一个记录包含这个元素

explode(ARRAY<TYPE> a)  对于a中的每个元素,explode()会生成一行记录包含这个元素

inline(ARRAY<STRUCT[,STRUCT]>)  将结构体数组提取出来并插入到表中

json_tuple(STRING jsonStr,p1,p2,..,pn)  对输入的JSON字符串进行处理,合格get_json_object这个UDF类似,不过更高效,其通过一次调用就可以获取多个键值。

parse_url_tuple(url,partname1,partname2,..,partNameN)  其中N>=1,从URL中解析出N个部分信息。其输入参数是:URL,以及多个要抽取的部分的名称。部分名称是大小写敏感的,而且不应该包含有空格:HOST,PATH,QUERY,REF,PROTOCOL,AUTHORITY,FILE,USERINFO,QUERY:<KEY_NAME>

 

其他内置函数:

ascii(STRING s)  返回字符串s中首个ASCII字符的整数值

base64(BINARY bin)  将二进制值bin转换成基于64位的字符串

cast(<expr> as <type>)  将expr转换成type类型的。例如:cast('1' as BIGINT)将会将字符串'1'转换成BIGINT数值类型。如果转换失败,则返回NULL

concat(BINARY s1,BINARY s2,..)  将二进制字节码按次序拼接成一个字符串

concat(STRING s1,STRING s2,..)  将字符串s1,s2等拼接成一个字符串。例如:concat('ab','cd')的结果是'abcd'

concat)ws(STRING separator,STRING s1,STRING s2,...)  和concat类似,不过是使用指定的分隔符进行拼接.

decode(BINARY bin,STRING charset)  使用指定的字符集charset将二进制值bin解码成字符串(支持的字符集有:'UTF-16')。如果任一输入参数为NULL,则结果返回NULL

encode(STRING src,STRING charset)  使用指定的字符集charset将字符串src编码成二进制值(支持的字符集有:'US-ASCII','ISO-8859-1','UTF-8',UTF-16BE','UTF-16LE','UTF-16')),如果任一输入参数为NULL,则结果为NULL

find_in_set(STRING s,STRING commaSeparatedString)  返回在以逗号分隔的字符串中s出现的位置,如果没有找到则返回NULL

format_number(NUMBER X,INT d)  将数值x转换成'#,###,###,##'格式字符串,并博保留d位小数。如果d为0,那么输出值就没有小数点后面的值。

get_json_object(STRING json_string,STRING path)  从给定路径上的JSON字符串中抽取JSON对象,并返回这个对象的JSON字符串形式。如果输入的JSON字符串是非法的,则返回NULL

in_file(STRING s,STRING filename)  如果文件名为filename的文件中有完整一行数据和字符串s完全匹配的话,则返回true

instr(STRING str,STRING substr)  查找字符串str中子字符串substr第一次出现的位置

length(STRING s)  计算字符串s的长度

locate(STRING substr,STRING  [,INT pos])  查找在字符串str中的pos位置后字符串substr第一次出现的位置

lpad(STRING s,INT len,STRING pad)  从左边开始对字符串s使用字符串pad进行填充,最终达到len长度为止。如果字符串s本身长度比len大的话,那么多余的部分被去除掉。

rpad(STRING s,INT len,STRING pad)  从右边开始对字符串s......

ltrim(STRING s)  将字符串s前面出现的空格全部去除掉。例如trim(' hive ')的结果是'hive '

regexp_replace(STRING s,STRING regex,STRING replacement) 按照JAVA正则表达式regex将字符串s中符合条件的部分替换成replacement所指定的字符串a.如果replacement部分是空的话,那么符合正则的部门就会背去除掉。例如regexp_replace('hive','[ie]','z')的 结果是'hzvz'

repeat(STRING s,INT n)  重复输出n次字符串s

reverse(STRING s)  反转字符串

rtrim(STRING s)  将字符串s后面出现的空格全部去除掉。例如trim('hive')的结果是'hive'

split(STRING s,STRING pattern)  按照正则表达式pattern分隔字符串s,并将分割后的部分以字符串数组的方式返回。

str_to_map(STRING s,STRING delim1,STRING delim2)  将字符串s按照按指定分隔符转换成map,第一个参数是输入的字符串,第二个参数是键值对之间的分隔符,第三个分隔符是键和值之间的分隔符

substr(STRING s,STRING start_index)  对于字符串s,从start位置开始截取length长度的字符串,作为字符串。例如:substr('abcdefgh',3,2)的结果是'cd'

unix_timestamp(STRING date,STRING pattern)  将指定时间字符串格式字符串转换成Unix时间戳,如果格式不对则返回0,例如unix_timestamp('2009-03-20','yyyy-MM-dd')=1237532400

to_date(STRING timestamp)  返回时间字符串的日期部分,例如:to_date("1970-01-01 00:00:00")="1970-01-01"

year(STRING date)  返回时间字符串中的年份并使用INT类型表示。例如:year("1970-01-01") = 1970

month....day...hour...minute...second...weekofyear同理

datediff(STRING enddate,STRING startdate)  计算开始时间startdata到结束时间enddata相差的天数。例如:datediff('2009-03-01','2009-02-27')=2

date_add(STRING startdate,INT days)  为开始时间startdata增加days天,例如data_sub('2008-12-31',1)='2008-12-30'

 

谓词操作符

A<=>B   如果A和B都为NULL则返回TRUE,其他的和等号(=)操作符的结果一致,如果任一为NULL则结果为NULL

A<>B,A!=B  A或者B为NULL则返回NULL,如果A不等于B则返回TRUE,反之返回FALSE

A[NOT] BETWEEN B AND C  如果A的值大于或等于B而且小于或等于C,则结果为TRUE

A[NOT] like B  B是一个SQL下的简单正则表达式

A RLIKE B,A REGEXP B  B是一个正则表达式,如果A与其相匹配,则返回TRUE。

 

参考文献:《Hive编程指南》

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

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

相关文章

jQuery 常用的方法

<!DOCTYPE html><html lang"en"><head> <meta charset"utf-8"/> <title>品牌列表案例</title> <script src"js/jquery-2.1.1.min.js" rel"script"></script> <script…

swift 从手机选照片_19元起!定制专属手机壳!还可免费打印照片...

△剧透&#xff1a;文末有福利现在的年轻人体内涌动的都是追求有趣有特色的灵魂希望自己是这条gai最独一无二的仔撞衫撞包撞手机壳可以说是当代年轻人三大时尚忌讳尤其是手机壳极为重要毕竟换壳≈换机只需要几十元买新壳就可以拥有换新机般的仪式感不过作为手机壳老手都知道在某…

新手也能学会本地调试微信,natapp 官网映射

本地调试微信的新手指引~ 照着配置&#xff0c;一定可以配置成功&#xff0c;实现本地调试微信&#xff0c;公司好几个同事按照我写的步骤&#xff0c;都独立配成功了。 1.首选在natapp注册一个账号&#xff0c;申请免费隧道或者购买隧道&#xff0c;我买了一个月9元的付费隧道…

在JavaScript中反转字符串的三种方法

This article is based on Free Code Camp Basic Algorithm Scripting “Reverse a String”本文基于Free Code Camp基本算法脚本“ Reverse a String ” Reversing a string is one of the most frequently asked JavaScript question in the technical round of interview. …

c实现三角形角度大于一个值_初中数学三角形知识点小结

▊ 三角形两边定理&#xff1a;三角形两边的和大于第三边。推论&#xff1a;三角形两边的差小于第三边。▊ 三角形中位线定理三角形的中位线平行于第三边&#xff0c;并且等于它的一半。▊ 三角形的重心三角形的重心到顶点的距离是它到对边中点距离的2倍。在三角形中&#x…

【Spring】使用Spring和AMQP发送接收消息(下)

为什么80%的码农都做不了架构师&#xff1f;>>> 上篇讲了RabbitMQ连接工厂的作用是用来创建RabbitMQ的连接&#xff0c;本篇就来讲讲RabbitMQ的发送消息。通过RabbitMQ发送消息最简单的方式就是将connectionFactory Bean注入到服务层类中&#xff0c;并使用它创建C…

微软u盘安装工具_使用微软Winget工具安装软件教程

对于系统管理员来说&#xff0c;一款好用的软件包管理工具可以大大提高安装、部署、管理软件的效率。可之前只有 MscOS 和 Linux 官方才有软件包管理工具&#xff0c;微软官方现在终于为Windows系统发布了一款名为Winget的软件包管理工具&#xff0c;MS酋长下面就来为大家演示一…

ZOJ2930 The Worst Schedule(最小割)

题目大概说有n个任务&#xff0c;每个任务可以提前或推迟&#xff0c;提前或推迟各有一定的费用&#xff0c;有的任务一旦推迟另一个任务也必须推迟&#xff0c;问怎么安排任务使花费最少&#xff0c;且最少花费的条件下提前的任务数最多能多少。 问题就是要把各个任务分成两个…

为什么要free释放内存_为什么在Free Code Camp上列出一份工作要花1,000美元?

为什么要free释放内存by Michael D. Johnson迈克尔约翰逊(Michael D.Johnson) 为什么在Free Code Camp上列出一份工作要花1,000美元&#xff1f; (Why does it cost $1,000 to list a job on Free Code Camp?) I’ve recently spoken with employers looking for JavaScript …

python访问注册表_读取注册表的Python代码

如果“Uninstall”中有超过1024个子键怎么办&#xff1f;Use _winreg.QueryInfoKey(key)Python2:import errno, os, _winregproc_arch os.environ[PROCESSOR_ARCHITECTURE].lower()proc_arch64 os.environ[PROCESSOR_ARCHITEW6432].lower()if proc_arch x86 and not proc_ar…

ios 动画 隐藏tabbar_UITabBarViewController 的底部 tabBar 隐藏

iOS pushViewController 时候隐藏 TabBar 的可以用interfaceUIViewController (UINavigationControllerItem)property(nonatomic,readonly,strong)UINavigationItem*navigationItem;// Created on-demand so that a view controller may customize its navigation appearance.p…

JS进阶之---函数,立即执行函数

一、函数 函数声明、函数表达式、匿名函数 函数声明&#xff1a;使用function关键字声明一个函数&#xff0c;再指定一个函数名&#xff0c;叫函数声明。function name () { … } 函数表达式&#xff1a;使用function关键字声明一个函数&#xff0c;但未给函数命名&#xff0c;…

主线程中有多个handler的情况

https://www.cnblogs.com/transmuse/archive/2011/05/16/2048073.html转载于:https://www.cnblogs.com/genggeng/p/9806415.html

RandomForestClassifier(随机森林检测每个特征的重要性及每个样例属于哪个类的概率)...

#In the next recipe, well look at how to tune the random forest classifier. #Lets start by importing datasets:from sklearn import datasets X, y datasets.make_classification(1000)# X(1000,20) #y(1000) 取值范围【0,1】from sklearn.ensemble import RandomFores…

单因素方差分析_基于R语言开展方差分析(一)——单因素方差分析

基本原理方差分析(Analysis of variance, ANOVA)是用于两个或两个以上样本均数比较的方法&#xff0c;还可以分析两个或多个研究因素的交互交互作用以及回归方程的线性假设检验等。其基本思想是将全部观察值间的变异——总变异按设计和需要分解成两个或多个组成部分&#xff0c…

个税10% 人群_人群管理如何使我们的搜索质量提高27%

个税10% 人群by Thanesh Sunthar由塔内什桑塔尔(Thanesh Sunthar) 人群管理如何使我们的搜索质量提高27&#xff05; (How Crowd Curation Improved Our Search Quality by 27%) The bigger your platform gets, the more vital search becomes. And if you run a content-hea…

mysql增数据语句_Mysql 数据增删改查语句

插入数据 insert#1. 插入完整数据(顺序插入)#语法一&#xff1a;insert into 表名(字段1,字段2,字段3…字段n) values (值1,值2,值3…值n);#语法二&#xff1a;insert into 表名 values (值1,值2,值3…值n);#2. 指定字段插入数据#语法&#xff1a;insert into 表名(字段1,字段2…

Python+Flask.0010.FLASK即插视图之自定义视图类及修饰器

2019独角兽企业重金招聘Python工程师标准>>> 即插视图; 说明: FLASK的视图灵感来自于DJANGO的基于类而非基于函数的通用视图,主要目的是为了解决多个视图函数之间已经实现的部分,通过类继承的方式继承到其它视图,总之为了一点,就是少写代码,然后通过add_url_rule让我…

InputStream和Reader,FileInputStream和 FileReader的区别

一、InputStream和Reader的区别 InputStream和Reader都可以用来读数据(从文件中读取数据或从Socket中读取数据)&#xff0c;最主要的区别如下: InputStream用来读取二进制数(字节流)&#xff0c;而 Reader用来读取文本数据&#xff0c;即 Unicode字符。那么二进制数与文本数据有…

NGUI之输入文本框的使用

ToolBar中的两个红圈 另&#xff0c;代码如下&#xff1a;只需要定义一个变量即可&#xff0c;然后将控件drag到那里&#xff0c;真的是灰常方便呀 还有一个就是保存了&#xff08;OK的响应&#xff09;,可以简单地理解为存档或读档 转载于:https://www.cnblogs.com/YTYMblog/p…