Xiao Li created SPARK-24424:
-------------------------------

             Summary: Support ANSI-SQL compliant syntax for ROLLUP, CUBE and 
GROUPING SET
                 Key: SPARK-24424
                 URL: https://issues.apache.org/jira/browse/SPARK-24424
             Project: Spark
          Issue Type: Improvement
          Components: SQL
    Affects Versions: 2.3.0
            Reporter: Xiao Li


Currently, our Group By clause follows Hive 
[https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation,+Cube,+Grouping+and+Rollup]
 :
 However, this does not match ANSI SQL compliance. The proposal is to update 
our parser and analyzer for ANSI compliance. 
 For example,
{code:java}
GROUP BY col1, col2 WITH ROLLUP

GROUP BY col1, col2 WITH CUBE

GROUP BY col1, col2 GROUPING SET ...
{code}
It is nice to support ANSI SQL syntax at the same time.
{code:java}
GROUP BY ROLLUP(col1, col2)

GROUP BY CUBE(col1, col2)

GROUP BY GROUPING SET(...) 
{code}
Note, we only need to support one-level grouping set in this stage. That means, 
nested grouping set is not supported.

The parser changes should be like

 
group-by-expressions
 
>>-GROUP BY----+-hive-sql-group-by-expressions-----+---><
               *{color:#ff0000}'-ansi-sql-grouping-set-expressions-'{color}*    
 
hive-sql-group-by-expressions
 
                        '--GROUPING SETS--(--grouping-set-expressions--)--'
   .-,--------------.   +--WITH CUBE--------------------------------------+
   V                |   +--WITH ROLLUP------------------------------------+
>>---+-expression-+-+---+-------------------------------------------------+-><
 
grouping-expressions-list
 
   .-,--------------.  
   V                |  
>>---+-expression-+-+--><
 
 
grouping-set-expressions
 
    .-,----------------------------.
    |      .-,--------------.      |
    |      V                |      |
    V '-(------expression---+-)-'  |
>>----+-expression--------------+--+-><
 
 
{color:#ff0000}ansi-sql-grouping-set-expressions{color}
{color:#ff0000} {color}
{color:#ff0000}>>-+-ROLLUP--(--grouping-expression-list--)---------+--><{color}
{color:#ff0000}   +-CUBE--(--grouping-expression-list--)-----------+   {color}
{color:#ff0000}   '-GROUPING SETS--(--grouping-set-expressions--)--' {color}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to