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