Package org.apache.calcite.adapter.druid
Class DruidExpressions
- java.lang.Object
-
- org.apache.calcite.adapter.druid.DruidExpressions
-
public class DruidExpressions extends java.lang.Object
Expression utility class to transform Calcite expressions to Druid expressions when possible.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static java.util.Map<SqlTypeName,DruidType>
EXPRESSION_TYPES
Type mapping between Calcite SQL family types and native Druid expression typesprivate static char[]
SAFE_CHARS
Druid expression safe chars, must be sorted.
-
Constructor Summary
Constructors Modifier Constructor Description private
DruidExpressions()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.String
applyTimeExtract(java.lang.String timeExpression, java.lang.String druidUnit, java.util.TimeZone timeZone)
static java.lang.String
applyTimestampCeil(java.lang.String input, java.lang.String granularity, java.lang.String origin, java.util.TimeZone timeZone)
static java.lang.String
applyTimestampFloor(java.lang.String input, java.lang.String granularity, java.lang.String origin, java.util.TimeZone timeZone)
private static java.lang.String
escape(java.lang.String s)
static java.lang.String
fromColumn(java.lang.String columnName)
static java.lang.String
functionCall(java.lang.String functionName, java.util.List<java.lang.String> args)
static java.lang.String
nAryOperatorCall(java.lang.String druidOperator, java.util.List<java.lang.String> args)
static java.lang.String
nullLiteral()
static java.lang.String
numberLiteral(java.lang.Number n)
static java.lang.String
stringLiteral(java.lang.String s)
static java.lang.String
toDruidExpression(RexNode rexNode, RelDataType inputRowType, DruidQuery druidRel)
Translates Calcite rexNode to Druid Expression when possiblestatic java.util.List<java.lang.String>
toDruidExpressions(DruidQuery druidRel, RelDataType rowType, java.util.List<RexNode> rexNodes)
Translate a list of CalciteRexNode
to Druid expressions.
-
-
-
Field Detail
-
EXPRESSION_TYPES
static final java.util.Map<SqlTypeName,DruidType> EXPRESSION_TYPES
Type mapping between Calcite SQL family types and native Druid expression types
-
SAFE_CHARS
private static final char[] SAFE_CHARS
Druid expression safe chars, must be sorted.
-
-
Method Detail
-
toDruidExpression
@Nullable public static java.lang.String toDruidExpression(RexNode rexNode, RelDataType inputRowType, DruidQuery druidRel)
Translates Calcite rexNode to Druid Expression when possible- Parameters:
rexNode
- rexNode to convert to a Druid ExpressioninputRowType
- input row type of the rexNode to translatedruidRel
- Druid query- Returns:
- Druid Expression or null when can not convert the RexNode
-
fromColumn
public static java.lang.String fromColumn(java.lang.String columnName)
-
nullLiteral
public static java.lang.String nullLiteral()
-
numberLiteral
public static java.lang.String numberLiteral(java.lang.Number n)
-
stringLiteral
public static java.lang.String stringLiteral(java.lang.String s)
-
escape
private static java.lang.String escape(java.lang.String s)
-
functionCall
public static java.lang.String functionCall(java.lang.String functionName, java.util.List<java.lang.String> args)
-
nAryOperatorCall
public static java.lang.String nAryOperatorCall(java.lang.String druidOperator, java.util.List<java.lang.String> args)
-
toDruidExpressions
@Nullable public static java.util.List<java.lang.String> toDruidExpressions(DruidQuery druidRel, RelDataType rowType, java.util.List<RexNode> rexNodes)
Translate a list of CalciteRexNode
to Druid expressions.- Parameters:
rexNodes
- list of Calcite expressions meant to be applied on top of the rows- Returns:
- list of Druid expressions in the same order as rexNodes, or null if not possible. If a non-null list is returned, all elements will be non-null.
-
applyTimestampFloor
public static java.lang.String applyTimestampFloor(java.lang.String input, java.lang.String granularity, java.lang.String origin, java.util.TimeZone timeZone)
-
applyTimestampCeil
public static java.lang.String applyTimestampCeil(java.lang.String input, java.lang.String granularity, java.lang.String origin, java.util.TimeZone timeZone)
-
applyTimeExtract
public static java.lang.String applyTimeExtract(java.lang.String timeExpression, java.lang.String druidUnit, java.util.TimeZone timeZone)
-
-