如何使用侧视图分解将分隔字符串拆分为 Hive 中的多行



我在Hive中有一个表格,如下所示-

create table somedf 
(sellers string , 
orders int 
)
insert into somedf values
('1--**--2--**--3',50),
('1--**--2', 10)

该表有一个名为 seller 的列,它由插入语句中描述的字符分隔。我想将卖家分成多行,如下所示 -

exploded_sellers orders
1                 50
2                 50
3                 50
1                 10
2                 10

我正在尝试在 Hive 中使用lateral view explode()函数,但无法获得结果。我正在使用以下查询 -

select exploded_sellers, orders
from somedf
lateral view outer explode(split(sellers,'\--*.*\*.*--')) t1 as exploded_sellers

这给了我以下结果作为输出 -

exploded_sellers orders
1                 50
3                 50
1                 10
2                 10

此结果不会根据需要从表中拆分第 1 行('1--**--2--**--3',50),最终只生成 2 行而不是 3 行。

此任务还需要任何其他功能吗?lateral view explode()只适用于数组吗?

传递到split的模式不正确。*字符需要转义。无需逃脱-.

select exploded_sellers, orders
from somedf
lateral view outer explode(split(sellers,'--\*\*--')) t1 as exploded_sellers

这也行得通。它预计中间出现两次 *。

select exploded_sellers, orders
from somedf
lateral view outer explode(split(sellers,'--\*{2}--')) t1 as exploded_sellers;

相关内容

  • 没有找到相关文章

最新更新