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

Joe McDonnell updated IMPALA-15286:
-----------------------------------
    Attachment: clickbench_query30.sql

> Rewrite SUM of linear equations to linear equation of SUMs / COUNTs
> -------------------------------------------------------------------
>
>                 Key: IMPALA-15286
>                 URL: https://issues.apache.org/jira/browse/IMPALA-15286
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Frontend
>            Reporter: Joe McDonnell
>            Priority: Major
>         Attachments: clickbench_query30.sql
>
>
> For a SQL that does SUM(a * x + b), this can be rewritten as a * SUM x + b* 
> COUNT x . During evaluation, this only needs to compute the SUM and COUNT on 
> a row-by-row basis and can do the multiplication and addition at the end. 
> This reduces the cost of these types of aggregation. It also can share 
> computation between multiple SUMs that use the same variables.
> ClickBench's SQL #30 has an extreme version of this:
> {noformat}
> SELECT SUM(ResolutionWidth),
>        SUM(ResolutionWidth + 1),
>        SUM(ResolutionWidth + 2),
>        SUM(ResolutionWidth + 3),
> ...
>        SUM(ResolutionWidth + 89)
> FROM hits;{noformat}
> This does a large number of individual aggregations. A rewrite of the SQL to 
> do this optimization allows the plan to only calculate the 
> SUM(ResolutionWidth) and COUNT(ResolutionWidth).
> {noformat}
> SELECT SUM(ResolutionWidth),
>        SUM(ResolutionWidth) + COUNT(ResolutionWidth),
>        SUM(ResolutionWidth) + 2 * COUNT(ResolutionWidth),
>        SUM(ResolutionWidth) + 3 * COUNT(ResolutionWidth),
> ...
>        SUM(ResolutionWidth) + 89 * COUNT(ResolutionWidth)
> FROM hits;{noformat}
> In my hand tests using the official ClickBench parquet file, this is about 8x 
> faster.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to