首页 > 解决方案 > Druid 中的子查询 - 无法构建查询计划

问题描述

我正在尝试在 Druid/Superset 中编写一个 SQL 查询,它对来自同一个表的数据执行两个不同的时间间隔(比如说过去 7 天和过去 30 天)的“GROUP BY”并加入两个结果。例如,第一个 GROUP BY 的结果包含列 'col1, col2, col3, freq1'(freq1 是聚合产生的计数)。第二个结果包含列“col1、col2、col3、freq2”。我想得到以下输出:'col1,col2,col3,freq1,freq2'。问题是,Druid 并不完全支持连接。我试过这样:

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 ...

有人可以给我一个提示,我的代码有什么问题,我该如何解决我的问题?

最好的问候马丁

标签: sqljoinsubquerydruidsuperset

解决方案


推荐阅读