use of com.linkedin.pinot.core.operator.docvalsets.ConstantBlockValSet in project pinot by linkedin.
the class TimeConversionTransformTest method test.
@Test
public void test() {
long[] input = new long[NUM_ROWS];
long[] expected = new long[NUM_ROWS];
long seed = System.currentTimeMillis();
Random random = new Random(seed);
for (int i = 0; i < NUM_ROWS; i++) {
input[i] = random.nextLong() % seed;
expected[i] = TimeUnit.DAYS.convert(input[i], TimeUnit.MILLISECONDS);
}
TransformTestUtils.TestBlockValSet inputTimes = new TransformTestUtils.TestBlockValSet(input, NUM_ROWS);
ConstantBlockValSet inputTimeUnit = new ConstantBlockValSet("MILLISECONDS", NUM_ROWS);
ConstantBlockValSet outputTimeUnit = new ConstantBlockValSet("DAYS", NUM_ROWS);
TimeConversionTransform function = new TimeConversionTransform();
long[] actual = function.transform(NUM_ROWS, inputTimes, inputTimeUnit, outputTimeUnit);
for (int i = 0; i < NUM_ROWS; i++) {
Assert.assertEquals(actual[i], expected[i]);
}
}
use of com.linkedin.pinot.core.operator.docvalsets.ConstantBlockValSet in project pinot by linkedin.
the class DefaultExpressionEvaluator method evaluateExpression.
/**
* Helper (recursive) method that walks the expression tree bottom up evaluating
* transforms at each level.
*
* @param projectionBlock Projection block for which to evaluate the expression for
* @param expressionTree Expression tree to evaluate
* @return Result of the expression transform
*/
private BlockValSet evaluateExpression(ProjectionBlock projectionBlock, TransformExpressionTree expressionTree) {
TransformFunction function = getTransformFunction(expressionTree.getTransformName());
int numDocs = projectionBlock.getNumDocs();
String expressionString = expressionTree.toString();
TransformExpressionTree.ExpressionType expressionType = expressionTree.getExpressionType();
switch(expressionType) {
case FUNCTION:
List<TransformExpressionTree> children = expressionTree.getChildren();
int numChildren = children.size();
BlockValSet[] transformArgs = new BlockValSet[numChildren];
for (int i = 0; i < numChildren; i++) {
transformArgs[i] = evaluateExpression(projectionBlock, children.get(i));
}
return new TransformBlockValSet(function, numDocs, transformArgs);
case IDENTIFIER:
return projectionBlock.getBlockValueSet(expressionString);
case LITERAL:
return new ConstantBlockValSet(expressionString, numDocs);
default:
throw new IllegalArgumentException("Illegal expression type in expression evaluator: " + expressionType);
}
}
Aggregations