Github user xubo245 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1565#discussion_r163249066
--- Diff:
integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/timeseries/TimeseriesUtil.scala
---
@@ -0,0 +1,159 @@
+/*
+ * 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.spark.sql.execution.command.timeseries
+
+import java.sql.Timestamp
+
+import org.apache.spark.sql.execution.command.{DataMapField, Field}
+
+import org.apache.carbondata.core.constants.CarbonCommonConstants
+import org.apache.carbondata.core.metadata.datatype.DataTypes
+import org.apache.carbondata.core.metadata.schema.table.CarbonTable
+import org.apache.carbondata.core.preagg.TimeSeriesUDF
+import
org.apache.carbondata.spark.exception.MalformedCarbonCommandException
+
+/**
+ * Utility class for time series to keep
+ */
+object TimeSeriesUtil {
+
+ /**
+ * Below method will be used to validate whether column mentioned in
time series
+ * is timestamp column or not
+ *
+ * @param dmproperties
+ * data map properties
+ * @param parentTable
+ * parent table
+ * @return whether time stamp column
+ */
+ def validateTimeSeriesEventTime(dmproperties: Map[String, String],
+ parentTable: CarbonTable) {
+ val eventTime =
dmproperties.get(CarbonCommonConstants.TIMESERIES_EVENTTIME)
+ if (!eventTime.isDefined) {
+ throw new MalformedCarbonCommandException("Eventtime not defined in
time series")
+ } else {
+ val carbonColumn =
parentTable.getColumnByName(parentTable.getTableName, eventTime.get)
+ if (carbonColumn.getDataType != DataTypes.TIMESTAMP) {
+ throw new MalformedCarbonCommandException(
+ "Timeseries event time is only supported on Timestamp " +
+ "column")
+ }
+ }
+ }
+
+ /**
+ * Below method will be used to validate the hierarchy of time series
and its value
+ * validation will be done whether hierarchy order is proper or not and
hierarchy level
+ * value
+ *
+ * @param timeSeriesHierarchyDetails
+ * time series hierarchy string
+ */
+ def validateAndGetTimeSeriesHierarchyDetails(timeSeriesHierarchyDetails:
String): Array[
+ (String, String)] = {
+ val updatedtimeSeriesHierarchyDetails =
timeSeriesHierarchyDetails.toLowerCase
+ val timeSeriesHierarchy = updatedtimeSeriesHierarchyDetails.split(",")
+ val hierBuffer = timeSeriesHierarchy.map {
+ case f =>
+ val splits = f.split("=")
+ // checking hierarchy name is valid or not
+ if
(!TimeSeriesUDF.INSTANCE.TIMESERIES_FUNCTION.contains(splits(0).toLowerCase)) {
+ throw new MalformedCarbonCommandException(s"Not supported
heirarchy type: ${ splits(0) }")
+
+ }
+ // validating hierarchy level is valid or not
+ if (!splits(1).equals("1")) {
--- End diff --
Why we should "splits(1).equals("1")âï¼
Cann't we support hout=2 or other?
---