sql~ 将一行转为多行

转义字符

在正则表达式中,\\[|\\] 是一个模式,它匹配的是字符 '[' 或者 ']'
| 是一个特殊字符,表示“或”操作,也就是说,它会匹配它左边或者右边的字符

\\[ 和 \\] 是对特殊字符 '[' 和 ']' 的转义,因为在正则表达式中,'[' 和 ']' 有特殊的含义,通常用于定义字符集

例如,'[abc]' 会匹配任何一个 'a','b' 或者 'c'
所以,如果想要匹配字符 '[' 或者 ']' 本身,需要使用 '\' 来进行转义

所以,\\[|\\] 这个正则表达式会匹配任何一个 '[' 或者 ']'

regexp_replace

select  regexp_replace(
            '[{"content":"这个挑战主题是我感兴趣的","id":"10080","extra":"{\"parent_id\":36382,\"project_id\":\"771,\"feed_survey\":51306}"},{"content":"喜欢这个音乐","id":"10081","extra":"{\"parent_id\":36382,\"project_id\":\"771,\"feed_survey\":51306}"},{"content":"这个内容类型(亲子、美食、时尚等)是我喜欢的","id":"10082","extra":"{\"parent_id\":36382,\"project_id\":\"771,\"feed_survey\":51306}"}]',
            '\\[|\\]',
            ''
        ) as split_table

将所有 “[” 或者 “]” 去掉

split

select split(
   '{111},{222},{333}',
    '},'
) as split_table
-- ["{111","{222","{333}"]

将一行信息拆分为hive的list

转为多行

select exploded_table.split_table
from (select split('{111},{222},{333}', '},') as split_table) t
lateral view explode(t.split_table) exploded_table as split_table

