public class SqlTimeConverter extends Object
DefaultTimeGrain and a list of
 SqlDatePartFunction to create groupBy statements on intervals of time.| Constructor and Description | 
|---|
SqlTimeConverter()
Builds a sql time converter which can group by, filter, and reparse dateTimes from a row in a ResultSet using the
  
buildDefaultGranularityToDateFunctionsMap() map. | 
SqlTimeConverter(Map<Granularity,List<org.apache.calcite.sql.fun.SqlDatePartFunction>> granularityToDateFunctionMap)
Builds a sql time converter which can group by, filter, and reparse dateTimes from a row in a ResultSet. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
static Map<Granularity,List<org.apache.calcite.sql.fun.SqlDatePartFunction>> | 
buildDefaultGranularityToDateFunctionsMap()
Builds the default mapping between  
Granularity and the SqlDatePartFunctions needed to group on
 and read into a DateTime. | 
List<org.apache.calcite.rex.RexNode> | 
buildGroupBy(org.apache.calcite.tools.RelBuilder builder,
            Granularity granularity,
            String timeColumn)
Builds a list of  
RexNode which will effectively groupBy the given Granularity. | 
org.apache.calcite.rex.RexNode | 
buildTimeFilters(org.apache.calcite.tools.RelBuilder builder,
                DruidAggregationQuery<?> druidQuery,
                String timestampColumn)
Builds the time filters to only select rows that occur within the intervals of the query. 
 | 
org.joda.time.DateTime | 
getIntervalStart(int offset,
                String[] recordValues,
                DruidAggregationQuery<?> druidQuery)
Given an array of strings (a row from a  
ResultSet) and the
 Granularity used to make groupBy statements on time, it will parse out a DateTime
 for the row which represents the beginning of the interval it was grouped on. | 
protected void | 
setDateTime(int value,
           org.apache.calcite.sql.fun.SqlDatePartFunction sqlDatePartFn,
           org.joda.time.MutableDateTime dateTime)
Sets the correct part of a  
DateTime corresponding to a
 SqlDatePartFunction. | 
List<org.apache.calcite.sql.fun.SqlDatePartFunction> | 
timeGrainToDatePartFunctions(Granularity granularity)
Gets a list of  
SqlDatePartFunction to be performed on a timestamp
 which can be used to group by the given Granularity. | 
public SqlTimeConverter()
buildDefaultGranularityToDateFunctionsMap() map.public SqlTimeConverter(Map<Granularity,List<org.apache.calcite.sql.fun.SqlDatePartFunction>> granularityToDateFunctionMap)
granularityToDateFunctionMap - The mapping defining what granularity needs to be kept in order to properly
 group by and reparse a dateTime.public static Map<Granularity,List<org.apache.calcite.sql.fun.SqlDatePartFunction>> buildDefaultGranularityToDateFunctionsMap()
Granularity and the SqlDatePartFunctions needed to group on
 and read into a DateTime.Granularity and SqlDatePartFunctions.public List<org.apache.calcite.sql.fun.SqlDatePartFunction> timeGrainToDatePartFunctions(Granularity granularity)
SqlDatePartFunction to be performed on a timestamp
 which can be used to group by the given Granularity.granularity - The granularity to map to a list of SqlDatePartFunction.public org.apache.calcite.rex.RexNode buildTimeFilters(org.apache.calcite.tools.RelBuilder builder,
                                                       DruidAggregationQuery<?> druidQuery,
                                                       String timestampColumn)
builder - The RelBuilder used for building queries.druidQuery - The druid query to build filters over.timestampColumn - The name of the timestamp column in the database.public List<org.apache.calcite.rex.RexNode> buildGroupBy(org.apache.calcite.tools.RelBuilder builder, Granularity granularity, String timeColumn)
RexNode which will effectively groupBy the given Granularity.builder - The RelBuilder used with calcite to build queries.granularity - The granularity to build the groupBy for.timeColumn - The name of the timestamp column.RexNode needed in the groupBy.public org.joda.time.DateTime getIntervalStart(int offset,
                                               String[] recordValues,
                                               DruidAggregationQuery<?> druidQuery)
ResultSet) and the
 Granularity used to make groupBy statements on time, it will parse out a DateTime
 for the row which represents the beginning of the interval it was grouped on.offset - the last column before the date fields.recordValues - The results returned by Sql needed to read the time columns.druidQuery - The original druid query which was made using calling
 buildGroupBy(RelBuilder, Granularity, String).protected void setDateTime(int value,
                           org.apache.calcite.sql.fun.SqlDatePartFunction sqlDatePartFn,
                           org.joda.time.MutableDateTime dateTime)
DateTime corresponding to a
 SqlDatePartFunction.value - The value to be set for the dateTime with the sqlDatePartFnsqlDatePartFn - The function used to extract part of a date with sql.dateTime - The original dateTime to create a copy of.Copyright © 2016–2018 Yahoo! Inc.. All rights reserved.