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

黄色网站建设黄色视频谷歌chrome安卓版

黄色网站建设黄色视频,谷歌chrome安卓版,上海网站制作公司报价,网站新闻字体hivesql 将json格式字符串转为数组 完整过程SQL在文末 json 格式字符串 本案例 json 字符串参考格式,请勿使用本数据 {"data": [{"province": 11,"id_card": "110182198903224674","name": "闾丘饱乾"…

hivesql 将json格式字符串转为数组

完整过程SQL在文末

json 格式字符串

本案例 json 字符串参考格式,请勿使用本数据

{"data": [{"province": 11,"id_card": "110182198903224674","name": "闾丘饱乾"},{"province": 21,"id_card": "210182198903224674","name": "贺巧"}]
}

测试数据

本案例测试数据,复制保存后请勿格式化

{"data":[{"province":11,"id_card":"110182198903224674","name":"闾丘饱乾"},{"province":21,"id_card":"210182198903224674","name":"贺巧"},{"province":31,"id_card":"310182198903224674","name":"方加牡"},{"province":41,"id_card":"410182198903224674","name":"邱赣"},{"province":42,"id_card":"420182198903224674","name":"郝郑惭"},{"province":52,"id_card":"520182198903224674","name":"余烂"},{"province":62,"id_card":"620182198903224674","name":"宇文酚"},{"province":81,"id_card":"810182198903224674","name":"赖队瞻"}]}

创建测试数据库

create database test;
use test;

创建数据表

本案例为数仓分层设计

  1. 创建ods层原始数据表
  2. 创建dwd层维度数据表
  3. ETL转换ods层数据插入到dwd层

创建ods层原始数据表

create table people_ods(info string
);

加载测试数据

load data local inpath "/root/people.json" overwrite into table people_ods;

创建dwd层维度数据表

create table people_dwd(id_card string,name string,province string
);

ETL转换ods层数据插入到dwd层

insert overwrite table people_dwd (
select json_tuple(people,'id_card','name','province') as (id_card,name,province) from (select people from (select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),";") people_list from people_ods) odslateral view explode(people_list) t1 as people) t2);

查询测试

select * from people_dwd;

hive

ETL 解析

查询原始数据

select info from people_ods;

hive

获取json格式数组字符串

使用 get_json_object 函数获取 data 属性

select get_json_object(info,'$.data') from people_ods;

hive json

将字符串两端的 [] 去掉

使用 regexp_replace 函数将 开头的 [ 和结尾的 ] 替换为 空字,
注意:由于hive使用java语言编写所以需要使用转义字符

select regexp_replace(get_json_object(info,'$.data'),'\\[|\\]','') from people_ods;

hive

清洗后的格式

{"province":11,"id_card":"110182198903224674","name":"闾丘饱乾"},{"province":12,"id_card":"120182198903224674","name":"慕容芋岛"}

将字符串中 },{ 转为 };{ 对象之间使用分号间隔

json格式字符串对象分隔符和属性分隔符都使用的是逗号
使用split函数切分的时候无法区分对象和属性
故而将对象分隔符替换为分号便于split函数切分

select regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{') from people_ods;

清洗后的格式

{"province":11,"id_card":"110182198903224674","name":"闾丘饱乾"};{"province":12,"id_card":"120182198903224674","name":"慕容芋岛"}

两次清洗后结果对比

hive

转为 字符串数组

select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),';') from people_ods;

hive

列转行

使用 UDTF 裂函数 将单行数据转换为多行数据

select people from (select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),";") people_list from people_ods) ods
lateral view explode(people_list) t as people;

hive

json 解析

使用 get_json_object 或者 json_tuple 函数 对json对象进行解析
本案例使用 json_tuple 函数

select json_tuple(people,'id_card','name','province') as (id_card,name,province) from (select people from (select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),";") people_list from people_ods) odslateral view explode(people_list) t1 as people) t2;

hive

完成过程SQL

-- 创建测试数据库
create database test;
-- 使用测试数据库
use test;-- 创建ods层原始数据表
create table people_ods(info string
);-- 加载数据
load data local inpath "/root/people.json" overwrite into table people_ods;
-- 查询ods层袁术数据
select info from people_ods;-- 获取json格式数组字符串
select get_json_object(info,'$.data') from people_ods;-- 将字符串两端的 [] 去掉
select regexp_replace(get_json_object(info,'$.data'),'\\[|\\]','') from people_ods;-- 将字符串中 },{ 转为 };{ 对象之间使用分号间隔
select regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{') from people_ods;-- 转为 字符串数组
select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),';') from people_ods;-- 列转行
select people from (select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),";") people_list from people_ods) ods
lateral view explode(people_list) t as people;-- 转json对象后解析
select json_tuple(people,'id_card','name','province') as (id_card,name,province) from (select people from (select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),";") people_list from people_ods) odslateral view explode(people_list) t1 as people) t2;-- 创建dwd层维度数据表
create table people_dwd(id_card string,name string,province string
);-- ETL转换ods层数据插入到dwd层
insert overwrite table people_dwd (
select json_tuple(people,'id_card','name','province') as (id_card,name,province) from (select people from (select split(regexp_replace(regexp_replace(get_json_object(info,'$.data'),'\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),";") people_list from people_ods) odslateral view explode(people_list) t1 as people) t2);select * from people_dwd;
http://www.dtcms.com/wzjs/372404.html

相关文章:

  • 江都建设网站打开百度浏览器
  • 双一流建设专题网站百度权重域名
  • 园区 网站建设方案chrome网页版入口
  • wordpress文字环绕广告百度seo综合查询
  • 网站设计怎么做图片透明度学电脑培训班多少一个月
  • b2b平台财务账务处理免费培训seo网站
  • 网站上飘窗怎么做网销怎么做才能做好
  • 网站建设吉金手指专业12南宁网站优化公司电话
  • 营销导向网站建设流程百度快照推广有效果吗
  • 哪个网站系统做的好品牌营销策划包括哪些内容
  • 南京网站开发培训百分百营销软件
  • 做网站模板赚钱吗线上销售怎么做
  • 公司网站设计主页部分怎么做做网站需要多少钱
  • 网站建设预览网络推广方式方法
  • 企业网站建设毕业设计网站免费客服系统
  • 黄页88网是什么性质的网站百度seo霸屏软件
  • 富阳市建设局网站nba西部排名
  • 房屋装修图片刷排名seo
  • 培训网站建设方案黄页推广引流
  • 网站建设基本流程备案网站维护公司
  • 网站解析域名时间朋友圈广告推广文字
  • 网站上qq未启用株洲seo排名
  • 做企业网站所需要的资料百度百度一下
  • wordpress公众号源码宁波关键词优化企业网站建设
  • 重庆做网站价格下载百度推广app
  • 湖北做网站系统哪家好营口seo
  • 手机端网站的建设友情链接翻译
  • 网站集群建设参数网络策划与营销
  • 品牌网站建设毛尖2广州seo托管
  • 郑州做网站九零后网络海南百度推广电话