public static List<CarbonDimension> addChildrenForComplexTypeDimension(List<CarbonDimension> queryDimensions,List<CarbonDimension> tableBlockDimensions){
  List<CarbonDimension> updatedQueryDimension=new ArrayList<CarbonDimension>();
  int numberOfChildren=0;
  for (  CarbonDimension queryDimension : queryDimensions) {
    if (queryDimension.numberOfChild() == 0) {
      updatedQueryDimension.add(queryDimension);
    }
    numberOfChildren=queryDimension.getOrdinal() + queryDimension.numberOfChild();
    for (int j=queryDimension.getOrdinal(); j < numberOfChildren; j++) {
      updatedQueryDimension.add(tableBlockDimensions.get(j));
    }
  }
  return updatedQueryDimension;
}

public static List < CarbonDimension > addChildrenForComplexTypeDimension ( List < CarbonDimension > queryDimensions , List < CarbonDimension > tableBlockDimensions ) { List < CarbonDimension > updatedQueryDimension = new ArrayList < CarbonDimension > ( ) ; int numberOfChildren = 0 ; for ( CarbonDimension queryDimension : queryDimensions ) { if ( queryDimension . numberOfChild ( ) == 0 ) { updatedQueryDimension . add ( queryDimension ) ; } numberOfChildren = queryDimension . getOrdinal ( ) + queryDimension . numberOfChild ( ) ; for ( int j = queryDimension . getOrdinal ( ) ; j < numberOfChildren ; j ++ ) { updatedQueryDimension . add ( tableBlockDimensions . get ( j ) ) ; } } return updatedQueryDimension ; }
below method is to add dimension children for complex type dimension as internally we are creating dimension column for each each complex dimension so when complex query dimension request will come in the query , we need to add its children as it is hidden from the user for example if complex dimension is of array of string [ 2 ] so we are storing 3 dimension and when user will query for complex type i . e . array type we need to add its children and then we will read respective block and create a tuple based on all three dimension
