[ https://issues.apache.org/jira/browse/FLINK-8903?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Fabian Hueske closed FLINK-8903. -------------------------------- Resolution: Fixed Fixed for 1.5.0 with 555e80a089c7d4a5d2d69d9a2f05d606e12d2eff Fixed for 1.6.0 with 8c042e378b65504c7d76302d508f1e33b2cfa524 > Built-in agg functions VAR_POP, VAR_SAMP, STDEV_POP, STDEV_SAMP are broken in > Group Windows > ------------------------------------------------------------------------------------------- > > Key: FLINK-8903 > URL: https://issues.apache.org/jira/browse/FLINK-8903 > Project: Flink > Issue Type: Bug > Components: Table API & SQL > Affects Versions: 1.3.2, 1.5.0, 1.4.2 > Reporter: lilizhao > Assignee: Fabian Hueske > Priority: Critical > Fix For: 1.5.0 > > Attachments: QQ图片20180312180143.jpg, TableAndSQLTest.java > > > The built-in aggregation functions VAR_POP, VAR_SAMP, STDEV_POP, STDEV_SAMP > are translated into regular AVG functions if they are applied in the context > of a Group Window aggregation (\{{GROUP BY TUMBLE/HOP/SESSION}}). > The reason is that these functions are internally represented as > {{SqlAvgAggFunction}} but with different {{SqlKind}}. When translating > Calcite aggregation functions to Flink Table agg functions, we only look at > the type of the class, not at the value of the {{kind}} field. We did not > notice that before, because in all other cases (regular {{GROUP BY}} without > windows or {{OVER}} windows, we have a translation rule > {{AggregateReduceFunctionsRule}} that decomposes the more complex functions > into expressions of {{COUNT}} and {{SUM}} functions such that we never > execute an {{AVG}} Flink function. That rule can only be applied on > {{LogicalAggregate}}, however, we represent group windows as > {{LogicalWindowAggregate}}, so the rule does not match. > We should fix this by: > 1. restrict the translation to Flink avg functions in {{AggregateUtil}} to > {{SqlKind.AVG}}. > 2. implement a rule (hopefully based on {{AggregateReduceFunctionsRule}}) > that decomposes the complex agg functions into the {{SUM}} and {{COUNT}}. > Step 1. is easy and a quick fix but we would get an exception "Unsupported > Function" if {{VAR_POP}} is used in a {{GROUP BY}} window. > Step 2. might be more involved, depending on how difficult it is to port the > rule. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)