[
https://issues.apache.org/jira/browse/PHOENIX-1772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15212109#comment-15212109
]
James Taylor commented on PHOENIX-1772:
---------------------------------------
Hello [~prasad] - [~jayapriya90] had proposed this work for the GSoC program
last year, but unfortunately missed the deadline for submitting it (so no work
as been done on it). I'm not sure what your situation is, but perhaps you could
revive this idea by doing the same this year for GSoC (but the deadline is fast
approaching), or an alternative would be to to do it on your own. I'm happy to
provide technical assistance as needed.
> Add CUBE/ROLLUP/GROUPING SET operators for advanced aggregations
> ----------------------------------------------------------------
>
> Key: PHOENIX-1772
> URL: https://issues.apache.org/jira/browse/PHOENIX-1772
> Project: Phoenix
> Issue Type: New Feature
> Reporter: Jayapriya Surendran
> Labels: gsoc2016, java, sql
> Attachments: GSoCProposal.pdf
>
>
> I noticed from Phoenix language documentation (
> http://phoenix.apache.org/language/index.html ) that Phoenix is missing
> CUBE/ROLLUP and GROUPING_SET operators which are already supported by other
> similar projects like Apache Pig and Apache Hive. Here is brief overview of
> my proposal (the syntax that is proposed below is same as PostgreSQL
> https://wiki.postgresql.org/wiki/Grouping_Sets)
> *Proposed syntax for CUBE:*
> SELECT name, place, SUM(count) FROM cars GROUP BY CUBE(name, place);
> For every row that we process we need to emit 2^n combinations of rows where
> n corresponds to number of aggregate columns. For the above example query,
> for every row we need to emit 4 rows, one for each level of aggregations
> {(name, place), (name, *), (*, place), (*, *)}.
> *Proposed syntax for ROLLUP:*
> SELECT name, place, SUM(count) FROM cars GROUP BY ROLLUP(name, place);
> For every row that we process we need to emit n+1 combinations of rows where
> n corresponds to number of aggregate columns. For the above example query,
> for every row we need to emit 3 rows, one for each hierarchical level of
> aggregations {(name, place), (name, *), (*, *)}.
> *Propose syntax for GROUPING_SETS:*
> SELECT name, place, SUM(count) FROM cars GROUP BY GROUPING SETS(name, ());
> For every row that we process we need to emit n combinations of rows where n
> corresponds to size of grouping set. For the above example query, for every
> row we need to emit 2 rows, one for each specified level of aggregations
> {(name, *), (*, *)}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)