【发布时间】:2021-08-08 10:54:07
【问题描述】:
我正在做poseexplode, 如何删除由于列解析导致的重复行? 我不能做 distinct,因为几列上有 null (在解析之前)。
poseexplode 之前的例子:
id | cofe |
AAA | |||-9000| 4 |
BBB | 5|90 |
CCC | |
DDD | 6||||| |
EEE | |
不幸的是,结果
id | cofe
AAA |
AAA |
AAA | -9000
AAA | 4
BBB | 5
BBB | 90
CCC |
DDD | 6
DDD |
DDD |
DDD |
DDD |
EEE |
预期结果
id | cofe
AAA | -9000
AAA | 4
BBB | 5
BBB | 90
CCC |
DDD | 6
EEE |
SELECT qq.id,
ss.cofe,
ss.fnte,
ss.cnte
from
(
select id,
sequence,
split (BMWA, '~')[15] AS CFEEA
split (BMWA, '~')[16] AS FTAAA
split (BMWA, '~')[17] AS CNTTA
FROM
(
select id,
sequence,
replace(bmw, '^','~') AS BMWA
from tablee
)rr
)qq
lateral view posexplode(split(replace(qq.CFEEA'|','~'),'~')) ss as r, cofe,
lateral view posexplode(split(replace(qq.FTAAA'|','~'),'~')) ss as r, fnte
lateral view posexplode(split(replace(qq.CNTTA'|','~'),'~')) ss as r, cnte
任何想法将不胜感激!
【问题讨论】:
-
where cofe <> ''(或任何在爆炸后调用的列)不能解决问题吗?
标签: sql split hive hiveql explode