row_number() over、nvl、from_unixtime、datediff、union、parse_url、parse_url_tuple、locate、split、substr、instr、concat、regexp_extract
row_number() over | 分组统计排序语法:ROW_NUMBER() OVER(PARTITION BY COLUMNORDER BY COLUMN) row_number() OVER (PARTITION BY COL1 ORDERBY COL2)表示根据COL1分组,在分组内部根据COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(该编号在组内是连续并且唯一的)。 分组统计排序: ROW_NUMBER() OVER (PARTITION BY video_type_name ORDER BY count(course_name) DESC) AS rnk select count(course_name) total,video_type_name,course_name, ROW_NUMBER() OVER (PARTITION BY video_type_name ORDER BY count(course_name) DESC) AS rnk from video_see_records group by video_type_name,course_name |
nvl | 空值转换函数,必须是null,''不行NVL(expr1, expr2): 备注: |
from_unixtime | 把时间戳格式的时间,转化为年月日时分秒格式的时间from_unixtime的参数要求为整数,且单位为秒。 如果从业务系统拿到的时间戳格式的时间单位为毫秒,则需要先将它转化为秒,方法如下 from_unixtime( int (timestamp_in_millisecond / 1000)) |
datediff | 两个时间参数的日期之差 |
parse_url | 函数parse_url,解析URL字符串parse_url(url, partToExtract[, key]) - extracts a part from a URL |
parse_url_tuple | 类似parse_url(),但它可以同时提取多个部分并返回返回值: string hive> select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1′, ‘HOST’) from dual; facebook.com hive> select parse_url_tuple(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘QUERY:k1’, ‘QUERY:k2’); v1 v2 |
locate | 非全量匹配locate(string substr, string str[, int pos]) join模糊匹配
除了将locate()直接写在where条件里,也可以使用row_number()来搭配使用。
|
split | 分割字符串函数语法: split(string str, string pat) 特殊字符 如果是在shell中运行,hive脚本执行,特别注意\\要写\\\\,则(前缀加上\\)注:有些特殊字符转义只需\,而有些需\\,eg.?。可能在语句翻译过程中经历经历几次转义。 |
substr | 字符串截取,下标第一种用法: substr(string A,int start)和 substring(string A,int start),用法一样 功效:返回字符串A从下标start位置到结尾的字符串 第二种用法: substr(string A,int start,int len)和 substring(string A,int start,int len),用法一样 功效:返回字符串A从下标start位置开始,长度为len的字符串 注意:substr下标start记做0或1都是从第一个开始,记做2是从第二个开始 |
instr | 模糊匹配instr(sourceStr,destStr,start,appearPosition) 最简单例子: 应用于模糊查询:instr(字段名/列名, ‘查找字段’) 应用于判断包含关系: |
trim | trim,只能将标准的英文空格删掉 |
concat | 用于将多个字符串连接成一个字符串
|
regexp_extract | 正则表达式,匹配截取 |
hive官网函数地址 | LanguageManual UDF - Apache Hive - Apache Software Foundation |
网速灾备。。 | |
为方便看懂转换了中文 | |
union | 去重 |
regexp_extract(string subject, string pattern, int index) | 返回使用模式提取的字符串。例如,regexp_extract('foothebar','foo(。*?)(bar)',2)返回'bar'。请注意,使用预定义的字符类时必须格外小心:使用'\ s'作为第二个参数将与字母s匹配;'\\ s'是匹配空格等所必需的。'index'参数是Java regex Matcher group()方法的索引。 |