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]