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

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


The following commit(s) were added to refs/heads/master by this push:
     new 7341670  [TE] datasource - change epoch time column to aggregation 
granularity (#3458)
7341670 is described below

commit 7341670667d1df852ea1a0c9f156a384b8f4f6e5
Author: Xiaohui Sun <[email protected]>
AuthorDate: Mon Nov 12 13:04:19 2018 -0800

    [TE] datasource - change epoch time column to aggregation granularity 
(#3458)
---
 .../thirdeye/datasource/pinot/PqlUtils.java        | 25 ++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/datasource/pinot/PqlUtils.java
 
b/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/datasource/pinot/PqlUtils.java
index 9f9139d..39c1cf1 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/datasource/pinot/PqlUtils.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/datasource/pinot/PqlUtils.java
@@ -21,6 +21,7 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
+import com.linkedin.pinot.common.data.TimeGranularitySpec;
 import com.linkedin.thirdeye.api.TimeGranularity;
 import com.linkedin.thirdeye.api.TimeSpec;
 import com.linkedin.thirdeye.constant.MetricAggFunction;
@@ -347,12 +348,28 @@ public class PqlUtils {
     return AND.join(components);
   }
 
+  private static String convertEpochToAggGranularity(String timeColumnName, 
TimeSpec timeSpec, TimeGranularity aggregationGranularity) {
+    String groupByTimeColumnName = 
String.format("dateTimeConvert(%s,'%d:%s:%s','%d:%s:%s','%d:%s')", 
timeColumnName,
+        timeSpec.getDataGranularity().getSize(), 
timeSpec.getDataGranularity().getUnit(), timeSpec.getFormat(),
+        timeSpec.getDataGranularity().getSize(), 
timeSpec.getDataGranularity().getUnit(), timeSpec.getFormat(),
+        aggregationGranularity.getSize(), aggregationGranularity.getUnit());
+    return groupByTimeColumnName;
+  }
+
   private static String getDimensionGroupByClause(List<String> groupBy,
-      TimeGranularity aggregationGranulity, TimeSpec timeSpec) {
+      TimeGranularity aggregationGranularity, TimeSpec timeSpec) {
     String timeColumnName = timeSpec.getColumnName();
-    List<String> groups = new LinkedList<String>();
-    if (aggregationGranulity != null && !groups.contains(timeColumnName)) {
-      groups.add(timeColumnName);
+    List<String> groups = new LinkedList<>();
+    if (aggregationGranularity != null && !groups.contains(timeColumnName)) {
+      // Convert the time column to aggregation granularity if it is epoch.
+      // E.g., 
dateTimeConvert(timestampInEpoch,'1:MILLISECONDS:EPOCH','1:MILLISECONDS:EPOCH','15:MINUTES')
+      if 
(timeSpec.getFormat().equals(TimeGranularitySpec.TimeFormat.EPOCH.toString())
+          && !timeSpec.getDataGranularity().equals(aggregationGranularity)) {
+        String groupByTimeColumnName = 
convertEpochToAggGranularity(timeColumnName, timeSpec, aggregationGranularity);
+        groups.add(groupByTimeColumnName);
+      } else {
+        groups.add(timeColumnName);
+      }
     }
     if (groupBy != null) {
       groups.addAll(groupBy);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to