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/incubator-pinot.git
The following commit(s) were added to refs/heads/master by this push: new 4e88da6 Add datetime function with 2 arguments (#7116) 4e88da6 is described below commit 4e88da63949824abac0eea04baa1d6fe0292108f Author: Kartik Khare <kharekar...@gmail.com> AuthorDate: Thu Jul 8 01:38:30 2021 +0530 Add datetime function with 2 arguments (#7116) Add dateTrunc function with 2 arguments --- .../pinot/common/function/scalar/DateTimeFunctions.java | 11 +++++++++++ .../transform/function/DateTruncTransformFunction.java | 9 ++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java index 350184d..a799d08 100644 --- a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java +++ b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java @@ -594,6 +594,17 @@ public class DateTimeFunctions { } /** + * The sql compatible date_trunc function for epoch time + * @param unit truncate to unit (millisecond, second, minute, hour, day, week, month, quarter, year) + * @param timeValue value to truncate + * @return truncated timeValue in TimeUnit.MILLISECONDS + */ + @ScalarFunction + public long dateTrunc(String unit, long timeValue){ + return dateTrunc(unit, timeValue, TimeUnit.MILLISECONDS.name()); + } + + /** * The sql compatible date_trunc function for epoch time. * @param unit truncate to unit (millisecond, second, minute, hour, day, week, month, quarter, year) * @param timeValue value to truncate diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java index a610687..7ee76f6 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java @@ -30,6 +30,7 @@ import org.apache.pinot.core.plan.DocIdSetPlanNode; import org.apache.pinot.segment.spi.datasource.DataSource; import org.joda.time.DateTimeField; + /** * The <code>DateTruncTransformationFunction</code> class implements the sql compatible date_trunc function for TIMESTAMP type. * <p> @@ -94,15 +95,17 @@ public class DateTruncTransformFunction extends BaseTransformFunction { @Override public void init(List<TransformFunction> arguments, Map<String, DataSource> dataSourceMap) { - Preconditions.checkArgument(arguments.size() >= 3 && arguments.size() <= 5, - "Between three to five arguments are required, example: %s", EXAMPLE_INVOCATION); + Preconditions.checkArgument(arguments.size() >= 2 && arguments.size() <= 5, + "Between two to five arguments are required, example: %s", EXAMPLE_INVOCATION); String unit = ((LiteralTransformFunction) arguments.get(0)).getLiteral().toLowerCase(); TransformFunction valueArgument = arguments.get(1); Preconditions.checkArgument( !(valueArgument instanceof LiteralTransformFunction) && valueArgument.getResultMetadata().isSingleValue(), "The second argument of dateTrunc transform function must be a single-valued column or a transform function"); _mainTransformFunction = valueArgument; - String inputTimeUnitStr = ((LiteralTransformFunction) arguments.get(2)).getLiteral().toUpperCase(); + String inputTimeUnitStr = + (arguments.size() >= 3) ? ((LiteralTransformFunction) arguments.get(2)).getLiteral().toUpperCase() + : TimeUnit.MILLISECONDS.name(); _inputTimeUnit = TimeUnit.valueOf(inputTimeUnitStr); String timeZone = arguments.size() >= 4 ? ((LiteralTransformFunction) arguments.get(3)).getLiteral() : UTC_TZ; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org