前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你没见过的行转多行の骚操作

你没见过的行转多行の骚操作

作者头像
DataScience
发布2020-01-02 16:41:51
4070
发布2020-01-02 16:41:51
举报
文章被收录于专栏:A2DataA2Data

先说一个关于沟通的诀窍

灵感来自于参加一次内部培训,

主题为《如何跟高层沟通的成功密码》;

首先,这个主题就很吸引人,内容更是!

其中还结合实例讲了很多案例,收获颇深。

大概意思是如何跟VITO沟通,

里边涉及到麦肯锡的30s电梯法则。

VITO更愿意接受新想法,

并愿意为此承担适当的风险。

麦肯锡30秒电梯理论的启迪作用

一、要出语惊人

二、要短小精悍

三、要提炼观点

正文

数据格式:

代码语言:javascript
复制
假设现有一张Hive表,
元数据格式为:

字段:
id    stirng
tim    string

数据格式如下:
a,b,c,d 2:00,3:00,4:00,5:00
f,b,c,d    1:10,2:20,3:30,4:40


我需要变成:
a     2:00
b     3:00
c     4:00
d     5:00

python

就是将两列数据读入进来,然后扔到zip中,再list一下。

HiveSql:

其实整体来说,这个方法还是蛮费劲,算是一个典型得,一行转多行,但是同时前后又要一一对应。 那么,想法就有了,可以对其加入自增列,或者对应得值。这个阶段可能需要多次重复测试。

思路是对每一列分别做行转列,并且加上自增列,然后通过自增列的id,将其关联起来。最终效果如下。

代码语言:javascript
复制
select t.myCol1,t1.myCol2 from 
(select a.*, row_number() over ( order by a.id) as pid from (select *,split(id,",") as id_lst , split(tim,",") as tim_lst from fengyinjie.hl_shuju) a 
LATERAL VIEW explode(id_lst) a AS myCol1) as t
join
(select a.*, row_number() over ( order by a.id) as pd from
(select *,split(id,",") as id_lst , split(tim,",") as tim_lst from fengyinjie.hl_shuju) a 
LATERAL VIEW explode(tim_lst) a AS myCol2 ) as t1
on t.pid = t1.pd;

效果如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataScience 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 麦肯锡30秒电梯理论的启迪作用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档