use of com.hortonworks.streamline.streams.layout.component.rule.expression.Expression in project streamline by hortonworks.
the class SqlNestedExprScriptTest method testEvaluateNestedMapList.
// @Test
public void testEvaluateNestedMapList() throws Exception {
Condition condition = new Condition();
Expression y_a_0 = new ArrayFieldExpression(new MapFieldExpression(new FieldExpression(Schema.Field.of("y", Schema.Type.NESTED)), "a"), 0);
condition.setExpression(new BinaryExpression(Operator.LESS_THAN, y_a_0, new Literal("100")));
sqlScript = new SqlScript(new StormSqlExpression(condition), new SqlEngine(), new SqlScript.CorrelatedValuesToStreamlineEventConverter(Collections.singletonList("y")));
List<Integer> nestedList = new ArrayList<>();
nestedList.add(500);
nestedList.add(1);
Map<String, Object> nestedMap = new HashMap<>();
nestedMap.put("a", nestedList);
Map<String, Object> kv = new HashMap<>();
kv.put("x", 10);
kv.put("y", nestedMap);
StreamlineEvent event = StreamlineEventImpl.builder().fieldsAndValues(kv).dataSourceId("1").build();
Collection<StreamlineEvent> result = sqlScript.evaluate(event);
Assert.assertTrue(result.isEmpty());
}
use of com.hortonworks.streamline.streams.layout.component.rule.expression.Expression in project streamline by hortonworks.
the class StormSqlExpression method handleGroupByHaving.
private void handleGroupByHaving() {
if (groupBy != null) {
List<String> groupByExpressions = new ArrayList<>();
for (Expression expr : groupBy.getExpressions()) {
ExpressionTranslator groupByTranslator = new StormSqlExpressionTranslator();
expr.accept(groupByTranslator);
stormSqlFields.addAll(groupByTranslator.getFields());
groupByFields.addAll(groupByTranslator.getFields());
functions.addAll(groupByTranslator.getFunctions());
groupByExpressions.add(groupByTranslator.getTranslatedExpression());
}
groupByExpression = Joiner.on(",").join(groupByExpressions);
if (having != null) {
ExpressionTranslator havingTranslator = new StormSqlExpressionTranslator();
having.getExpression().accept(havingTranslator);
stormSqlFields.addAll(havingTranslator.getFields());
functions.addAll(havingTranslator.getFunctions());
aggregateFunctions.addAll(havingTranslator.getAggregateFunctions());
havingExpression = havingTranslator.getTranslatedExpression();
LOG.debug("Built expression [{}] for having [{}]", havingExpression, having);
}
}
}
Aggregations