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.pswp.cn/news/396468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396468.shtml
英文地址,請注明出處:http://en.pswp.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…