sql~ 将一行转为多行

devtools/2024/9/22 16:45:10/

转义字符

在正则表达式中,\\[|\\] 是一个模式,它匹配的是字符 '[' 或者 ']'
| 是一个特殊字符,表示“或”操作,也就是说,它会匹配它左边或者右边的字符\\[ 和 \\] 是对特殊字符 '[' 和 ']' 的转义,因为在正则表达式中,'[' 和 ']' 有特殊的含义,通常用于定义字符集例如,'[abc]' 会匹配任何一个 'a','b' 或者 'c'
所以,如果想要匹配字符 '[' 或者 ']' 本身,需要使用 '\' 来进行转义所以,\\[|\\] 这个正则表达式会匹配任何一个 '[' 或者 ']'

regexp_replace

sql">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

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

将一行信息拆分为hive的list

转为多行

sql">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 的一个元素。

sql">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.ppmy.cn/devtools/8106.html

相关文章

.NET高级面试指南专题二十五【 建造者模式介绍,将复杂对象的构建过程与其表示分离】

建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。它允许客户端通过指定要构建的类型和可选参数来构建对象,而不需要了解对象的具体构建细节。 优点: 将构建过程封装…

如何用JS校验HTTP和HTTPS地址

在日常开发过程中,我们有时候对某些应用功能进行封装,但是在请求接口又不能写死,这个时候我们需要对他进行多方面考虑。 如何验证请求地址是HTTP还是HTTPS 方法一: function getBaseUrl (string) {let url;try {url new URL(s…

C#字典底层原理

一:前言 Dictionary是一种键值对的形式存放数据,即 key和value一一映射。key的类型没有限制,可以是整数、字符串甚至是实例对象 C#字典源码 时间复杂度 ——Add:O(1) ——Remove:一般情况下为O(1),最差情…

【opencv】dnn示例-person_reid.cpp 人员识别(ReID,Re-Identification)系统

ReID(Re-Identification,即对摄像机视野外的人进行再识别) 0030_c1_f0056923.jpg 0042_c5_f0068994.jpg 0056_c8_f0017063.jpg 以上为输出结果:result文件夹下 galleryLIst.txt queryList.txt 模型下载: https://github.com/ReID-Team/ReID_e…

VUE识别图片文字OCR(tesseract.js)

效果:1&#xff1a; 效果图2&#xff1a; 一、安装tesseract.js npm i tesseract.js 二、静态页面实现 <template><div><div style"marginTop:100px"><input change"handleChage" type"file" id"image-input"…

Spring Boot与JdbcTemplate:构建MySQL数据库应用的简易指南

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

SpringBoot 操作 Redis

导入对应版本的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>修改配置文件中的信息 spring:redis:host: 127.0.0.1port: 8888注意: 我这里 xsh…

经典机器学习算法——决策树

优质博文&#xff1a;IT-BLOG-CN 树模型是机器学习中最常用的一类模型&#xff0c;包括随机森林、AdaBoost、GBDT&#xff08;XGBoost和Lightgbm&#xff09;等&#xff0c;基本原理都是通过集成弱学习器的即式来进一步提升准确度。这里的弱学习器包括线性模型和决策树模型&…