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