Я пытаюсь написать SQL-запрос в Druid / Superset, который выполняет 'GROUP BY' для двух разных временных интервалов (скажем, последние 7 дней и последние 30 дней) для данных из одной таблицы и объединяет оба результата,Например, результат первого GROUP BY содержит столбцы «col1, col2, col3, freq1» (freq1 - это число, полученное в результате агрегации).Второй результат содержит столбцы «col1, col2, col3, freq2».Я хотел бы получить следующий вывод: 'col1, col2, col3, freq1, freq2'.Проблема в том, что друид не полностью поддерживает соединения.Я пробовал это так:
WITH
interval1 AS
(
SELECT col1, col2, col3, COUNT(*) AS freq
FROM pv_sample
WHERE __time >= TIME_SHIFT(CURRENT_TIMESTAMP, 'P1D', -7)
AND __time <= CURRENT_TIMESTAMP
GROUP BY col1, col2, col3
LIMIT 10
),
interval2 AS
(
SELECT col1, col2, col3, COUNT(*) AS freq
FROM pv_sample
WHERE __time >= TIME_SHIFT(CURRENT_TIMESTAMP, 'P1D', -30)
AND __time <= CURRENT_TIMESTAMP
GROUP BY col1, col2, col3
LIMIT 10
)
SELECT i1.col1, i1.col2, i1.col3, i1.freq AS freq1, i2.freq AS freq2
FROM interval1 i1, interval2 i2
WHERE i1.col1 = i2.col1 AND
i1.col2 = i2.col2 AND
i1.col3 = i2.col3
Результат был: Неизвестное исключение (io.druid.java.util.common.ISE): Невозможно построить план для запроса: WITH interval1 AS (SELECT...
Может ли кто-нибудь дать мне подсказку, что не так с моим кодом и как я могу решить мою проблему?
С уважением, Мартин