hive 函數


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM