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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1783f2a10a Add extract(quarter/dow/doy) support (#11388)
1783f2a10a is described below

commit 1783f2a10aae605dc424689be3a7b767556c27b9
Author: Saurabh Dubey <[email protected]>
AuthorDate: Sun Aug 20 03:40:19 2023 +0530

    Add extract(quarter/dow/doy) support (#11388)
---
 .../transform/function/ExtractTransformFunction.java       | 14 +++++++++++++-
 .../pinot/integration/tests/custom/TimestampTest.java      | 11 ++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java
index b92d19c270..19ee62a314 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java
@@ -36,7 +36,7 @@ public class ExtractTransformFunction extends 
BaseTransformFunction {
   protected Chronology _chronology = ISOChronology.getInstanceUTC();
 
   private enum Field {
-    YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
+    YEAR, QUARTER, MONTH, DAY, DOY, DOW, HOUR, MINUTE, SECOND
   }
 
   @Override
@@ -76,6 +76,10 @@ public class ExtractTransformFunction extends 
BaseTransformFunction {
           accessor = _chronology.year();
           output[i] = accessor.get(timestamps[i]);
           break;
+        case QUARTER:
+          accessor = _chronology.monthOfYear();
+          output[i] = (accessor.get(timestamps[i]) - 1) / 3 + 1;
+          break;
         case MONTH:
           accessor = _chronology.monthOfYear();
           output[i] = accessor.get(timestamps[i]);
@@ -84,6 +88,14 @@ public class ExtractTransformFunction extends 
BaseTransformFunction {
           accessor = _chronology.dayOfMonth();
           output[i] = accessor.get(timestamps[i]);
           break;
+        case DOY:
+          accessor = _chronology.dayOfYear();
+          output[i] = accessor.get(timestamps[i]);
+          break;
+        case DOW:
+          accessor = _chronology.dayOfWeek();
+          output[i] = accessor.get(timestamps[i]);
+          break;
         case HOUR:
           accessor = _chronology.hourOfDay();
           output[i] = accessor.get(timestamps[i]);
diff --git 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/custom/TimestampTest.java
 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/custom/TimestampTest.java
index c9995e3785..af526d77e3 100644
--- 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/custom/TimestampTest.java
+++ 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/custom/TimestampTest.java
@@ -138,7 +138,10 @@ public class TimestampTest extends 
CustomDataQueryClusterIntegrationTest {
         + "WEEK_OF_YEAR(ts1), WEEK_OF_YEAR(ts2),\n"
         + "DAY_OF_YEAR(ts1), DAY_OF_YEAR(ts2),\n"
         + "DAY_OF_MONTH(ts1), DAY_OF_MONTH(ts2),\n"
-        + "DAY_OF_WEEK(ts1), DAY_OF_WEEK(ts2)\n"
+        + "DAY_OF_WEEK(ts1), DAY_OF_WEEK(ts2),\n"
+        + "DOY(ts1), DOY(ts2),\n"
+        + "DOW(ts1), DOW(ts2),\n"
+        + "QUARTER(ts1), QUARTER(ts2)\n"
         + "FROM %s\n"
         + "LIMIT %d\n", getTableName(), getCountStarResult());
     JsonNode jsonNode = postQuery(query);
@@ -165,6 +168,12 @@ public class TimestampTest extends 
CustomDataQueryClusterIntegrationTest {
           jsonNode.get("resultTable").get("rows").get(i).get(19).asInt());
       
assertEquals(jsonNode.get("resultTable").get("rows").get(i).get(20).asInt(),
           jsonNode.get("resultTable").get("rows").get(i).get(21).asInt());
+      
assertEquals(jsonNode.get("resultTable").get("rows").get(i).get(22).asInt(),
+          jsonNode.get("resultTable").get("rows").get(i).get(23).asInt());
+      
assertEquals(jsonNode.get("resultTable").get("rows").get(i).get(24).asInt(),
+          jsonNode.get("resultTable").get("rows").get(i).get(25).asInt());
+      
assertEquals(jsonNode.get("resultTable").get("rows").get(i).get(26).asInt(),
+          jsonNode.get("resultTable").get("rows").get(i).get(27).asInt());
     }
   }
 


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

Reply via email to