Uploaded image for project: 'Kylin'
  1. Kylin
  2. KYLIN-5400

The query statement contains count(distinct), and an error is reported that distinct aggregation not supported

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.0-alpha
    • 5.0-alpha
    • Query Engine
    • None

    Description

       

      参考如下SQL,where中的两个and条件互斥。

      select count(distinct STR0)
      from TDVT.CALCS
      WHERE (CALCS."STR0" = '0330FH')
      AND (CALCS."STR0" = '0798FH')

      Root Cause

      where条件为 = 时,查询一定是互斥的,生成relnode之后会被解析为常量查询,走calcite,calcite这里有bug,不支持distinct aggregation然后报错。

       

      Fix Design

      修复Calcite的问题,难度比较大,时间跨度也会比较长。

      快速的修复方案,可以通过修改是否路由到calcite的判断条件(org.apache.kylin.query.engine.QueryExec#isCalciteEngineCapable),当AggregateRel的input是values并且aggCall是distinct的时候,使该常量查询路由到spark,绕过calcite的问题。

       

      Test

      Attachments

        1. image-2023-01-11-10-11-47-227.png
          69 kB
          Jiale He
        2. image-2023-01-11-10-12-17-625.png
          44 kB
          Jiale He
        3. image-2023-01-11-10-13-13-657.png
          69 kB
          Jiale He
        4. image-2023-01-11-10-13-27-688.png
          82 kB
          Jiale He
        5. image-2023-01-11-10-13-43-324.png
          90 kB
          Jiale He

        Activity

          People

            jlelehe Jiale He
            jlelehe Jiale He
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: