精华内容
下载资源
问答
  • Hive行转列函数与列转行函数
    2022-02-24 10:05:16

    行转列

    concat(string,string……):字符串连接
    concat_ws(参数1,string,string……):参数1是分隔符,按分隔符分隔连接字符串
    collect_set(字段名):将字段的值去重,产生array类型字段

    列转行

    Explode(字段名):将某列中的array或map拆分成多行
    Split(字段名,分隔符):根据分隔符来切分某字段元素
    Lateral view:写在split,explode等UDTF前,将一列数据拆成多行,再聚合

    更多相关内容
  • 行转列 explode和lateral view: 数据: 示例: select explode(category) from movie; select * from movie lateral view explode(category) table_tmp as category_name; category_name是别名,from...

    行转列

    explodelateral view

    数据:

    示例:

    select explode(category) from movie;

    select * from movie lateral view explode(category) table_tmp as category_name;

    category_name是别名,from后面看做一张表

     

    窗口函数


    在进行分组聚合以后 ,还要操作聚合以前的数据 使用到窗口函数

    默认是偏移量到当前行,适用sum,count等函数

    偏移量到分组范围内,适用max,min等聚合函数:

    rows between unbounded preceding and unbounded following

    参考:https://zhuanlan.zhihu.com/p/92654574

     

    排序函数

    RANK()                           排序相同时会重复,总数不会变
    DENSE_RANK()             排序相同时会重复,总数会减少
    ROW_NUMBER()           会根据顺序计算

    示例:按每科分组,按分数排名

    select name,subject,core,
    rank() over(partition by subject order by score desc) rp,
    dense_rank() over(partition by subject order by score desc) drp,
    row_number() over(partition by subject order by score desc) rmp
    from score;

    返回:

    UDF

    UDF(User-Defined-Function) 一进一出
    UDAF(User-Defined Aggregation Function) 聚集函数,多进一出
         类似于:count/max/min
    UDTF(User-Defined Table-Generating Functions) 一进多出
          如lateral view explore() split()

    自定义UDF步骤:

    1,继承org.apache.hadoop.hive.ql.UDF

    2,实现evaluate函数;evaluate函数支持重载

    3,在hive的命令行窗口创建函数
          a):添加jar:add jar linux_jar_path
          b):创建function:create [temporary] function [dbname.]function_name AS class_name;

    4,在hive的命令行窗口删除函数
         Drop [temporary] function [if exists] [dbname.]function_name;

    实例:

    maven依赖:

    <dependencies>
    		<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
    		<dependency>
    			<groupId>org.apache.hive</groupId>
    			<artifactId>hive-exec</artifactId>
    			<version>1.2.1</version>
    		</dependency>
    </dependencies>

    实现类:

    import org.apache.hadoop.hive.ql.exec.UDF;
    
    public class Lower extends UDF {
    
    	public String evaluate (final String s) {
    	
    		if (s == null) {
    			return null;
    		}
    		return s.toLowerCase();
    	}
    }

    打成jar包上传到服务器/opt/module/jars/udf.jar

    将jar包添加到hive的classpath
    hive (default)> add jar /opt/module/datas/udf.jar;

    创建临时函数与开发好的java class关联
    hive (default)> create temporary function mf as "com._51doit.func.MyFunction";

    即可在hql中使用自定义的函数strip
    hive (default)> select ename, mylower(ename) lowername from emp;

    删除: drop function mylower;

     

     

     

    展开全文
  • Hive行转列函数

    2020-10-03 15:28:58
    Hive行转列函数 concat select e.empno,e.ename,e.job,concat(e.empno,e.ename,e.job) from emp e; cancat_ws:concat加强版,但是只能够处理string,所以需要强转 select e.empno,e.ename,e.job,concat_ws('-',case...

    Hive行转列函数

    concat

    select e.empno,e.ename,e.job,concat(e.empno,e.ename,e.job) from emp e;
    

    cancat_ws:concat加强版,但是只能够处理string,所以需要强转

    select e.empno,e.ename,e.job,concat_ws('-',case(e.empno as string),e.ename,e.job) from emp e;
    

    collect_list:多行转一列,不去重

    select collect_list(deptno) from emp;
    

    collect_set:多行转一列,去重

    select collect_set(deptno) from emp;
    
    展开全文
  • Hive常用函数行转列转行函数

    千次阅读 2021-01-13 17:09:09
    一、行转列函数将类似于下面的形式:ABC转化为类似于下面的形式:A B C即将多行转化为一行,排在一行了,就成了一列concat函数:select concat('A','B','C');concat_ws函数:select concat_ws('|',array('A','B','C'...

    一、行转列函数

    将类似于下面的形式:

    A

    B

    C

    转化为类似于下面的形式:

    A B C

    即将多行转化为一行,排在一行了,就成了一列

    concat函数:select concat('A','B','C');

    concat_ws函数:select concat_ws('|',array('A','B','C'));

    collect_set()函数

    说到explode()函数就不得不说一下collect_set()函数。collect_set(col)函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。例如,要统计每种no下的score,直接对no分组后对score进行collect_set操作,如下:

    select no,collect_set(score) from tablss group by no;

    这样,就实现了将列转行的功效,但是注意只限同列基本数据类型,函数只能接受一列参数。

    二、列转行函数:EXPLODE,LATERAL VIEW

    把类似于

    A , B , C

    转化为

    A

    B

    C

    explode函数:select explode(array('A','B','C'));

    select explode(map('liubei','18','zhangfei','19'));

    补充:split函数

    hive> select split('ab_cd_ef', '\_')[0] from test;

    ab

    hive> select split('ab?cd_ef', '\\?')[0] from test;

    ab

    结合LATERAL VIEW使用参考:https://blog.csdn.net/lixinkuan328/article/details/102187152

    展开全文
  • hive行转列转行函数使用说明

    千次阅读 2021-12-16 17:53:44
    hive,concat_ws(),collect_set(),collect_list(), LATERAL VIEW explode
  • Hive行转列列转行函数使用

    千次阅读 2021-05-30 19:04:53
    行转列函数说明: CONCAT(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字 符串; CONCAT_WS(separator, str1, str2,...):它是一个特殊形式的 CONCAT()。第一个参数剩余参 数...
  • Hive中的行转列函数

    2021-11-11 23:34:30
    使用desc function concat命令查看hive中的concat的使用的基本语法。 concat(string str1,string str2…) 返回字符串的串联。 concat_ws 使用desc function concat_ws命令查看hive中的concat_ws的使用的基本语法。 ...
  • Hive函数行转列

    万次阅读 2018-08-13 19:43:56
    介绍三种常用函数,空字段赋值,行转列,case when, 一、NVL函数 空字段赋值, 语法:nvl(string1,replaceValue),当某值为空时调用, 二、case when 就相当于java中switch case,记得最后一定要加end,else...
  • Hive-基础】行转列转行,窗口函数

    千次阅读 多人点赞 2020-08-03 22:43:06
    1)函数说明(可以是一行转,多行转一) CONCAT(string A, string B...):返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1, str2,...):它是一个特殊形式的 concat()。第一个参数...
  • 需求:假设某超市的订单表order如下...第一步:利用explode函数将info字段进行拆分及行转列。 regexp_replace(string A, string B, string C):正则表达式替换,将字符串A中的符合正则表达式B的部分替换为C; split(str
  • 1、HIVE多行 源数据样式 把CAMERA_NO,RESULT_DATA两列转换为CAMERA_NO字段的数据为列名,RESULT_DATA字段对应CAMERA_NO的数据为值 方法一:利用str_to_map函数 alter table ods.iot.iot_5060_iotdaq.5060_...
  • hive> select arch_value, industry from dim.company_arch_value_condition_tag limit 10; OK 高 IT互联网_IT信息技术 高 金融_银行业|金融_保险业|金融_资本市场_证券期货 高 教育 高 商贸 高 (除上
  • Hive行列转换函数

    千次阅读 2021-12-03 17:07:39
    -- 创建行转列测试数据表 CREATE TABLE IF NOT EXISTS dw.person ( name string, gender string, age int, hobby string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE ; -- 数
  • Hive 行转列转行

    2021-12-21 09:59:21
    hive 行列之间数据相互转换
  • explode(col):将hive中复杂的array或者map结构拆分成多行。 lateral view 用法:lateral view udtf(expression) tableAlias as columnAlias 解释:用于和split, explode等UDTF一起使用,它能够将一数据拆成...
  • Hive列转行函数

    千次阅读 2020-10-03 15:48:33
    Hive列转行函数 select split("a,b,c,d",','); 效果: select explode(split("a,b,c,d",',')); 效果: 案例: 原始数据 movie category 《疑犯追踪》 悬疑,动作,科幻,剧情 《Lie to me》 悬疑,警匪,动作,...
  • Hive行转列转行实现

    千次阅读 2021-01-22 15:39:39
    Hive函数 条件判断函数 nvl(value,default_value) - 如果value为null,返回default_value ;如果value不为null,返回value hive (ddl_create)> select nvl(null, 2); 2 Time taken: 0.343 seconds, Fetched: 1...
  • 行转列 多行合并为一 使用函数:concat_ws(‘,’,collect_set(column)) collect_list 不去重 collect_set 去重 column 的数据类型要求是 string 示例: 构建测试数据 vim row_to_col.txt a b 1 a b 2 a b 3 c d 4...
  • 一、关于使用函数的一些小方法 显示系统自带所有函数 show functions; 描述指定函数的作用 desc function 函数名; 描述函数的详情信息(一般是都是有例子的) desc function extended 函数名;...如一性别的数据均为男
  • Hive列转行、行转

    千次阅读 2020-08-06 23:33:08
    简单说一下Hive行转列转行的方式。
  • mysql跟hive列转行/行转列一样,但是多行转一行,一行转多行就不太一样了 链接:mysql 行转列,多行转一行,列转行,一行转多列 hive 启动hive时 ./hive -S (去除MR打印日志) hive命令行 set hive.exec.mode.local.auto=...
  • hive-转行和行转列

    万次阅读 2014-08-26 21:27:51
    1. 假设我们在hive中有两张表,其中一张表是存用户
  • HIVE行转列转行

    千次阅读 2019-05-15 16:14:21
    行转列 select dt_month,valid_num,unvalid_num from test.test_xw_rowtocol 数据如下 转换要求:行转列需保留列名,如下图 方式一:采用union all的形式 select dt_month ,'valid_num' as type ​ ,sum...
  • 一个联系人可能有多个号码,但是源表存的时候是放在一个字段的,分隔的形式也是多种多样,现在需要将它们一个个分开,实现行转列。 举个例子,源表(phone_info)为 name linkman_phone 小明 126;946:789*...
  • 1、转行1.1 相关函数的说明:concat(string1,string,...) //连接括号内字符串,数量不限。concat_ws(separator,string1,string2,...) //连接括号内字符串,数量不限,连接符为separator。collect_set(col) //此...
  • collect_list(video_name) from table1 group by username 测试结果 : 将collect_list替换为collect_set结果: 结论:collect_set和collect_list相当于做转行, 区别: collect_set会在数组内去重 collect_list...
  • 一、行转列 1.相关函数 CONCAT(string A/col, string B/col…) 返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1, str2,...) 它是一个特殊形式的 CONCAT()。 第一个参数剩余...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,139
精华内容 10,055
关键字:

hive行转列函数

友情链接: 4.rar