1616
1717package app .softnetwork .elastic
1818
19- import app .softnetwork .elastic .sql .function .aggregate .{MAX , MIN }
19+ import app .softnetwork .elastic .sql .function .aggregate .{COUNT , MAX , MIN }
2020import app .softnetwork .elastic .sql .function .geo .DistanceUnit
2121import app .softnetwork .elastic .sql .function .time .CurrentFunction
2222import app .softnetwork .elastic .sql .operator ._
@@ -625,12 +625,10 @@ package object sql {
625625 def bucket : Option [Bucket ]
626626 def hasBucket : Boolean = bucket.isDefined
627627
628- def allMetricsPath : Map [String , String ] = {
629- if (isAggregation) {
630- val metricName = aliasOrName
631- Map (metricName -> metricName)
632- } else {
633- Map .empty
628+ lazy val allMetricsPath : Map [String , String ] = {
629+ metricName match {
630+ case Some (name) => Map (name -> name)
631+ case _ => Map .empty
634632 }
635633 }
636634
@@ -667,7 +665,7 @@ package object sql {
667665
668666 lazy val aliasOrName : String = fieldAlias.getOrElse(name)
669667
670- def path : String =
668+ lazy val path : String =
671669 nestedElement match {
672670 case Some (ne) =>
673671 name.split(" \\ ." ) match {
@@ -677,13 +675,32 @@ package object sql {
677675 case None => name
678676 }
679677
680- def paramName : String =
681- if (isAggregation && functions.size == 1 ) s " params. $aliasOrName"
678+ lazy val paramName : String =
679+ if (isAggregation && functions.size == 1 ) s " params. ${metricName.getOrElse( aliasOrName)} "
682680 else if (path.nonEmpty)
683681 s " doc[' $path'].value "
684682 else " "
685683
686- def script : Option [String ] =
684+ lazy val metricName : Option [String ] =
685+ aggregateFunction match {
686+ case Some (af) =>
687+ af match {
688+ case COUNT =>
689+ aliasOrName match {
690+ case " *" =>
691+ if (distinct) {
692+ Some (s " count_distinct_all " )
693+ } else {
694+ Some (s " count_all " )
695+ }
696+ case _ => Some (aliasOrName)
697+ }
698+ case _ => Some (aliasOrName)
699+ }
700+ case _ => None
701+ }
702+
703+ lazy val script : Option [String ] =
687704 if (isTemporal) {
688705 var orderedFunctions = FunctionUtils .transformFunctions(this ).reverse
689706
@@ -777,7 +794,7 @@ package object sql {
777794 this
778795 }
779796
780- override def value : String =
797+ override lazy val value : String =
781798 script match {
782799 case Some (s) => s
783800 case _ => painless(None )
0 commit comments