Подзапросы в Друиде - Невозможно построить план для запроса - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь написать 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...

Может ли кто-нибудь дать мне подсказку, что не так с моим кодом и как я могу решить мою проблему?

С уважением, Мартин

...