Github user kunal642 commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/1542#discussion_r153068856
  
    --- Diff: 
integration/spark2/src/main/scala/org/apache/spark/sql/hive/CarbonPreAggregateRules.scala
 ---
    @@ -797,33 +798,59 @@ object CarbonPreInsertionCasts extends 
Rule[LogicalPlan] {
        * @return
        */
       private def transformAggregatePlan(logicalPlan: LogicalPlan): 
LogicalPlan = {
    +    val validExpressionsMap = 
scala.collection.mutable.LinkedHashMap.empty[String, NamedExpression]
         logicalPlan transform {
           case aggregate@Aggregate(_, aExp, _) =>
    -        val newExpressions = aExp.flatMap {
    -          case alias@Alias(attrExpression: AggregateExpression, _) =>
    -            attrExpression.aggregateFunction match {
    -              case Average(attr: AttributeReference) =>
    -                Seq(Alias(attrExpression
    -                  .copy(aggregateFunction = Sum(attr),
    -                    resultId = NamedExpression.newExprId), attr.name + 
"_sum")(),
    -                  Alias(attrExpression
    -                    .copy(aggregateFunction = Count(attr),
    -                      resultId = NamedExpression.newExprId), attr.name + 
"_count")())
    -              case Average(cast@Cast(attr: AttributeReference, _)) =>
    -                Seq(Alias(attrExpression
    -                  .copy(aggregateFunction = Sum(cast),
    -                    resultId = NamedExpression.newExprId),
    -                  attr.name + "_sum")(),
    -                  Alias(attrExpression
    -                    .copy(aggregateFunction = Count(cast),
    -                      resultId = NamedExpression.newExprId), attr.name + 
"_count")())
    -              case _ => Seq(alias)
    -            }
    -          case namedExpr: NamedExpression => Seq(namedExpr)
    +        aExp.foreach {
    +          case alias: Alias =>
    +            validExpressionsMap ++= 
validateAggregateFunctionAndGetAlias(alias)
    --- End diff --
    
    Yes, validateAggregateFunctionAndGetAlias function returns a 
Seq((columnName_aggFunction, Alias)) which is added to a map to remove any 
duplicate Alias entries.


---

Reply via email to