Hive 函數
!!!_a前面是類型
返回值 |
類型轉換函數 |
描述 |
type |
cast(expr as ) |
expr轉換成各種類型 |
binary |
bigary('string_a') |
將string_a轉換為二進制 |
double |
round(double_a,d) |
返回對a四舍五入並保留d位小數位的值 |
binary |
round(double_a) |
四舍五入a值 |
bigint |
floor(double a) |
a向下取整 |
double |
rand() |
返回一個double型隨機數 |
double |
power(double a,double p) |
a的p次冪 |
double |
abs(double a) |
計算a的絕對值 |
1.1 日期函數:
返回值 |
函數 |
描述 |
string |
from_unixtime(a) |
將a一連串數字轉換成時間 |
int |
unix_timestamp() |
獲得本地時間 |
bigint |
unix_timestamp('a') |
將a日期轉換成時間戳 |
string |
to_date('a') |
將a日期,返回日期部分 |
int |
year('a') |
將a日期,返回年份 |
int |
datediff() |
計算開始時間到結束時間相差的天數 |
string |
date_add(string stardate,intdays) |
從開始時間加上days |
string |
date_sub(string startdate,intdays) |
從開始時間減去days |
date |
current_date |
返回當前時間的日期 |
timestamp |
current_timestamp |
返回當前時間戳 |
string |
date_format() |
按指定格式返回時間date |
1.2 集合函數
返回值 |
函數 |
描述 |
int |
size(Map<K.V>) |
返回map中鍵值對個數 |
int |
size(Array) |
返回數組的長度 |
array |
map_keys(Map<K.V>) |
返回map中的所有key |
array |
map_values(Map<K.V>) |
返回map中的所有value |
boolean |
array_contains(Array, value) |
如該數組Array包含value返回true。,否則返回false |
array |
sort_array(Array) |
對數組進行排序 |
實例:hive> select size(array(1,1,2,3,4));
!!!注意都是小括號哈
1.3 條件函數
返回值 |
函數 |
描述 |
T |
if(boolean testCondition, T valueTrue, T valueFalseOrNull) |
如果testCondition 為true就返回valueTrue,否則返回valueFalseOrNull |
T |
nvl(T value, T default_value) |
value為NULL返回default_value,否則返回value |
T |
COALESCE(T v1, T v2, ...) |
返回第一非null的值,如果全部都為NULL就返回NULL |
T |
CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END |
如果a=b就返回c,a=d就返回e,否則返回f |
T |
CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END |
如果a=ture就返回b,c= ture就返回d,否則返回e |
boolean |
isnull( a ) |
如果a為null就返回true,否則返回false |
boolean |
isnotnull ( a ) |
如果a為非null就返回true,否則返回false |
1.4 聚合函數
返回值 |
函數 |
描述 |
N rows |
explode(array) |
對於array中的每個元素生成一行且包含該元素 |
N rows |
explode(MAP) |
每行對應每個map鍵值對 其中一個字段是map的鍵,另一個字段是map的值 |
N rows |
posexplode(ARRAY) |
與explode類似,不同的是還返回各元素在數組中的位置 |
N rows |
stack(INT n, v_1, v_2, ..., v_k) |
把k列轉換成n行,每行有k/n個字段,其中n必須是常數 |
tuple |
json_tuple(jsonStr, k1, k2, ...) |
從一個JSON字符串中獲取多個鍵並作為一個元組返回,與get_json_object不同的是此函數能一次獲取多個鍵值 |
string |
concat() |
連接字符串 |
實例 |
concat(year('1993-3-2'),'-',month('1231-6-4')) |
|
int |
quarter('1889-5-2') |
根據日期划分季度 |