sql - 是否可以使用 hive sql 拆分复杂的数据格式
问题描述
现在,有类似的数据
a b c
101:1.9|832:1.9|91:1.0|786:1.0|55:1.0|28:1.0 14:1.0|149:1.0 14:1.0|1:1.0
我怎样才能得到结果
a b c
101;832;91;786;55;28 14;149 14;1
使用配置单元 sql 。我是 hive sql 的新手
解决方案
使用 regexp_replace 您可以用分号替换(:
直到|
或直到字符串末尾的所有内容),然后删除尾随分号。
演示:
with mytable as(
select stack( 1,
'101:1.9|832:1.9|91:1.0|786:1.0|55:1.0|28:1.0',
'14:1.0|149:1.0','14:1.0|1:1.0' ) as (a, b, c)
)
select regexp_replace(regexp_replace(a, ':[0-9.]*(\\||$)','\073'),'\073$','') as a,
regexp_replace(regexp_replace(b, ':[0-9.]*(\\||$)','\073'),'\073$','') as b,
regexp_replace(regexp_replace(c, ':[0-9.]*(\\||$)','\073'),'\073$','') as c
from mytable
结果:
a b c
101;832;91;786;55;28 14;149 14;1
推荐阅读
- c++ - boost::thread_group 在线程完成后永远挂起
- jquery - jQuery针对父级中的第一个div
- bash - 谁能解释这个简单的 bash 脚本出了什么问题?
- linux - 为什么只有父进程接受输入?
- angular - 带有查询参数的 HttpTestingController.expectOne()
- puppet - Puppet — 如果条件根据机器的当前状态
- pycharm - 在 Pycharm 中获取 Sphinx 以在生成的 html 中包含我的文档字符串
- android - 演员播放时音量控制重置?
- azure-cognitive-search - 搜索评分没有意义
- reactjs - GatsbyJS/Netlify 表单问题