private ASTNode findCubeNameNode(ASTNode node) { if (node.getType() == Identifier) { if (node.getText().equalsIgnoreCase(getCubeQueryContext().getCube().getName())) { return node; } else { return null; // should never come here. } } return node.getChildren().stream().map(ASTNode.class::cast).map(this::findCubeNameNode).filter(Objects::nonNull) .findFirst().orElse(null); }
private ASTNode findCubeNameNode(ASTNode node) { if (node.getType() == Identifier) { if (node.getText().equalsIgnoreCase(getCubeQueryContext().getCube().getName())) { return node; } else { return null; // should never come here. } } return node.getChildren().stream().map(ASTNode.class::cast).map(this::findCubeNameNode).filter(Objects::nonNull) .findFirst().orElse(null); }
public AbstractCubeTable getQueriedTable(String alias) { if (cube != null && cube.getName().equalsIgnoreCase(qb.getTabNameForAlias((alias)))) { return (AbstractCubeTable) cube; } for (Dimension dim : dimensions) { if (dim.getName().equalsIgnoreCase(qb.getTabNameForAlias(alias))) { return dim; } } return null; }
/** * Create cube in metastore defined by {@link Cube} or {@link DerivedCube} object * * @param cube the {@link Cube} object. * @throws LensException */ public void createCube(CubeInterface cube) throws LensException { createCubeHiveTable((AbstractCubeTable) cube); // do a get to update cache getCube(cube.getName()); }
public AbstractCubeTable getQueriedTable(String alias) { if (cube != null && cube.getName().equalsIgnoreCase(qb.getTabNameForAlias((alias)))) { return (AbstractCubeTable) cube; } for (Dimension dim : dimensions) { if (dim.getName().equalsIgnoreCase(qb.getTabNameForAlias(alias))) { return dim; } } return null; }
public List<Segmentation> getAllSegmentations(CubeInterface cube) throws LensException { String cubeName = null; if (cube != null) { if (cube instanceof DerivedCube) { cube = ((DerivedCube) cube).getParent(); } cubeName = cube.getName(); } List<Segmentation> cubeSegs = new ArrayList<>(); for (Segmentation seg : getAllSegmentations()) { if (cubeName == null || seg.getBaseCube().equalsIgnoreCase(cubeName)) { cubeSegs.add(seg); } } return cubeSegs; }
/** * Create cube in metastore defined by {@link Cube} or {@link DerivedCube} object * * @param cube the {@link Cube} object. * @throws LensException */ public void createCube(CubeInterface cube) throws LensException { checkIfAuthorized(); createCubeHiveTable((AbstractCubeTable) cube); // do a get to update cache getCube(cube.getName()); }
String getTimeRangeWhereClasue(TimeRangeWriter rangeWriter, TimeRange range) throws LensException { String rangeWhere = rangeWriter.getTimeRangeWhereClause( getCubeQueryContext(), getCubeQueryContext().getAliasForTableName(getCube().getName()), getRangeToPartitions().get(range)); String fallback = getRangeToExtraWhereFallBack().get(range); if (StringUtils.isNotBlank(fallback)){ rangeWhere = "((" + rangeWhere + ") and (" + fallback + "))"; } return rangeWhere; }
String getTimeRangeWhereClasue(TimeRangeWriter rangeWriter, TimeRange range) throws LensException { String rangeWhere = rangeWriter.getTimeRangeWhereClause( getCubeQueryContext(), getCubeQueryContext().getAliasForTableName(getCube().getName()), getRangeToPartitions().get(range)); String fallback = getRangeToExtraWhereFallBack().get(range); if (StringUtils.isNotBlank(fallback)){ rangeWhere = "((" + rangeWhere + ") and (" + fallback + "))"; } return rangeWhere; }
boolean hasMeasures(String expr, CubeInterface cube) { String alias = cubeql.getAliasForTableName(cube.getName()); ExpressionContext ec = getExpressionContext(expr, alias); boolean hasMeasures = false; for (ExprSpecContext esc : ec.allExprs) { if (esc.getTblAliasToColumns().get(alias) != null) { for (String cubeCol : esc.getTblAliasToColumns().get(alias)) { if (cube.getMeasureByName(cubeCol) != null) { hasMeasures = true; break; } } } } ec.hasMeasures = hasMeasures; return hasMeasures; }
private void addAllMeasuresToFlattenedList(ObjectFactory objectFactory, CubeInterface cube, List<XFlattenedColumn> columnList) { for (CubeMeasure msr : cube.getMeasures()) { XFlattenedColumn fcol = objectFactory.createXFlattenedColumn(); fcol.setMeasure(JAXBUtils.xMeasureFromHiveMeasure(msr)); fcol.setTableName(cube.getName()); columnList.add(fcol); } }
private void addAllDirectAttributesToFlattenedListFromCube(ObjectFactory objectFactory, CubeInterface cube, List<XFlattenedColumn> columnList) { AbstractBaseTable baseTbl = (AbstractBaseTable) (cube instanceof DerivedCube ? ((DerivedCube) cube).getParent() : cube); for (CubeDimAttribute dim : cube.getDimAttributes()) { XFlattenedColumn fcol = objectFactory.createXFlattenedColumn(); fcol.setDimAttribute(JAXBUtils.xDimAttrFromHiveDimAttr(dim, baseTbl)); fcol.setTableName(cube.getName()); columnList.add(fcol); } }
private Set<String> getMeasuresFromExprMeasures(CubeQueryContext cubeql) { Set<String> exprMeasures = new HashSet<String>(); String cubeAlias = cubeql.getAliasForTableName(cubeql.getCube().getName()); for (String expr : cubeql.getQueriedExprsWithMeasures()) { for (ExprSpecContext esc : cubeql.getExprCtx().getExpressionContext(expr, cubeAlias).getAllExprs()) { if (esc.getTblAliasToColumns().get(cubeAlias) != null) { for (String cubeCol : esc.getTblAliasToColumns().get(cubeAlias)) { if (cubeql.getCube().getMeasureByName(cubeCol) != null) { exprMeasures.add(cubeCol); } } } } } return exprMeasures; }
private void addAllDirectExpressionsToFlattenedList(ObjectFactory objectFactory, CubeInterface baseTbl, List<XFlattenedColumn> columnList, String chainName) { if (baseTbl.getExpressions() != null) { for (ExprColumn expr : baseTbl.getExpressions()) { XFlattenedColumn fcol = objectFactory.createXFlattenedColumn(); fcol.setExpression(JAXBUtils.xExprColumnFromHiveExprColumn(expr)); fcol.setTableName(baseTbl.getName()); if (chainName != null) { fcol.setChainName(chainName); } columnList.add(fcol); } } }
@Override public boolean isDimAttributeEvaluable(String dim) throws LensException { return getCubeQueryContext().getDeNormCtx() .addRefUsage(getCubeQueryContext(), this, dim, getCubeQueryContext().getCube().getName()); } @Override
@Override public boolean isDimAttributeEvaluable(String dim) throws LensException { return getCubeQueryContext().getDeNormCtx() .addRefUsage(getCubeQueryContext(), this, dim, getCubeQueryContext().getCube().getName()); } @Override
public void updateFromString() throws LensException { String alias = getCubeQueryContext().getAliasForTableName(getCube().getName()); setFrom(storageCandidate.getAliasForTable(alias)); if (getCubeQueryContext().isAutoJoinResolved()) { setFrom(getCubeQueryContext().getAutoJoinCtx().getFromString( getFrom(), this, getDimsToQuery(), getCubeQueryContext())); } }
public void updateFromString() throws LensException { String alias = getCubeQueryContext().getAliasForTableName(getCube().getName()); setFrom(storageCandidate.getAliasForTable(alias)); if (getCubeQueryContext().isAutoJoinResolved()) { setFrom(getCubeQueryContext().getAutoJoinCtx().getFromString( getFrom(), this, getDimsToQuery(), getCubeQueryContext())); } }
private void addCubeNameAndAlias(ASTNode ast, Cube innerCube) { ASTNode cubeNameNode = findCubeNameNode(HQLParser.findNodeByPath(ast, TOK_FROM)); assert cubeNameNode != null; ASTNode tabrefNode = (ASTNode) cubeNameNode.getParent().getParent(); cubeNameNode.getToken().setText(innerCube.getName()); ASTNode aliasNode = new ASTNode(new CommonToken(Identifier, getCubeQueryContext().getAliasForTableName(getCube().getName()))); if (tabrefNode.getChildCount() > 1) { tabrefNode.setChild(1, aliasNode); } else { tabrefNode.addChild(aliasNode); } }
private void addCubeNameAndAlias(ASTNode ast, Cube innerCube) { ASTNode cubeNameNode = findCubeNameNode(HQLParser.findNodeByPath(ast, TOK_FROM)); assert cubeNameNode != null; ASTNode tabrefNode = (ASTNode) cubeNameNode.getParent().getParent(); cubeNameNode.getToken().setText(innerCube.getName()); ASTNode aliasNode = new ASTNode(new CommonToken(Identifier, getCubeQueryContext().getAliasForTableName(getCube().getName()))); if (tabrefNode.getChildCount() > 1) { tabrefNode.setChild(1, aliasNode); } else { tabrefNode.addChild(aliasNode); } }