-- split_table
-- {111
-- {222
-- {333}

LATERAL VIEW

Hive 中的一个功能,用于与表生成函数(如 explode)一起使用,以便在原始数据的每一行上应用表生成函数
并将输出作为虚拟表,这个虚拟表可以在查询的 FROM 子句中使用

LATERAL VIEW 会为原始表的每一行生成一行或多行
这对于处理数组和 map 类型的数据非常有用,因为它可以将这些复杂类型的数据展开成多行,每行对应数组或 map 的一个元素。

SELECT t.id, v.word
FROM my_table t LATERAL VIEW explode(t.words) v AS word;

my_table 有两个列 id 和 words
my_table 的 words 列是一个数组
explode 函数会将这个数组展开成多行,每行对应数组的一个元素
然后,LATERAL VIEW 会将这些行作为一个虚拟表 v,并将数组元素作为 word 列
最后,查询返回 my_table 的 id 列和虚拟表 v 的 word 列

LATERAL VIEW 是一个强大的工具,可以处理复杂类型的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/555333.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leo赠书活动-24期 【三大层次学习企业架构框架TOGAF】文末送书

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 赠书活动专栏 ✨特色专栏:…

【网站项目】自习室预约系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

基于Springboot+Vue的Java项目-企业客户管理系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

【Python】OPC UA模拟服务器实现

目录 服务器模拟1. 环境准备2. 服务器设置3. 服务器初始化4. 节点操作5. 读取CSV文件6. 运行服务器 查看服务器客户端总结 在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换…

如何使用Docker部署WPS Office服务并实现无公网IP远程处理文档表格

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本,通过…

【深入解析spring cloud gateway】13 Reactive Feign的使用

问题引入 在gateway中如果使用feignClient的话,会报如下错误 java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-3at reactor.core.publisher.BlockingSingleSubscriber.bloc…

合并区间详解

题目: 大体思路: 先排序,设置一个新数组,将原数组遍历的第一位添加到新数组,之后不断的将遍历原数组后的起始位置和新数组的终止位置进行比较,大于,则添加到新数组,不大于&#xff…

OpenHarmony轻量系统开发【13】鸿蒙小车开发

13.1 小车介绍 基于鸿蒙系统 Hi3861 的WiFi小车 首先,我们得有一套WiFi小车套件,其实也是Hi3861 加上电机、循迹模块、超声波等模块。 小车安装完大概是这样: 13.2 电机驱动 我们这里先只做最简单的,驱动小车的电机&#xff…

Simlab python二次开发1-将所有缸套内表面半径加大1mm

Simlab python二次开发1-将所有缸套内表面半径加大1mm 1、打开模型文件2、getBodiesWithSubString()从名字得到Bodies3、建Body类Group3.1、定义放入Group中的Bodies3.2、建Group 4、将缸套内表面建组,并扩半径1mm4.1、simlab.getBodiesFromG…

【嵌入式之中断】

Cortex-M4集成了嵌套式矢量型中断控制器(Nested Vectored Interrupt Controller (NVIC))来实现高效的异常和中断处理。NVIC实现了低延迟的异常和中断处理,以及电源管理控制。它和内核是紧密耦合的。 凡是打断程序顺序执行的事件都称为异常(exception&am…

Gitlab: Python项目CI/CD实践

目录 1. 说明 2. 准备工作 2.1 服务器 2.2 开发机hosts文件 2.3 项目 3. 步骤过程 3.1 建仓Fastapi T1 3.2 开发机测试构建与推送 ​编辑 3.3 在工作站添加gitlab-runner 3.4 提交代码,查看Pipelines结果 3.5 观察部署情况 4. 参考 1. 说明 分别以一个…

线程互斥及基于线程锁的抢票程序

我们实现一个简单的多线程抢票程序。 #include<iostream> #include<thread> #include<unistd.h> #include<functional> #include<vector> using namespace std; template<class T> using func_tfunction<void(T)>;//返回值为void,…

leetcode刷题(python)——(四)

01.02.03 练习题目&#xff08;第 04 天&#xff09; 1. 0048. 旋转图像 1.1 题目大意 描述&#xff1a;给定一个 n n n \times n nn 大小的二维矩阵&#xff08;代表图像&#xff09; m a t r i x matrix matrix。 要求&#xff1a;将二维矩阵 m a t r i x matrix matr…

点云的投影------PCL

点云的投影 /// <summary> /// 参数化模型投影点云 /// </summary> /// <param name"cloud">点云</param> /// <param name"x">投影平面x面的系数</param> /// <param name"y"></param> /// &…

【Qt-Qt Creator使用技巧】

工具-Qt Creator ■ 使用技巧■ 定义触发片段■ Qt Creator 行编辑■ 代码注释■ 代码补全■ 快速给函数添加定义■ 创建书签■ 同步列输入■ 局部替换■ 源代码阅读■ 源码调试■ 使用技巧 ■ 定义触发片段 ■ Qt Creator 行编辑 shift + alt + up / down来获得多个游标。 …

第二部分 Python提高—GUI图形用户界面编程(三)

简单组件学习 Radiobutton 单选按钮、Checkbutton 复选按钮和canvas 画布 文章目录 Radiobutton 单选按钮Checkbutton 复选按钮canvas 画布 Radiobutton 单选按钮 Radiobutton 控件用于选择同一组单选按钮中的一个。Radiobutton 可以显示文本&#xff0c;也可以显示图像。 f…

CUDA编程---线程束洗牌指令

从Kepler系列的GPU&#xff08;计算能力为3.0或更高&#xff09;开始&#xff0c;洗牌指令&#xff08;shuffle instruction&#xff09;作为一种机制被加入其中&#xff0c;只要两个线程在相同的线程束中&#xff0c;那么就允许这两个线程直接读取另一个线程的寄存器。 洗牌指…

程序员购车指南

哈喽大家好&#xff0c;我是咸鱼。 爱车可以说是大部分男人的天性&#xff0c;而我对汽车的热情却远不及对手表的钟爱&#xff08;痴迷劳力士&#xff09;。以至于我的朋友掏出车钥匙指着上面的苹果树标志跟我介绍奔驰 AMG 系列的强劲性能和马力时&#xff0c;我只能尽量假装自…

C++的继承

目录 前言 继承的概念和定义 访问权限表 基类和派生类对象的赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 复杂的菱形继承和菱形虚拟继承 菱形虚拟继承 观察内存 注意事项&#xff1a;对象在内存中的存储顺序是按声明的顺序存储的 …

Python分析之3 种空间插值方法

插值是一个非常常见的数学概念,不仅数据科学家使用它,而且各个领域的人们也使用它。然而,在处理地理空间数据时,插值变得更加复杂,因为您需要基于几个通常稀疏的观测值创建代表性网格。 在深入研究地理空间部分之前,让我们简要回顾一下线性插值。 为了演示的目的,我将使…
最新文章