Class 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 types
      private 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 possible
      static java.util.List<java.lang.String> toDruidExpressions​(DruidQuery druidRel, RelDataType rowType, java.util.List<RexNode> rexNodes)
      Translate a list of Calcite RexNode to Druid expressions.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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.
    • Constructor Detail

      • DruidExpressions

        private DruidExpressions()
    • 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 Expression
        inputRowType - input row type of the rexNode to translate
        druidRel - 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 Calcite RexNode 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)