Улей: как устранить дублирующиеся подстроки - PullRequest
1 голос
/ 05 апреля 2020

Таблица кустов:

  create table T (i int, s string);

  insert into T values
  (1, "a1&b2"),
  (1, "b2&c3"),
  (2, "c1&d2"),
  (2, "c1");

Столбец s содержит значения, разделенные &

Желаемый вывод должен группироваться по 1-му столбцу и объединять столбец s, но иметь только одно уникальное значение подстроки ( разделены символом &):

   i    grouped_s
   --   -------------
   1    a1&b2&c3
   2    c1&d2

Вот моя попытка:

SELECT i,
concat_ws('&',
 collect_set(
  split(concat_ws('&' , collect_set(s)), "&" )
 )
)
as grouped_s
FROM T group by i;

Я получил это:

FAILED: SemanticException [Error 10128]: Line 6:24 Not yet supported place for UDAF 'collect_set' 

Также я хотел бы сделать это без использования вложенный SQL.

1 Ответ

1 голос
/ 05 апреля 2020

Использование вид сбоку + взрыв :

select t.i, concat_ws('&',collect_set(e.val)) as grouped_s
  from T t 
       lateral view outer explode(split(t.s,'&')) e as val
 group by t.i; 

Результат:

t.i grouped_s
1   a1&b2&c3
2   c1&d2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...