Разделить один столбец на несколько sql - PullRequest
1 голос
/ 13 октября 2019

У меня есть эта таблица:

Path           Value Time
name1.metric1   v1  t1
name1.metric2   v2  t1
name1.metric3   v3  t1
name1.metric4   v4  t1
name2.metric1   v5  t2
name2.metric2   v6  t2
name2.metric3   v7  t2
name2.metric4   v8  t2

В «Пути» есть четыре метрики для каждого пользователя с разными значениями. Время одинаково для каждой метрики одного пользователя.

Я хочу знать, как я могу разделить «Путь» на другие четыре столбца, например:

Path    metric1 metric2 metric3 metric4 Time
name1      v1     v2      v3      v4      t1
name2      v5     v6      v7      v8      t2

Я использую Clickhouse какБД, любые идеи, спасибо

1 Ответ

0 голосов
/ 13 октября 2019

Я не очень хорошо знаком с Clickhouse. В основном вам нужно условное агрегирование вместе с некоторыми строковыми операциями на path.

Примерно так:

select splitbychar(path, '.')[1] as name, time,
       max(case when path like '%.metric1' then value end) as value1,
       max(case when path like '%.metric2' then value end) as value2,
       max(case when path like '%.metric3' then value end) as value3,
       max(case when path like '%.metric4' then value end) as value4
from t
group by splitbychar(path, '.')[1], time
...