精华内容
下载资源
问答
  • hive 列转行

    2019-05-09 20:36:14
    方法1:(不报错,达不到效果) select count(*) as new_count1 from sales_info where dt='2019-04-26' union all select count(*) as new_count2 from sales_info where dt='2019-04-26' ...

    方法1:(不报错,达不到效果)

    select count(*)  as new_count1 from sales_info where dt='2019-04-26'
    union all
    select count(*)  as new_count2 from sales_info where dt='2019-04-26'

    方法2:(报错)

    select T1.new_count1,T1.new_count2 from 
    (
    select count(*)  as new_count1 from sales_info where dt='2019-04-26'
    union all
    select count(*)  as new_count2 from sales_info where dt='2019-04-26'
    )T1

    报错: FAILED: SemanticException [Error 10002]: Line 1:24 Invalid column reference 'new_count2'

    方法3:(不报错,能达到效果,使用group by)

    select T1.new_count1,T2.new_count2,T3.new_count3
    from 
    (select dt, count(*)  as new_count1 from sales_info where dt='2019-04-26' group by dt)T1
    full outer JOIN
    (select dt, count(*)  as new_count2 from sales_info where dt='2019-04-26' group by dt)T2
    ON T1.dt=T2.dt
    full outer JOIN
    (select dt, count(*)  as new_count3 from sales_info where dt='2019-04-26' group by dt)T3
    ON T2.dt=T3.dt

    方法4:(不报错,能达到效果,不使用group by)

    select T1.new_count1,T2.new_count2,T3.new_count3
    from 
    (select 1 as dt, count(*)  as new_count1 from sales_info where dt='2019-04-26')T1
    full outer JOIN
    (select 1 as dt, count(*)  as new_count2 from sales_info where dt='2019-04-26')T2
    ON T1.dt=T2.dt
    full outer JOIN
    (select 1 as dt, count(*)  as new_count3 from sales_info where dt='2019-04-26')T3
    ON T2.dt=T3.dt

    展开全文
  • 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列转行函数

    select split("a,b,c,d",',');
    

    效果:

    在这里插入图片描述

    select explode(split("a,b,c,d",','));
    

    效果:

    在这里插入图片描述

    案例:

    原始数据

    moviecategory
    《疑犯追踪》悬疑,动作,科幻,剧情
    《Lie to me》悬疑,警匪,动作,心理,剧情
    《战狼2》战争,动作,灾难

    需求

    《疑犯追踪》      悬疑
    《疑犯追踪》      动作
    《疑犯追踪》      科幻
    《疑犯追踪》      剧情
    《Lie to me》   悬疑
    《Lie to me》   警匪
    《Lie to me》   动作
    《Lie to me》   心理
    《Lie to me》   剧情
    《战狼2》        战争
    《战狼2》        动作
    《战狼2》        灾难
    

    实现 第一步,炸开类型

    select
    	explode(split(category,','))
    from movie_info;
    

    实现第二步:尝试使用join进行连接,但是不行,没有办法写join条件,造成了笛卡尔积

    SELECT 
    	t1.movie,
    	t2.category_name
    from
    (
    	select movie from  movie_info
    ) t1
    left join
    (
    	select
    		explode(split(category,',')) category_name
    	from movie_info
    ) t2;
    

    实现第三步:

    我们的需求是·想让炸开后的临时表和炸开之前表所在行的其他字段进行join

    hive帮我们实现了这个需求 lateral view (侧写视图)

    select
    	movie,
    	category_name
    from movie_info
    LATERAL VIEW explode(split(category,',')) tmp as category_name;
    

    一定要写表别名和列别名

    效果:
    在这里插入图片描述

    LATERAL VIEW

    用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias

    解释:lateral view用于和split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

    lateral view首先为原始表的每行调用UDTF,UTDF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表。

    展开全文
  • hive列转行案例

    2021-01-07 06:50:26
    hive列转行 1.函数说明 EXPLODE(col):将 hive 一列中复杂的 array 或者 map 结构拆分成多行。 LATERAL VIEW : 用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias 解释:用于和 split, explode 等 ...
  • Hive列转行、行转列

    千次阅读 2020-08-06 23:33:08
    简单说一下Hive行转列、列转行的方式。

    简单说一下Hive行转列、列转行的方式。

    写在前面

    看到一篇文章,看的我很难受。(下面是一张图片)

    在这里插入图片描述

    这玩意SQL,语法它对吗?就搁这列转行?浪费时间!

    上个Demo

    先拿这个数据来实现一个简单的行转列和列转行
    在这里插入图片描述

    表名就都叫hero吧,英雄属性(hero_type)、英雄名s(hero_names)、英雄名(hero_name)

    行转列

    也就是上面的表1到表2。

    select
    	hero_type as "英雄属性",
    	hero_name as "英雄名"
    from hero
    lateral view explode(split(hero_names, ",")) lat as hero_name;
    	
    

    列转行

    也就是上面的表2到表1

    select 
    	hero_type,
    	concat_ws(",", collect_list(hero_name))
    from hero 
    group by hero_type;
    

    参考

    hive函数document:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF


    之后再细细总结吧,先这样。

    展开全文
  • Hive 列转行

    2021-08-31 10:59:12
    Hive 列转行 将某列转为数组返回,可以用collect_ws,collect_list函数,其中collect_ws去重,collect_list不去重。如需要返回字符串,可联合concat_ws函数指定分隔符。 1、对单列转行 列子: 原数据 id fruit 11 ...

    Hive 列转行

    将某列转为数组返回,可以用collect_ws,collect_list函数,其中collect_ws去重,collect_list不去重。如需要返回字符串,可联合concat_ws函数指定分隔符。
    1、对单列转行
    列子:
    原数据
    id fruit
    11 apple
    11 peach
    12 banana
    12 banana

    转化为(去重)
    id fruit
    11 apple,peach
    12 banana

    代码:
    去重: select id,concat_ws(‘,’,collect_set(fruit)) from table_name group by id;
    不去重:select id,concat_ws(‘,’collect_list(fruit)) from table_name group by id;

    2、对多列转行
    id name fruit amount
    11 zhan apple 20
    11 zhan peach 40
    12 li banana 15
    12 li banana 17

    转化为(去重)
    id name fruit amount
    11 zhang apple,peach 20,40
    12 li banana 15,17

    代码:
    去重: select id,name,concat_ws(‘,’,collect_set(fruit)),concat_ws(‘,’,collect_set(amount))
    from table_name group by id,name;
    不去重: select id,name,concat_ws(‘,’,collect_list(fruit)),concat_ws(‘,’,collect_list(amount))
    from table_name group by id,name;

    展开全文
  • hive列转行、行转列

    2021-01-05 18:18:17
    1.列转行 select t.cust_id ,concat_ws(',',collect_list(group_id)) one_pace from (select 'A_001' cust_id ,'20191014' group_id union all select 'A_001' cust_id ,'20191015' group_id
  • hive列转行

    2019-09-24 08:18:46
    一、问题 hive如何将 a b 1 a b 2 a b 3 c d 4 c d 5 c d 6 变为: a b 1,2,3 c d 4,5,6 二、数据 ...
  • 建测试表 create table test_k_v (k string , v double) row format delimited fields terminated by ','; 插入测试数据 insert overwrite table test_k_v select 'day',1.3 ...union a...
  • id num warehouse warehouse01 warehouse02 warehouse03 1 10 1 1 12 2 2 8 1 3 11 1 3 8 3 select id, sum(case when warehouse_id=01 then num else 0 end) warehouse01, sum(case when war
  • OK 悬疑 动作 科幻 爱情 悬疑 警匪 动作 心理 剧情 战争 动作 灾难 Time taken: 0.355 seconds, Fetched: 12 row(s) hive (felix)> 如果想要得到题目的需求结果,那么需要在此结果上,每一部电影和该电影对应的...
  • Hive列转行与行转列

    2021-03-24 23:51:33
    行转: 行转其实就是把多行的数据连接在一起,放到一里面,所用的函数是连接函数 concat(xx,xx) 连接到一起 concat_ws(separator, str1, str2,…) 这个多了一个separator分隔符,就是两个字符串之间用什么隔开...
  • hive 列转行 行转列

    千次阅读 2018-08-14 18:39:23
    explode就是将hive一行中复杂的 array 或者 map 结构拆分成多行。 hive wiki对于expolde的解释如下: explode() takes in an array (or a map) as an input and outputs the elements of the array (map) as ...
  • Hive列转行总结

    2020-10-22 18:19:18
    有张表分成八种情况,分别为: 账面库存X类 标准库存X类 待核销库存X类 待冲销库存X类 账面库存Y类 大众标准库存Y类 待核销库存Y类 待冲销库存Y类 于是考虑先使用拼接函数生成如下样式: ... courses string comment '...
  • 列转行函数介绍 EXPLODE(col) EXPLODE(col) 大白话是,如果你传递的参数是Array, 会给这个Array分隔转成多行 ,如果你传递的是Map,就会给Map里面的每个元素分隔成多行和多列. 参数只能是Array或者是Map explode函数...
  • hive 列转行 和 行转列

    2021-02-07 18:41:06
    列转行 测试数据的格式如下: hive> select * from col_lie limit 10; OK col_lie.user_id col_lie.order_id 104399 1715131 104399 2105395 104399 1758844 104399 981085 104399 2444143 104399 1458638 104
  • collect_all() hive 0.12collect_list() hive 0.13一、问题hive如何将a b1a b2a b2c d1c d1d d2变为:a ["b1","b2","b2"]c ["d1","d1"]d ["d2"]二、数据test.txt (空...
  • 表结构:operation_name, network_type, shell_time, shell_time2, load_time 需求:将shell_time, shell_time2, load_time三个字段转为两个字段:type, time,type为字段名称,time为字段的值 ...
  • 都是将分组中的某转为一个数组返回,不同的是collect_list不去重而collect_set去重。 2.2 由于直接用collect_list无法按照type大小进行排序,于是考虑用map函数给每个value命名,即先map[type,context],再用...
  • Hive列转行

    2022-01-19 09:41:56
    列转行
  • load data local inpath "/usr/local/src/test4/hive/movie_info.txt" into table movie_info; 查询表格: 此时可以看到category是一个数组,并且分隔符为","; Step2:explode的使用: explode作用...
  • hive 列转行or行转列

    2020-12-29 09:07:14
    转多行 给定一个表temp,字段是 user_id,clo1,col2…col12 12各字段代表12个月电费,求最终结果展现:user_id,month,money with temp as ( select 1 as user_id,2 as col1,3 as col2,4 as col3,5 as col4 ) ...
  • 作者官方网站:http://www.wxl568.cn 实例数据图 转换换行 select uid, concat_ws (',', collect_list(date_time)) as date_time from dm_hrssgps.timeaaa ...使用函数:concat_ws(',',collect_set(column)) ...
  • hive列转行--行转列问题

    千次阅读 2013-04-12 13:47:30
    列转行--行转列问题   问题:使用case when实现行转列  解决: www.2cto.com    1、测试准备:  CREATE TABLE StudentScores(  UserName NVARCHAR2(20), --学生姓名
  • explode(col):将 hive中复杂的 array 或者 map 结构拆分成多行。 lateral view 用法:lateral view udtf(expression) tableAlias AS columnAlias 解释:用于和 split, explode 等 UDTF 一起使用,它能够将...
  • collect_list() hive 0.13collect_all() hive 0.12https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-CollectionFunctions一、问题hive如何将a b1a b2a b2c...
  • hivesql查询最终只返回一,则直接调用exploded就行。但结果返回多时就需要使用到lateral view explode。示例如下,可以直接执行 with user_view as ( --构造虚拟表 select 'zhang san' name,'高级' level, 12 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,480
精华内容 992
关键字:

hive列转行

友情链接: commawd_schema.rar