Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2396#discussion_r197470593
--- Diff:
core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java
---
@@ -665,6 +665,34 @@ public CarbonDimension getDimensionByName(String
tableName, String columnName) {
if (dim.getColName().equalsIgnoreCase(columnName)) {
carbonDimension = dim;
break;
+ } else if (dim.getListOfChildDimensions() != null) {
--- End diff --
Try to simplify as follow
```
/**
* to get particular dimension from a table
*
* @param tableName
* @param columnName [col1.col12.col123]
* @return
*/
public CarbonDimension getDimensionByName(String tableName, String
columnName) {
CarbonDimension carbonDimension = null;
List<CarbonDimension> dimList = tableDimensionsMap.get(tableName);
String[] colsplits = columnName.split("\\.");
String tempColName = colsplits[0];
for (String colsplit : colsplits) {
carbonDimension = getCarbonDimension(tempColName, dimList);
if (carbonDimension.getListOfChildDimensions() != null) {
tempColName = tempColName + "." + colsplit;
dimList = carbonDimension.getListOfChildDimensions();
}
}
List<CarbonDimension> implicitDimList =
tableImplicitDimensionsMap.get(tableName);
if (carbonDimension == null) {
carbonDimension = getCarbonDimension(columnName, implicitDimList);
}
return carbonDimension;
}
private CarbonDimension getCarbonDimension(String columnName,
List<CarbonDimension> dimensions) {
CarbonDimension carbonDimension = null;
for (CarbonDimension dim : dimensions) {
if (dim.getColName().equalsIgnoreCase(columnName)) {
carbonDimension = dim;
break;
}
}
return carbonDimension;
}
```
---