Class GroupByLevelController


  • public class GroupByLevelController
    extends java.lang.Object
    This class is used to control the row number of group by level query. For example, selected series[root.sg.d1.s1, root.sg.d2.s1, root.sg2.d1.s1], level = 1; the result rows will be [root.sg.*.s1, root.sg2.*.s1], sLimit and sOffset will be used to control the result numbers rather than the selected series.
    • Constructor Detail

      • GroupByLevelController

        public GroupByLevelController​(int[] levels,
                                      TypeProvider typeProvider)
    • Method Detail

      • control

        public void control​(boolean isCountStar,
                            Expression expression,
                            java.lang.String alias)
      • generatePartialPathByLevel

        public org.apache.iotdb.commons.path.PartialPath generatePartialPathByLevel​(boolean isCountStar,
                                                                                    org.apache.iotdb.commons.path.PartialPath rawPath,
                                                                                    int[] pathLevels)
        Transform an originalPath to a partial path that satisfies given level. Path nodes don't satisfy the given level will be replaced by "*" except the sensor level, e.g. generatePartialPathByLevel("root.sg.dh.d1.s1", 2) will return "root.*.dh.*.s1".

        Especially, if count(*), then the sensor level will be replaced by "*" too.

        Returns:
        result partial path
      • getGroupedPathMap

        public java.util.Map<Expression,​java.util.Set<Expression>> getGroupedPathMap()
      • getAlias

        public java.lang.String getAlias​(java.lang.String columnName)
      • getRawPathToGroupedPathMap

        public java.util.Map<Expression,​Expression> getRawPathToGroupedPathMap()