Skip to content

Commit 313b82a

Browse files
committed
fix param and metric name for count all
1 parent ece2def commit 313b82a

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

sql/src/main/scala/app/softnetwork/elastic/sql/package.scala

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package 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}
2020
import app.softnetwork.elastic.sql.function.geo.DistanceUnit
2121
import app.softnetwork.elastic.sql.function.time.CurrentFunction
2222
import 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

Comments
 (0)