public static TblColRef newInnerColumn(String columnName, InnerDataTypeEnum dataType) { return newInnerColumn(columnName, dataType, null); }
private TblColRef translateRexNode(TupleExpression tupleExpr, String fieldName) { if (tupleExpr instanceof ColumnTupleExpression) { return ((ColumnTupleExpression) tupleExpr).getColumn(); } else if (tupleExpr instanceof NumberTupleExpression) { Object value = ((NumberTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } else if (tupleExpr instanceof StringTupleExpression) { Object value = ((StringTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } return TblColRef.newInnerColumn(fieldName, InnerDataTypeEnum.LITERAL, tupleExpr.getDigest()); }
ColumnRowType buildColumnRowType() { ArrayList<TblColRef> colRefs = Lists.newArrayListWithCapacity(rowType.getFieldCount()); for(RelDataTypeField r:rowType.getFieldList()){ colRefs.add(TblColRef.newInnerColumn(r.getName(), TblColRef.InnerDataTypeEnum.LITERAL)); } return new ColumnRowType(colRefs); }
ColumnRowType buildColumnRowType() { OLAPRel olapChild = (OLAPRel) getInput(0); ColumnRowType inputColumnRowType = olapChild.getColumnRowType(); List<TblColRef> columns = new ArrayList<>(); // the input col always be collected by left columns.addAll(inputColumnRowType.getAllColumns()); // add window aggregate calls column for (Group group : groups) { for (AggregateCall aggrCall : group.getAggregateCalls(this)) { TblColRef aggrCallCol = TblColRef.newInnerColumn(aggrCall.getName(), TblColRef.InnerDataTypeEnum.LITERAL); columns.add(aggrCallCol); } } return new ColumnRowType(columns); }
/** * Fake ColumnRowType for Union, all the columns are inner columns. */ private ColumnRowType buildColumnRowType() { ColumnRowType inputColumnRowType = ((OLAPRel) getInput(0)).getColumnRowType(); List<TblColRef> columns = Lists.newArrayList(); List<TupleExpression> sourceColumns = Lists.newArrayList(); for (TblColRef tblColRef : inputColumnRowType.getAllColumns()) { columns.add(TblColRef.newInnerColumn(tblColRef.getName(), TblColRef.InnerDataTypeEnum.LITERAL)); } for (RelNode child : getInputs()) { OLAPRel olapChild = (OLAPRel) child; List<TblColRef> innerCols = olapChild.getColumnRowType().getAllColumns(); List<TupleExpression> children = Lists.newArrayListWithExpectedSize(innerCols.size()); for (TblColRef innerCol : innerCols) { children.add(new ColumnTupleExpression(innerCol)); } sourceColumns.add(new RexCallTupleExpression(children)); } ColumnRowType fackColumnRowType = new ColumnRowType(columns, sourceColumns); return fackColumnRowType; }
TblColRef indicatorCol = TblColRef.newInnerColumn(name, TblColRef.InnerDataTypeEnum.LITERAL); columns.add(indicatorCol); + inputColumnRowType.getColumnByIndex(index).getIdentity().replace('.', '_') + "_"; TblColRef aggOutCol = TblColRef.newInnerColumn(aggOutName, TblColRef.InnerDataTypeEnum.LITERAL); aggOutCol.getColumnDesc().setId("" + (i + 1)); // mark the index of aggregation columns.add(aggOutCol);
tupleExpr = getCountColumnExpression(srcCol); TblColRef column = TblColRef.newInnerColumn(tupleExpr.getDigest(), TblColRef.InnerDataTypeEnum.LITERAL);
private TupleFilter getMockFilter1() { LogicalTupleFilter ret = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.OR); TblColRef colRef1 = TblColRef.newInnerColumn("DEFAULT.TEST_KYLIN_FACT.LSTG_FORMAT_NAME", TblColRef.InnerDataTypeEnum.LITERAL); ret.addChildren(getCompareEQFilter(colRef1, "ABIN")); ret.addChildren(getCompareEQFilter(colRef1, "Auction")); TblColRef colRef2 = TblColRef.newInnerColumn("DEFAULT.TEST_KYLIN_FACT.DEAL_YEAR", TblColRef.InnerDataTypeEnum.LITERAL); ret.addChildren(getCompareEQFilter(colRef2, "2012")); ret.addChildren(getCompareEQFilter(colRef2, "2013")); return ret; }
private TupleFilter createEQFilter(String colName, String colVal) { CompareTupleFilter compareTupleFilter = new CompareTupleFilter(FilterOperatorEnum.EQ); compareTupleFilter .addChild(new ColumnTupleFilter(TblColRef.newInnerColumn(colName, InnerDataTypeEnum.LITERAL))); compareTupleFilter.addChild(new ConstantTupleFilter(colVal)); return compareTupleFilter; }
@Test public void testMustTrueTupleFilter() { TupleFilter andFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND); TupleFilter andFilter2 = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND); TupleFilter orFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.OR); andFilter.addChild(andFilter2); andFilter.addChild(orFilter); Set<CompareTupleFilter> trueTupleFilters = andFilter.findMustTrueCompareFilters(); Assert.assertTrue(trueTupleFilters.isEmpty()); TupleFilter compFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.GT); compFilter.addChild(new ColumnTupleFilter(TblColRef.newInnerColumn("test1", TblColRef.InnerDataTypeEnum.LITERAL))); TupleFilter compFilter2 = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.GT); compFilter2.addChild(new ColumnTupleFilter(TblColRef.newInnerColumn("test2", TblColRef.InnerDataTypeEnum.LITERAL))); andFilter2.addChild(compFilter); orFilter.addChild(compFilter2); Assert.assertEquals(Sets.newHashSet(compFilter), andFilter.findMustTrueCompareFilters()); Assert.assertEquals(Sets.newHashSet(compFilter2), compFilter2.findMustTrueCompareFilters()); }
private TupleFilter getMockFilter2() { LogicalTupleFilter ret = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.OR); TblColRef colRef = TblColRef.newInnerColumn("DEFAULT.TEST_KYLIN_FACT.LSTG_FORMAT_NAME", TblColRef.InnerDataTypeEnum.LITERAL); ret.addChildren(getCompareEQFilter(colRef, "ABIN")); ret.addChildren(getCompareEQFilter(colRef, "Auction")); CompareTupleFilter notInFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.NOTIN); notInFilter.addChildren(getCompareEQFilter(colRef, "Auction", "Others")); ret.addChildren(notInFilter); return ret; }
@Test public void verifyAggregateAndHavingFilter() throws IOException { GTInfo info = table.getInfo(); TblColRef havingCol = TblColRef.newInnerColumn("SUM_OF_BIGDECIMAL", InnerDataTypeEnum.LITERAL); havingCol.getColumnDesc().setId("1"); // point to the first aggregated measure CompareTupleFilter havingFilter = compare(havingCol, FilterOperatorEnum.GT, "20"); GTScanRequest req = new GTScanRequestBuilder().setInfo(info).setRanges(null).setDimensions(null) .setAggrGroupBy(setOf(1)).setAggrMetrics(setOf(4)).setAggrMetricsFuncs(new String[] { "sum" }) .setHavingFilterPushDown(havingFilter).createGTScanRequest(); doScanAndVerify(table, useDeserializedGTScanRequest(req), "[null, 20, null, null, 42.0]", "[null, 30, null, null, 52.5]"); }
public static TblColRef newInnerColumn(String columnName, InnerDataTypeEnum dataType) { return newInnerColumn(columnName, dataType, null); }
private TblColRef translateRexNode(TupleExpression tupleExpr, String fieldName) { if (tupleExpr instanceof ColumnTupleExpression) { return ((ColumnTupleExpression) tupleExpr).getColumn(); } else if (tupleExpr instanceof NumberTupleExpression) { Object value = ((NumberTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } else if (tupleExpr instanceof StringTupleExpression) { Object value = ((StringTupleExpression) tupleExpr).getValue(); return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL); } return TblColRef.newInnerColumn(fieldName, InnerDataTypeEnum.LITERAL, tupleExpr.getDigest()); }
ColumnRowType buildColumnRowType() { ArrayList<TblColRef> colRefs = Lists.newArrayListWithCapacity(rowType.getFieldCount()); for(RelDataTypeField r:rowType.getFieldList()){ colRefs.add(TblColRef.newInnerColumn(r.getName(), TblColRef.InnerDataTypeEnum.LITERAL)); } return new ColumnRowType(colRefs); }
ColumnRowType buildColumnRowType() { OLAPRel olapChild = (OLAPRel) getInput(0); ColumnRowType inputColumnRowType = olapChild.getColumnRowType(); List<TblColRef> columns = new ArrayList<>(); // the input col always be collected by left columns.addAll(inputColumnRowType.getAllColumns()); // add window aggregate calls column for (Group group : groups) { for (AggregateCall aggrCall : group.getAggregateCalls(this)) { TblColRef aggrCallCol = TblColRef.newInnerColumn(aggrCall.getName(), TblColRef.InnerDataTypeEnum.LITERAL); columns.add(aggrCallCol); } } return new ColumnRowType(columns); }
TblColRef indicatorCol = TblColRef.newInnerColumn(name, TblColRef.InnerDataTypeEnum.LITERAL); columns.add(indicatorCol); + inputColumnRowType.getColumnByIndex(index).getIdentity().replace('.', '_') + "_"; TblColRef aggOutCol = TblColRef.newInnerColumn(aggOutName, TblColRef.InnerDataTypeEnum.LITERAL); aggOutCol.getColumnDesc().setId("" + (i + 1)); // mark the index of aggregation columns.add(aggOutCol);
/** * Fake ColumnRowType for Union, all the columns are inner columns. */ private ColumnRowType buildColumnRowType() { ColumnRowType inputColumnRowType = ((OLAPRel) getInput(0)).getColumnRowType(); List<TblColRef> columns = Lists.newArrayList(); List<TupleExpression> sourceColumns = Lists.newArrayList(); for (TblColRef tblColRef : inputColumnRowType.getAllColumns()) { columns.add(TblColRef.newInnerColumn(tblColRef.getName(), TblColRef.InnerDataTypeEnum.LITERAL)); } for (RelNode child : getInputs()) { OLAPRel olapChild = (OLAPRel) child; List<TblColRef> innerCols = olapChild.getColumnRowType().getAllColumns(); List<TupleExpression> children = Lists.newArrayListWithExpectedSize(innerCols.size()); for (TblColRef innerCol : innerCols) { children.add(new ColumnTupleExpression(innerCol)); } sourceColumns.add(new RexCallTupleExpression(children)); } ColumnRowType fackColumnRowType = new ColumnRowType(columns, sourceColumns); return fackColumnRowType; }
tupleExpr = getCountColumnExpression(srcCol); TblColRef column = TblColRef.newInnerColumn(tupleExpr.getDigest(), TblColRef.InnerDataTypeEnum.LITERAL);