public Ordering getScanOrder() {
    return scanOrder;
  }
This node is responsible for the final aggregation merge operation. It will process the data from
TsBlock row by row. For one row, it will rollup the fields which have the same aggregate function
and belong to one bucket. Here, that two columns belong to one bucket means the partial paths of
device after rolling up in specific level are the same.

<p>For example, let's say there are two columns `root.sg.d1.s1` and `root.sg.d2.s1`.

<p>If the group by level parameter is [0, 1], then these two columns will belong to one bucket
and the bucket name is `root.sg.*.s1`.

<p>If the group by level parameter is [0, 2], then these two columns will not belong to one
bucket. And the total buckets are `root.*.d1.s1` and `root.*.d2.s1`
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java