当前位置: 首页 > news >正文

网站建设总体说明如何做直播网站

网站建设总体说明,如何做直播网站,网站编程开发,网站设计建设那家好场景: hive有张表armmttxn_tmp,其中有一个字段lot_number,该字段以逗号分隔开多个值,每个值又以冒号来分割料号和数量,如:A3220089:-40,A3220090:-40,A3220091:-40,A3220083:-40,A3220087:-40,A3220086:-4…

场景:

hive有张表armmttxn_tmp,其中有一个字段lot_number,该字段以逗号分隔开多个值,每个值又以冒号来分割料号和数量,如:A3220089:-40,A3220090:-40,A3220091:-40,A3220083:-40,A3220087:-40,A3220086:-40,A3220088:-40,A3220084:-40,A3220081:-40,A3220082:-40,A3220092:-40,A3220093:-40,A3220085:-40,A3220094:-40。

要求:

把该字段拆分开来,并且把料号和数量单独列出,也就是分成两列。

原数据:

select 
key_id,
lot_number 
from armmttxn_tmp
where key_id = '48641906';

用到的函数:split()、explode()

 步骤:

step1:以逗号拆分开,如下:

["A3220089:-40","A3220090:-40","A3220091:-40","A3220083:-40","A3220087:-40","A3220086:-40","A3220088:-40","A3220084:-40","A3220081:-40","A3220082:-40","A3220092:-40","A3220093:-40","A3220085:-40","A3220094:-40"]

使用split函数,把数据拆分开

select 
key_id ,
split(lot_number, ',') lot_number
from armmttxn_tmp
where key_id = '48641906';

 step2:一行变成多行

select 
explode(split(lot_number, ',')) lot_number
from armmttxn_tmp
where key_id = '48641906';

 这里如果加上key_id字段,会怎样呢?

SQL 错误 [10081] [42000]: Error while compiling statement: FAILED: SemanticException [Error 10081]: UDTF's are not supported outside the SELECT clause, nor nested in expressions

原因:当使用UDTF函数的时候,hive只允许对拆分字段进行访问。
所以,可以这样使用:select explode(split(lot_number, ',')) lot_number from armmttxn_tmp where key_id = '48641906'; 

但不可以这样使用:select key_id ,explode(split(lot_number, ',')) lot_number from armmttxn_tmp where key_id = '48641906';

如果想访问除了拆分字段以外 的字段,怎么办呢?
用lateral view侧视图!

lateral view为侧视图,是为了配合UDTF来使用,把某一行数据拆分成多行数据.不加lateral view的UDTF只能提取单个字段拆分,并不能塞会原来数据表中.加上lateral view就可以将拆分的单个字段数据与原始表数据关联上.

注意:在使用lateral view的时候需要指定视图别名

--表名 lateral view UDTF(xxx) 视图别名(虚拟表名) as a,b,c(列别名)

--lateral view explode 相当于一个拆分lot_number字段的虚表,然后与原表进行关联.

step3:拆分的字段与原始表数据关联上.

select 
key_id ,
split(view.*,':') lot_number
from armmttxn_tmp lateral view explode(split(lot_number, ',')) view
where key_id = '48641906';

但还不是我们想要的最终结果,还需要把lot_number拆分成两列

step4: 拆分成两列

select 
key_id ,
split(view.*,':')[size(split(view.*, ':'))-2] as lot_number,
split(view.*,':')[size(split(view.*, ':'))-1] as quantity
from armmttxn_tmp lateral view explode(split(lot_number, ',')) view
where key_id = '48641906';

http://www.yayakq.cn/news/303227/

相关文章:

  • 网站怎么做seo_无锡网站营销公司简介
  • 网站权重一直做不上去宜昌注册公司
  • 陕西省交通建设公司网站营销软件培训
  • 一个完整的网站设计公司注册地址和实际不一样可以吗
  • 网站开发流程电话购物网站发展规划与建设进度
  • 网站界面风格百度智能小程序怎么优化排名
  • wordpress 站点更改吉林省建设安全信息网官网
  • 酒店网站源码上下篇文章wordpress
  • 榆林北京网站建设wordpress都可以干什么
  • 找家里做的工作到什么网站开发一个淘宝app需要多少钱
  • 苏州新区高端网站制作域名申请平台
  • 网站设计提成多少钱云搜索下载
  • 厦门网站建设 软件园2022好项目免加盟费
  • 民政 门户网站 建设做网站需要花费那方面的钱
  • 江西建设厅教育网站嘉兴网站建设费用
  • 网站挂马怎么办抖音网站怎么做
  • 2016手机网站制作规范茶叶网站源码php
  • 官方网站建设项目询价中山 网站关键词优化
  • 做360pc网站排名首页小程序账号申请
  • 网页美工设计总结roseonly企业网站优化
  • 北京网站建设公司大全网站怎么做宣传
  • 湖南建工交通建设有限公司网站建筑工程网络推广
  • 分类目录网站做谷歌联盟淘宝联盟微信里做网站
  • 织梦移动端网站建设淘宝优惠券私人查券网站怎么做
  • 娱乐网站制作软件开发制作流程图
  • 嘉兴seo公司网站wordpress网站不收录
  • 手机网站 搜索优化 百度给女友惊喜做网站
  • 专门做淘宝特价的网站开发app的工具
  • 站酷魔方网站建设中阿里企业邮箱app
  • 如何设计网站建设方案163网易免费邮箱