This is an automated email from the ASF dual-hosted git repository.

jihao pushed a commit to branch sql-migration
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit 02ad6ce4e0f4d0b4c335487d8eb4662284d919e6
Author: Jihao Zhang <jihzh...@linkedin.com>
AuthorDate: Tue Dec 1 11:34:11 2020 -0800

    [TE] migrate PQL queries to standard SQL
---
 .../datasource/pinot/PinotThirdEyeDataSource.java         |  8 ++++----
 .../apache/pinot/thirdeye/datasource/pinot/PqlUtils.java  | 15 ++++++++++-----
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PinotThirdEyeDataSource.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PinotThirdEyeDataSource.java
index 461e2ba..bb46979 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PinotThirdEyeDataSource.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PinotThirdEyeDataSource.java
@@ -168,19 +168,19 @@ public class PinotThirdEyeDataSource implements 
ThirdEyeDataSource {
                   datasetConfig.getPreAggregatedKeyword());
         }
 
-        String pql;
+        String sql;
         MetricConfigDTO metricConfig = metricFunction.getMetricConfig();
         if (metricConfig != null && metricConfig.isDimensionAsMetric()) {
-          pql = PqlUtils.getDimensionAsMetricPql(request, metricFunction, 
decoratedFilterSet, dataTimeSpec,
+          sql = PqlUtils.getDimensionAsMetricPql(request, metricFunction, 
decoratedFilterSet, dataTimeSpec,
               datasetConfig);
         } else {
-          pql = PqlUtils.getPql(request, metricFunction, decoratedFilterSet, 
dataTimeSpec);
+          sql = PqlUtils.getPql(request, metricFunction, decoratedFilterSet, 
dataTimeSpec);
         }
 
         ThirdEyeResultSetGroup resultSetGroup;
         final long tStartFunction = System.nanoTime();
         try {
-          resultSetGroup = this.executePQL(new PinotQuery(pql, dataset));
+          resultSetGroup = this.executePQL(new PinotQuery(sql, dataset));
           if (metricConfig != null) {
             ThirdeyeMetricsUtil.getRequestLog()
                 .success(this.getName(), metricConfig.getDataset(), 
metricConfig.getName(), tStartFunction, System.nanoTime());
diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PqlUtils.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PqlUtils.java
index fdd06e8..ccac459 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PqlUtils.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/pinot/PqlUtils.java
@@ -102,7 +102,7 @@ public class PqlUtils {
     String dataset = metricFunction.getDataset();
 
     StringBuilder sb = new StringBuilder();
-    String selectionClause = getSelectionClause(metricConfig, metricFunction);
+    String selectionClause = getSelectionClause(metricConfig, metricFunction, 
groupBy);
 
     sb.append("SELECT ").append(selectionClause).append(" FROM 
").append(dataset);
     String betweenClause = getBetweenClause(startTime, endTimeExclusive, 
dataTimeSpec, dataset);
@@ -120,14 +120,19 @@ public class PqlUtils {
     String groupByClause = getDimensionGroupByClause(groupBy, timeGranularity, 
dataTimeSpec);
     if (StringUtils.isNotBlank(groupByClause)) {
       sb.append(" ").append(groupByClause);
-      sb.append(" TOP ").append(limit);
+      sb.append(" LIMIT ").append(limit);
     }
 
     return sb.toString();
   }
 
-  private static String getSelectionClause(MetricConfigDTO metricConfig, 
MetricFunction metricFunction) {
+  private static String getSelectionClause(MetricConfigDTO metricConfig, 
MetricFunction metricFunction, List<String> groupBy) {
     StringBuilder builder = new StringBuilder();
+    if (!groupBy.isEmpty()) {
+      for (String groupByDimension : groupBy) {
+        builder.append(groupByDimension).append(", ");
+      }
+    }
     String metricName = null;
     if (metricFunction.getMetricName().equals("*")) {
       metricName = "*";
@@ -214,7 +219,7 @@ public class PqlUtils {
     String groupByClause = getDimensionGroupByClause(groupBy, timeGranularity, 
dataTimeSpec);
     if (StringUtils.isNotBlank(groupByClause)) {
       sb.append(" ").append(groupByClause);
-      sb.append(" TOP ").append(limit);
+      sb.append(" LIMIT ").append(limit);
     }
 
     return sb.toString();
@@ -393,7 +398,7 @@ public class PqlUtils {
     String quoteChar = "";
     if (!StringUtils.isNumeric(value)) {
       quoteChar = "\"";
-      if (value.contains(quoteChar)) {
+      if (value.contains(quoteChar) || StringUtils.isEmpty(value)) {
         quoteChar = "\'";
       }
       if (value.contains(quoteChar)) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to