Jackie-Jiang commented on code in PR #11773:
URL: https://github.com/apache/pinot/pull/11773#discussion_r1367496608


##########
pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeConversionHopTransformFunction.java:
##########
@@ -0,0 +1,160 @@
+/**
+ * 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.core.operator.transform.function;
+
+import java.util.List;
+import java.util.Map;
+import org.apache.pinot.core.operator.ColumnContext;
+import org.apache.pinot.core.operator.blocks.ValueBlock;
+import org.apache.pinot.core.operator.transform.TransformResultMetadata;
+import 
org.apache.pinot.core.operator.transform.transformer.datetimehop.BaseDateTimeWindowHopTransformer;
+import 
org.apache.pinot.core.operator.transform.transformer.datetimehop.DateTimeWindowHopTransformerFactory;
+import 
org.apache.pinot.core.operator.transform.transformer.datetimehop.EpochToEpochWindowHopTransformer;
+import 
org.apache.pinot.core.operator.transform.transformer.datetimehop.EpochToSDFHopWindowTransformer;
+import 
org.apache.pinot.core.operator.transform.transformer.datetimehop.SDFToEpochWindowHopTransformer;
+import 
org.apache.pinot.core.operator.transform.transformer.datetimehop.SDFToSDFWindowHopTransformer;
+import org.roaringbitmap.RoaringBitmap;
+
+/**
+ * The <code>DateTimeConversionHopTransformFunction</code> class implements 
the date time conversion
+ * with hop transform function.
+ * <ul>
+ *   <li>
+ *     This transform function should be invoked with arguments:
+ *     <ul>
+ *       <li>Column name to convert. E.g. Date</li>
+ *       <li>Input format of the column. E.g. 1:HOURS:EPOCH</li>

Review Comment:
   Let's document the new pipe separated format (see `DateTimeFormatSpec` for 
details), and use the new format in the tests. Old colon separated format is 
deprecated



##########
pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java:
##########
@@ -129,6 +129,13 @@ public enum TransformFunctionType {
       OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY, 
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER,
           SqlTypeFamily.CHARACTER)), "date_time_convert"),
 
+  DATE_TIME_CONVERT_WINDOW_HOP("dateTimeConvertWindowHop",
+                           ReturnTypes.TO_ARRAY,

Review Comment:
   (code format) Can you apply [Pinot 
Style](https://docs.pinot.apache.org/developers/developers-and-contributors/code-setup#set-up-ide)
 and reformat all the changes?



##########
pinot-core/src/main/java/org/apache/pinot/core/operator/transform/transformer/datetimehop/BaseDateTimeWindowHopTransformer.java:
##########
@@ -0,0 +1,92 @@
+/**
+ * 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.core.operator.transform.transformer.datetimehop;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.Nonnull;
+import org.apache.pinot.core.operator.transform.transformer.DataTransformer;
+import org.apache.pinot.spi.data.DateTimeFormatSpec;
+import org.apache.pinot.spi.data.DateTimeFormatUnitSpec;
+import org.apache.pinot.spi.data.DateTimeGranularitySpec;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormatter;
+
+public abstract class BaseDateTimeWindowHopTransformer<I, O> implements 
DataTransformer<I, O> {
+  private final int _inputTimeSize;
+  private final TimeUnit _inputTimeUnit;
+  private final DateTimeFormatter _inputDateTimeFormatter;
+  private final int _outputTimeSize;
+  private final DateTimeFormatUnitSpec.DateTimeTransformUnit _outputTimeUnit;
+  private final DateTimeFormatter _outputDateTimeFormatter;
+  private final long _outputGranularityMillis;
+  protected final long _hopWindowSizeMillis;
+
+  public BaseDateTimeWindowHopTransformer(@Nonnull DateTimeFormatSpec 
inputFormat,

Review Comment:
   (convention) We usually only annotate `@Nullable` and assume everything 
non-null if not annotated. Same for other classes



##########
pinot-core/src/main/java/org/apache/pinot/core/operator/transform/transformer/datetimehop/EpochToEpochWindowHopTransformer.java:
##########
@@ -0,0 +1,48 @@
+/**
+ * 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.core.operator.transform.transformer.datetimehop;
+
+import java.util.List;
+import javax.annotation.Nonnull;
+import org.apache.pinot.spi.data.DateTimeFormatSpec;
+import org.apache.pinot.spi.data.DateTimeGranularitySpec;
+
+public class EpochToEpochWindowHopTransformer extends 
BaseDateTimeWindowHopTransformer<long[], long[][]> {
+  public EpochToEpochWindowHopTransformer(@Nonnull DateTimeFormatSpec 
inputFormat,
+                                          @Nonnull DateTimeFormatSpec 
outputFormat,
+                                          @Nonnull DateTimeGranularitySpec 
outputGranularity,
+                                          @Nonnull DateTimeGranularitySpec 
hopSize) {
+    super(inputFormat, outputFormat, outputGranularity, hopSize);
+  }
+
+  @Override
+  public void transform(@Nonnull long[] input, @Nonnull long[][] output, int 
length) {
+    for (int i = 0; i < length; i++) {
+      long epochTime = input[i];
+      long millisSinceEpoch = transformEpochToMillis(epochTime);
+      List<Long> hopWindows = hopWindows(millisSinceEpoch);
+      output[i] = hopWindows

Review Comment:
   Suggest not using stream API for performance sensitive path



-- 
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.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

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