首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单个行的逗号分隔字符串- Impala SQL

单个行的逗号分隔字符串- Impala SQL
EN

Stack Overflow用户
提问于 2016-05-24 03:38:56
回答 2查看 8.5K关注 0票数 5

假设我们有一张表:

代码语言:javascript
运行
复制
Owner   | Pets
------------------------------
Jack    | "dog, cat, crocodile" 
Mary    | "bear, pig"

我想得到的结果是:

代码语言:javascript
运行
复制
Owner   | Pets
------------------------------
Jack    | "dog"
Jack    | "cat"
Jack    | "crocodile" 
Mary    | "bear"
Mary    | "pig"

我通过谷歌搜索找到了一些类似问题的解决方案,但Impala SQL没有提供任何这些功能来应用建议的解决方案。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2017-04-05 17:55:48

以下内容适用于Impala:

代码语言:javascript
运行
复制
split_part(string source, string delimiter, bigint n)

您可以在以下位置找到文档:

https://www.cloudera.com/documentation/enterprise/5-9-x/topics/impala_string_functions.html

票数 4
EN

Stack Overflow用户

发布于 2020-09-02 22:08:00

您必须使用Hive SQL来执行此操作。

因此,让我们创建一张impala表

代码语言:javascript
运行
复制
-- imapla sql
CREATE TABLE IF NOT EXISTS tmp.my_example (
  `Owner` VARCHAR,
  Pets VARCHAR
);

INSERT INTO tmp.my_example (`Owner`, `Pets`) VALUES
('Jack', 'dog, cat, crocodile'),
('Mary', 'bear, pig');

然后使用配置单元sql将列拆分为行:

代码语言:javascript
运行
复制
-- hive sql
select f.owner as owner, t1.pos as pos, t1.val AS pet
from tmp.my_example f
lateral view posexplode(split(pets,', ')) t1 

如果将结果另存为新表,请不要忘记在impala中运行refresh new_table,以便可以使用新表

P.S. Hive对于这个小表来说非常慢,但是对于真实数据来说性能是合理的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37399187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档