private static Map buildTableAliasMap(DataModelDesc dataModelDesc) { Map<String, String> tableAliasMap = new HashMap<String, String>(); tableAliasMap.put(dataModelDesc.getFactTable().toUpperCase(), FACT_TABLE_ALIAS); int i = 1; for (LookupDesc lookupDesc: dataModelDesc.getLookups()) { JoinDesc join = lookupDesc.getJoin(); if (join != null) { tableAliasMap.put(lookupDesc.getTable().toUpperCase(), LOOKUP_TABLE_ALAIS_PREFIX + i); i++; } } return tableAliasMap; }
sql.append("FROM " + factTableName + " as " + factTableAlias + " \n"); for (LookupDesc lookupDesc : dataModelDesc.getLookups()) { JoinDesc join = lookupDesc.getJoin(); if (join != null && join.getType().equals("") == false) {
for (LookupDesc lookup : cubeDesc.getModel().getLookups()) { if (lookup.getTable().equalsIgnoreCase(this.getTable())) { join = lookup.getJoin();
private void checkCubeDesc(String descName) { CubeDescManager cubeDescMgr = CubeDescManager.getInstance(KylinConfig.getInstanceFromEnv()); CubeDesc cubedesc1 = cubeDescMgr.getCubeDesc(descName); Assert.assertNotNull(cubedesc1); DataModelDesc model = cubedesc1.getModel(); Assert.assertNotNull(model); Assert.assertTrue(model.getLookups().length > 0); List<DimensionDesc> dims = cubedesc1.getDimensions(); Assert.assertTrue(dims.size() > 0); for (DimensionDesc dim : dims) { Assert.assertTrue(dim.getColumn().length > 0); } Assert.assertTrue(cubedesc1.getMeasures().size() > 0); CubeManager cubeMgr = CubeManager.getInstance(KylinConfig.getInstanceFromEnv()); List<CubeInstance> cubes = cubeMgr.getCubesByDesc(descName); Assert.assertTrue(cubes.size() > 0); }
private int getCost(SQLDigest digest) { int calculatedCost = cost; for (LookupDesc lookupDesc : this.getDescriptor().getModel().getLookups()) { // more tables, more cost calculatedCost += COST_WEIGHT_LOOKUP_TABLE; if ("inner".equals(lookupDesc.getJoin().getType())) { // inner join cost is bigger than left join, as it will filter some records calculatedCost += COST_WEIGHT_INNER_JOIN; } } return calculatedCost; }
sql.append("FROM " + factTableName + " as " + factTableAlias + " \n"); for (LookupDesc lookupDesc : dataModelDesc.getLookups()) { JoinDesc join = lookupDesc.getJoin(); if (join != null && join.getType().equals("") == false) {
private static Map<String, String> buildTableAliasMap(DataModelDesc dataModelDesc) { Map<String, String> tableAliasMap = new HashMap<String, String>(); addTableAlias(dataModelDesc.getFactTable(), tableAliasMap); for (LookupDesc lookupDesc : dataModelDesc.getLookups()) { JoinDesc join = lookupDesc.getJoin(); if (join != null) { addTableAlias(lookupDesc.getTable(), tableAliasMap); } } return tableAliasMap; }
for (LookupDesc lookup : cubeDesc.getModel().getLookups()) { if (lookup.getTable().equalsIgnoreCase(this.getTable())) { join = lookup.getJoin();
for (TableDesc tableDesc : tables) { JoinDesc join = null; for (LookupDesc lookup : iiDesc.getModel().getLookups()) { if (lookup.getTable().equalsIgnoreCase(tableDesc.getIdentity())) { join = lookup.getJoin();
private void updateRowkeyDictionary(org.apache.kylin.cube.model.CubeDesc newModel) { DataModelDesc modelDesc = newModel.getModel(); Map<String, String> pkToFK = Maps.newHashMap(); for (LookupDesc lookupDesc : modelDesc.getLookups()) { if (lookupDesc.getJoin() != null) { JoinDesc join = lookupDesc.getJoin(); for (int i = 0; i < join.getForeignKey().length; i++) { pkToFK.put(join.getPrimaryKey()[i], join.getForeignKey()[i]); } } } RowKeyDesc rowKey = newModel.getRowkey(); for (RowKeyColDesc rowkeyCol : rowKey.getRowKeyColumns()) { if (rowkeyCol.getDictionary() != null && rowkeyCol.getDictionary().length() > 0) rowkeyCol.setDictionary("true"); if (pkToFK.containsKey(rowkeyCol.getColumn())) { rowkeyCol.setColumn(pkToFK.get(rowkeyCol.getColumn())); } } for (String[] aggregationGroup : rowKey.getAggregationGroups()) { for (int i = 0; i < aggregationGroup.length; i++) { if (pkToFK.containsKey(aggregationGroup[i])) { aggregationGroup[i] = pkToFK.get(aggregationGroup[i]); } } } }
dataModelDesc = this.getMetadataManager().getDataModelDesc(modelName); Map<String, String> pkToFK = Maps.newHashMap(); for (LookupDesc lookupDesc : dataModelDesc.getLookups()) { if (lookupDesc.getJoin() != null) { JoinDesc join = lookupDesc.getJoin();
public static DataModelDesc getCopyOf(DataModelDesc dataModelDesc) { DataModelDesc newDataModelDesc = new DataModelDesc(); newDataModelDesc.setName(dataModelDesc.getName()); newDataModelDesc.setCapacity(dataModelDesc.getCapacity()); newDataModelDesc.setFilterCondition(dataModelDesc.getFilterCondition()); newDataModelDesc.setFactTable(dataModelDesc.getFactTable()); newDataModelDesc.setLookups(dataModelDesc.getLookups()); newDataModelDesc.setPartitionDesc(PartitionDesc.getCopyOf(dataModelDesc.getPartitionDesc())); newDataModelDesc.updateRandomUuid(); return newDataModelDesc; }