SQL行转列,将json数组拆分成多行,一行变多行例子,(LATERAL VIEW explode)
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
需求背景
有一张工程师能力表,如:
张三 擅长java、c、c++、c#、js
李四 擅长java、go
王五 擅长css、f#
陈六 擅长as、c、java
。。。
需要统计擅长各种语言的工程师的数量,如:
java 3
c 2
go 1
代码示例
使用LATERAL VIEW explode 组合,模拟上述统计案例
-- 创建表A
drop table A;
CREATE TABLE A (
id INT,
channels STRING,
partition_time STRING
)
PARTITION BY LIST( partition_time )
(
PARTITION p_20221130 VALUES IN ( '20221130' ),
PARTITION default
)
STORED AS ORCFILE COMPRESS;
-- 示例数据插入表A
INSERT INTO A PARTITION (partition_time='20221130') VALUES
(1, '[101, 102, 103]', '20221130'),
(2, '[102]', '20221130'),
(3, '[103]', '20221130'),
(4, '[101, 102]', '20221130'),
(5, '[101, 103]', '20221130');
-- 使用LATERAL VIEW explode(channels)统计channels出现的次数
SELECT channel, COUNT(*) AS count
FROM A
LATERAL VIEW explode(split(regexp_replace(channels, '\\[|\\]|\\s', ''), ',')) t AS channel
WHERE partition_time = '20221130'
GROUP BY channel;
输出结果
channel count
101 3
102 3
103 3
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
7 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)