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

成都手机建站广州网站开发建设

成都手机建站,广州网站开发建设,网站flash素材,焊锡外发加工网一、问题描述 日常工作中我们经常会遇到一些非结构化数据,因此常常会将Lateral View 结合explode使用,达到将非结构化数据转化成结构化数据的目的,但是该方法对应explode的内容是有非null限制的,否则就有可能造成数据缺失。 SE…

一、问题描述

日常工作中我们经常会遇到一些非结构化数据,因此常常会将Lateral View 结合explode使用,达到将非结构化数据转化成结构化数据的目的,但是该方法对应explode的内容是有非null限制的,否则就有可能造成数据缺失。
在这里插入图片描述

SELECT name,info
FROM(SELECT name,split(info_list,',') as info_arraryFROM (select '张三' as name,'1,2,3' as info_listunion allselect '李四' as name,null as info_list) t1     -- 构造测试数据) t2
LATERAL VIEW explode(t2.info_arrary) a as info ;

查询结果:
在这里插入图片描述

查看结果我们可以发现 ‘李四’ 这条数据数据丢了,这就会造成我们最终统计的数据出现错误。

二、查找原因

通过定位我们可以发现 ‘李四’ 这一行的info字段为null,其split之后的结果自然也是为null,通过LATERAL VIEW explode之后会形成一个为null的view,这样无法关联出数据,该数据就会丢失。

三、解决办法(建议使用方法二)

3.1 方法一

对子查询中的split结果强制使用coalesce()方法,将null替换成一个为[’’]的数组,直接这么写会误以为string字符串。我们可以使用split(’’,’’)构造出一个[’’]数组,改写后的语句如下

SELECT name,info
FROM(SELECT name,coalesce(split(info_list,','),split('','')) as info_arraryFROM (select '张三' as name,'1,2,3' as info_listunion allselect '李四' as name,null as info_list) t1     -- 构造测试数据) t2
LATERAL VIEW OUTER explode(t2.info_arrary) a as info ;

在这里插入图片描述
请注意 ‘李四’ 的结果为空字符,不是null。

3.2 方法二

使用官方提供的LATERAL VIEW OUTER来进行解决,该方法类似于left outer join,即如果explode出来的结果为null,也会保留记录,只不过对应字段为null,改写后的语句如下:

SELECT name,info
FROM(SELECT name,split(info_list,',') as info_arraryFROM (select '张三' as name,'1,2,3' as info_listunion allselect '李四' as name,null as info_list) t1     -- 构造测试数据) t2
LATERAL VIEW OUTER explode(t2.info_arrary) a as info ;

查询结果:
在这里插入图片描述

请注意 ‘李四’ 的结果为null,而不是空字符。

以下是官方文档关于该用法的解释:

The user can specify the optional OUTER keyword to generate rows even when a LATERAL VIEW usually would not generate a row. This happens when the UDTF used does not generate any rows which happens easily with explode when the column to explode is empty. In this case the source row would never appear in the results. OUTER can be used to prevent that and rows will be generated with NULL values in the columns coming from the UDTF.

为了保持代码的稳定性与数据的准确性,建议使用第二种方法。

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

相关文章:

  • 电子产品网站建设策划方案家装设计需要学什么软件
  • 做网站如何不被忽悠网站建设服务ysaigo
  • 茂名网站制作推广论坛推广技巧
  • 南乐网站建设电话wordpress图片保存
  • 做网站卖产品要注册公司吗国外网站页头设计图片
  • 网站收录不稳定怎么申请自己的小程序
  • 东昌府聊城做网站公司广州短视频代运营公司
  • 品牌手机网站建设佛山网站建设优化制作公司
  • 浙江做铁塔的公司网站2022年编程语言官方排行榜
  • 做电销哪些网站可以找到客户时代设计网 新网站
  • 做seo要先做网站么unix做网站常用的数据库
  • 中国建设银行网站主要功能网站用橙色
  • 橙色企业网站源码简单个人网站制作
  • 如何写一份食品的网站建设规划网站的标志可以修改吗
  • 游戏开发难还是网站开发难泰安网站建设企业
  • 北京做网站要多少钱手机上如何制作app
  • php外贸网站制作网站建设和管理是教什么科目
  • 能做网站的网站有啥好玩的网页游戏
  • 诸城公司做网站石家庄搜索引擎优化
  • 济南建站旅游网站排行榜前20
  • 陕西恒业建设集团网站自己做的网站怎么接入数据库
  • 如何建设医院网站女装网站建设费用预算
  • 开普网站建设公司wordpress文章后面评论
  • 完整网站项目的逻辑京东快递 网站建设特点
  • 七七网站建设wordpress怎么做开发
  • 蔚县做网站杭州手机app制作
  • 可以写代码的网站有哪些问题吗网站维护是什么工作
  • 西安微信网站建设公司中文企业网站模板下载
  • 静态网站注入汝城网站建设公司
  • 银川如何做百度的网站常熟沿江开发区人才网