You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kylin.apache.org by "Xiaoxiang Yu (Jira)" <ji...@apache.org> on 2023/03/29 07:10:00 UTC

[jira] [Resolved] (KYLIN-5400) The query statement contains count(distinct), and an error is reported that distinct aggregation not supported

     [ https://issues.apache.org/jira/browse/KYLIN-5400?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Xiaoxiang Yu resolved KYLIN-5400.
---------------------------------
    Resolution: Fixed

> The query statement contains count(distinct), and an error is reported that distinct aggregation not supported
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: KYLIN-5400
>                 URL: https://issues.apache.org/jira/browse/KYLIN-5400
>             Project: Kylin
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: 5.0-alpha
>            Reporter: Jiale He
>            Assignee: Jiale He
>            Priority: Major
>             Fix For: 5.0-alpha
>
>         Attachments: image-2023-01-11-10-11-47-227.png, image-2023-01-11-10-12-17-625.png, image-2023-01-11-10-13-13-657.png, image-2023-01-11-10-13-27-688.png, image-2023-01-11-10-13-43-324.png
>
>
>  
> 参考如下SQL,where中的两个and条件互斥。
> {code:java}
> select count(distinct STR0)
> from TDVT.CALCS
> WHERE (CALCS."STR0" = '0330FH')
> AND (CALCS."STR0" = '0798FH'){code}
> h1. Root Cause
> where条件为 = 时,查询一定是互斥的,生成relnode之后会被解析为常量查询,走calcite,calcite这里有bug,不支持distinct aggregation然后报错。
> !image-2023-01-11-10-11-47-227.png|width=644,height=172!
>  
> h1. Fix Design
> 修复Calcite的问题,难度比较大,时间跨度也会比较长。
> 快速的修复方案,可以通过修改是否路由到calcite的判断条件(org.apache.kylin.query.engine.QueryExec#isCalciteEngineCapable),当AggregateRel的input是values并且aggCall是distinct的时候,使该常量查询路由到spark,绕过calcite的问题。
> !image-2023-01-11-10-12-17-625.png|width=819,height=100!
>  
> h1. Test
> !image-2023-01-11-10-13-13-657.png|width=641,height=374!
> !image-2023-01-11-10-13-27-688.png|width=651,height=371!
> !image-2023-01-11-10-13-43-324.png|width=808,height=165!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)