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') | 根據日期划分季度 |
