У меня есть следующее требование: у меня есть таблица в следующем формате.
, и я хочу, чтобы она была преобразована в:
По сути, я хочу количество пользователей с различными комбинациями действий
Я хочу иметь этот формат, так как я хочу создатьTreeMap визуализация из этого.
Это то, что я делал до сих пор.Сначала выясните количество пользователей с группировками действий
WITH lookup AS
(
SELECT listagg(name,',') AS groupings,
processed_date,
guid
FROM warehouse.test
GROUP BY processed_date,
guid
)
SELECT groupings AS activity_groupings,
LENGTH(groupings) -LENGTH(REPLACE(groupings,',','')) + 1 AS count,
processed_date,
COUNT( guid) AS users
FROM lookup
GROUP BY processed_date,
groupings
Я помещаю результаты в отдельную таблицу
Затем я делю Split и объединяюсь так:
SELECT NULLIF(SPLIT_PART(groupings,',', 1),'') AS grouping_1,
COALESCE(NULLIF(SPLIT_PART(groupings,',', 2),''), grouping_1) AS grouping_2,
COALESCE(NULLIF(SPLIT_PART(groupings,',', 3),''), grouping_2, grouping_1) AS grouping_3,
num_users
FROM warehouse.groupings) AS expr_qry
GROUP BY grouping_1,
grouping_2,
grouping_3
Проблема в том, что первый запрос выполняется более 90 минут, так как у меня более 250 миллионов строк.
Должен быть лучший и эффективный способ сделать это.Буду признателен за любую голову.
Спасибо