npawar commented on a change in pull request #6105:
URL: https://github.com/apache/incubator-pinot/pull/6105#discussion_r501129887



##########
File path: 
pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArrayFunctions.java
##########
@@ -0,0 +1,133 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pinot.common.function.scalar;
+
+import java.util.Arrays;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.pinot.spi.annotations.ScalarFunction;
+
+/**
+ * Inbuilt Array Transformation Functions
+ * The functions can be used as UDFs in Query when added in the 
FunctionRegistry.
+ * @ScalarFunction annotation is used with each method for the registration
+ *
+ * Example usage:
+ * <code> SELECT reverseArray(array) FROM baseballStats LIMIT 10 </code>
+ */
+public class ArrayFunctions {
+  private ArrayFunctions() {
+
+  }
+
+  /**
+   * @see ArrayUtils#reverse(Object[])
+   * @param value
+   * @return reversed input array in from end to start
+   */
+  @ScalarFunction(name = "array_reverse_int")
+  public static int[] arrayReverseInt(int[] value) {
+      ArrayUtils.reverse(value);
+      return value;
+  }
+
+  /**
+   * @see ArrayUtils#reverse(Object[])
+   * @param value
+   * @return reversed input array in from end to start
+   */
+  @ScalarFunction(name = "array_reverse_string")
+  public static String[] arrayReverseString(String[] value) {
+    ArrayUtils.reverse(value);
+    return value;
+  }
+
+  /**
+   * @see Arrays#stream(double[]).max()
+   * @param value
+   * @return find minimum value in input array
+   */
+  @ScalarFunction(name = "array_max")
+  public static int[] arrayMax(int[] value) {
+    return new int[] {Arrays.stream(value).max().getAsInt()};
+  }
+
+  /**
+   * @see Arrays#stream(double[]).min()
+   * @param value
+   * @return find maximum value in input array
+   */
+  @ScalarFunction(name = "array_min")
+  public static int[] arrayMin(int[] value) {
+    return new int[] {Arrays.stream(value).min().getAsInt()};
+  }
+
+  /**
+   * @see Arrays#stream(double[]).sum()
+   * @param value
+   * @return calculate sum of all values in input array
+   */
+  @ScalarFunction(name = "array_sum")

Review comment:
       @fx19880617 has already added min, max, sum as regular transform 
functions: 
https://github.com/apache/incubator-pinot/blob/master/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMaxTransformFunction.java
   Do we need them here again?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to