/** * Returns the user-defined split order, or dimensions in order of descending cardinality (removes * excludes too) */ private List<String> computeSplitOrder(final Map<String, ColumnIndexCreationInfo> columnInfo) { List<String> splitOrder; if (starTreeIndexSpec.getSplitOrder() == null) { splitOrder = new ArrayList<String>(schema.getDimensionNames()); Collections.sort( splitOrder, new Comparator<String>() { @Override public int compare(String o1, String o2) { Object[] o1UniqueElements = columnInfo.get(o1).getSortedUniqueElementsArray(); Object[] o2UniqueElements = columnInfo.get(o2).getSortedUniqueElementsArray(); return o2UniqueElements.length - o1UniqueElements.length; // descending } }); } else { splitOrder = new ArrayList<String>(starTreeIndexSpec.getSplitOrder()); } if (starTreeIndexSpec.getSplitExcludes() != null) { splitOrder.removeAll(starTreeIndexSpec.getSplitExcludes()); } return splitOrder; }