You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kylin.apache.org by "Roberto Tardío Olmos (Jira)" <ji...@apache.org> on 2020/03/01 11:59:00 UTC

[jira] [Commented] (KYLIN-4011) Kyling grouping function

    [ https://issues.apache.org/jira/browse/KYLIN-4011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17048540#comment-17048540 ] 

Roberto Tardío Olmos commented on KYLIN-4011:
---------------------------------------------

Hi,

In my case it does not work when I intorduce a join in order to use columns from dimensions tables and not from fact table.

For example;

The following query works well:

SELECT 
part_dt, 
lstg_format_name, 
grouping(part_dt)+grouping(lstg_format_name) as lochierarchy,
SUM(price),
RANK() OVER(
 PARTITION BY grouping(part_dt)+grouping(lstg_format_name),
 case when grouping(lstg_format_name) = 0 then part_dt end 
 ORDER BY SUM(price) asc) AS rank_within_parent
FROM kylin_sales 
GROUP BY 
grouping sets((part_dt, lstg_format_name))
ORDER BY
lochierarchy desc,
case when lochierarchy = 0 then part_dt end,
rank_within_parent ;

 

However, if I introduce just a join with any dimension table, the query returns the following error:  

*RowType=19, ColumnRowType=17* while executing SQL: "SELECT part_dt, lstg_format_name, grouping(part_dt)+grouping(lstg_format_name) as lochierarchy, SUM(price), RANK() OVER( PARTITION BY grouping(part_dt)+grouping(lstg_format_name), case when grouping(lstg_format_name) = 0 then part_dt end ORDER BY SUM(price) asc) AS rank_within_parent FROM kylin_sales JOIN KYLIN_CAL_DT on part_dt = cal_dt GROUP BY grouping sets((part_dt, lstg_format_name)) ORDER BY lochierarchy desc, case when lochierarchy = 0 then part_dt end, rank_within_parent LIMIT 50000"

The query executed (in bold the join added)

SELECT 
part_dt, 
lstg_format_name, 
grouping(part_dt)+grouping(lstg_format_name) as lochierarchy,
SUM(price),
RANK() OVER(
 PARTITION BY grouping(part_dt)+grouping(lstg_format_name),
 case when grouping(lstg_format_name) = 0 then part_dt end 
 ORDER BY SUM(price) asc) AS rank_within_parent
FROM kylin_sales 
*JOIN KYLIN_CAL_DT on part_dt = cal_dt*
GROUP BY 
grouping sets((part_dt, lstg_format_name))
ORDER BY
lochierarchy desc,
case when lochierarchy = 0 then part_dt end,
rank_within_parent ;

 

Regards!

Roberto

> Kyling grouping function
> ------------------------
>
>                 Key: KYLIN-4011
>                 URL: https://issues.apache.org/jira/browse/KYLIN-4011
>             Project: Kylin
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: v2.6.2
>            Reporter: tag
>            Assignee: Yaqian Zhang
>            Priority: Major
>         Attachments: image-2019-11-05-18-04-46-639.png
>
>
> {{```}}
> {{select dim1, case grouping(dim2) when 1 then 'ALL' else dim2 end, sum(col) as metric1 from table group by grouping sets((dim1, dim2), (dim1));}}
> {{```}}
> {{`case grouping(dim2) when 2 then 'All' else dim2 end` can work  in version v2.5.2, but invalid in version v2.6.2. }}
> {{How to query aggregate by grouping sets?}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)