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 是一个强大的工具,可以处理复杂类型的数据

相关推荐

  1. sql一行转为

    2024-04-22 15:40:01       14 阅读
  2. sql日期区间拆分为

    2024-04-22 15:40:01       13 阅读
  3. 使用python张图片转为一个PDF

    2024-04-22 15:40:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 15:40:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 15:40:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 15:40:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 15:40:01       18 阅读

热门阅读

  1. node.js常用指令

    2024-04-22 15:40:01       12 阅读
  2. 美国基金会注册

    2024-04-22 15:40:01       14 阅读
  3. AUTOSAR OS Alarm讲解

    2024-04-22 15:40:01       16 阅读
  4. CentOS常见命令

    2024-04-22 15:40:01       13 阅读
  5. MySQL--数据的增删改

    2024-04-22 15:40:01       15 阅读
  6. Qt的坐标转换

    2024-04-22 15:40:01       13 阅读
  7. 【Flutter】序列化方案之命令行生成model

    2024-04-22 15:40:01       17 阅读
  8. 【shell】变量和引号!

    2024-04-22 15:40:01       12 阅读
  9. MATLAB中Simulink.defaultModelTemplate用法

    2024-04-22 15:40:01       18 阅读