使用 hortonworks hadoop hive 聚合字符串
Aggregating strings with hortonworks hadoop hive
我正在尝试将证券 table 展平,以便为每个国家/地区制作一行。如果这对所需的 SQL 有影响,我正在使用 Hive 作为当前在 hortonworks 中的执行引擎。
下面是我试图实现的示例。
(country, Name)
(US, 'Matt'),
(US, 'Rocks'),
(GB, 'Stylus'),
(FR, 'Foo'),
(FR, 'Bar'),
(FR, 'Baz')
我要查询的结果:
Country Name
----------- ------------------------------
GB Stylus
FR Bar, Baz, Foo
US Matt, Rocks
我真的不知道从哪里开始。有人知道吗?我在另一个线程上发现了一些语法,在 MSSQL 中可以正常工作,但在 hortonworks 中却不行。
Optimal way to concatenate/aggregate strings
非常感谢
我不是很熟悉 Hadoop,但是按照 Column to comma separated value in Hive 你可以做到这一点:
SELECT country, collect_set(Name)
FROM your_table
GROUP BY country;
使用 collect_set
将字符串聚合到数组中,使用 concat_ws
将数组转换为逗号分隔的字符串
select country, concat_ws(',', collect_set(Name))
from table
group by country
我正在尝试将证券 table 展平,以便为每个国家/地区制作一行。如果这对所需的 SQL 有影响,我正在使用 Hive 作为当前在 hortonworks 中的执行引擎。
下面是我试图实现的示例。
(country, Name)
(US, 'Matt'),
(US, 'Rocks'),
(GB, 'Stylus'),
(FR, 'Foo'),
(FR, 'Bar'),
(FR, 'Baz')
我要查询的结果:
Country Name
----------- ------------------------------
GB Stylus
FR Bar, Baz, Foo
US Matt, Rocks
我真的不知道从哪里开始。有人知道吗?我在另一个线程上发现了一些语法,在 MSSQL 中可以正常工作,但在 hortonworks 中却不行。
Optimal way to concatenate/aggregate strings
非常感谢
我不是很熟悉 Hadoop,但是按照 Column to comma separated value in Hive 你可以做到这一点:
SELECT country, collect_set(Name)
FROM your_table
GROUP BY country;
使用 collect_set
将字符串聚合到数组中,使用 concat_ws
将数组转换为逗号分隔的字符串
select country, concat_ws(',', collect_set(Name))
from table
group by country