Java源码示例:org.apache.kylin.metadata.model.TblColRef.InnerDataTypeEnum

示例1
@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());
}
 
示例2
private TblColRef translateRexNode(RexNode rexNode, ColumnRowType inputColumnRowType, TupleExpression tupleExpr,
        String fieldName) {
    if (tupleExpr instanceof ColumnTupleExpression) {
        return ((ColumnTupleExpression) tupleExpr).getColumn();
    } else if (tupleExpr instanceof ConstantTupleExpression) {
        Object value = ((ConstantTupleExpression) tupleExpr).getValue();
        return TblColRef.newInnerColumn(value == null ? "null" : value.toString(), InnerDataTypeEnum.LITERAL);
    } else if (tupleExpr instanceof RexCallTupleExpression && rexNode instanceof RexInputRef) {
        RexInputRef inputRef = (RexInputRef) rexNode;
        int index = inputRef.getIndex();
        if (index < inputColumnRowType.size()) {
            return inputColumnRowType.getColumnByIndex(index);
        }
    }
    return TblColRef.newInnerColumn(fieldName, InnerDataTypeEnum.LITERAL, tupleExpr.getDigest());
}
 
示例3
@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());
}
 
示例4
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;
}
 
示例5
@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]");
}
 
示例6
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;
}
 
示例7
@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]");
}
 
示例8
private TblColRef translateRexLiteral(RexLiteral literal) {
    if (RexLiteral.isNullLiteral(literal)) {
        return TblColRef.newInnerColumn("null", InnerDataTypeEnum.LITERAL);
    } else {
        return TblColRef.newInnerColumn(literal.getValue().toString(), InnerDataTypeEnum.LITERAL);
    }

}