use of org.hisp.dhis.analytics.DataQueryParams in project dhis2-core by dhis2.
the class QueryPlannerTest method validateSuccesB.
@Test
public void validateSuccesB() {
DataQueryParams params = DataQueryParams.newBuilder().addDimension(new BaseDimensionalObject(DATA_X_DIM_ID, DimensionType.DATA_X, getList(deA, deB, pdeA, pdeB))).addFilter(new BaseDimensionalObject(ORGUNIT_DIM_ID, DimensionType.ORGANISATION_UNIT, getList(ouA, ouB))).addDimension(new BaseDimensionalObject(PERIOD_DIM_ID, DimensionType.PERIOD, getList(peA, peB))).build();
queryPlanner.validate(params);
}
use of org.hisp.dhis.analytics.DataQueryParams in project dhis2-core by dhis2.
the class QueryPlannerTest method planQueryAggregationTypeB.
/**
* Split on two data elements. Set aggregation type average and value type
* boolean on query. Convert aggregation type from data elements to average
* and then to average boolean.
*/
@Test
public void planQueryAggregationTypeB() {
DataElement deA = createDataElement('A', ValueType.BOOLEAN, AggregationType.SUM);
DataElement deB = createDataElement('B', ValueType.BOOLEAN, AggregationType.COUNT);
DataQueryParams params = DataQueryParams.newBuilder().withDataElements(getList(deA, deB)).withOrganisationUnits(getList(ouA)).withPeriods(getList(createPeriod("200101"))).withAggregationType(AggregationType.AVERAGE).build();
QueryPlannerParams plannerParams = QueryPlannerParams.newBuilder().withOptimalQueries(4).withTableName(ANALYTICS_TABLE_NAME).build();
DataQueryGroups queryGroups = queryPlanner.planQuery(params, plannerParams);
assertEquals(2, queryGroups.getAllQueries().size());
for (DataQueryParams query : queryGroups.getAllQueries()) {
assertNotNull(query.getAggregationType());
assertEquals(AggregationType.AVERAGE_BOOL, query.getAggregationType());
}
}
use of org.hisp.dhis.analytics.DataQueryParams in project dhis2-core by dhis2.
the class QueryPlannerTest method validateFailureValueType.
@Test(expected = IllegalQueryException.class)
public void validateFailureValueType() {
deB.setValueType(ValueType.FILE_RESOURCE);
DataQueryParams params = DataQueryParams.newBuilder().addDimension(new BaseDimensionalObject(DATA_X_DIM_ID, DimensionType.DATA_X, getList(deA, deB))).addDimension(new BaseDimensionalObject(ORGUNIT_DIM_ID, DimensionType.ORGANISATION_UNIT, getList(ouA, ouB))).addDimension(new BaseDimensionalObject(PERIOD_DIM_ID, DimensionType.PERIOD, getList(peA, peB))).build();
queryPlanner.validate(params);
}
use of org.hisp.dhis.analytics.DataQueryParams in project dhis2-core by dhis2.
the class QueryPlannerTest method planQueryL.
/**
* Splits in 2 queries for each data type, then 2 queries for each
* data element, then 2 queries for each organisation unit to satisfy optimal
* for a total of 8 queries with 4 queries across 2 sequential queries.
*/
@Test
public void planQueryL() {
DataQueryParams params = DataQueryParams.newBuilder().withDataElements(getList(deA, deB, deE, deF)).withOrganisationUnits(getList(ouA, ouB, ouC, ouD)).withFilterPeriods(getList(createPeriod("2000Q1"))).build();
QueryPlannerParams plannerParams = QueryPlannerParams.newBuilder().withOptimalQueries(4).withTableName(ANALYTICS_TABLE_NAME).build();
DataQueryGroups queryGroups = queryPlanner.planQuery(params, plannerParams);
assertEquals(8, queryGroups.getAllQueries().size());
assertEquals(2, queryGroups.getSequentialQueries().size());
assertEquals(4, queryGroups.getLargestGroupSize());
for (DataQueryParams query : queryGroups.getAllQueries()) {
assertDimensionNameNotNull(query);
assertNotNull(query.getDataType());
}
}
use of org.hisp.dhis.analytics.DataQueryParams in project dhis2-core by dhis2.
the class QueryPlannerTest method planQueryC.
/**
* Query spans 3 organisation unit levels. Splits in 3 queries for each level,
* then splits in 2 queries on organisation units to satisfy optimal for a total
* of 5 queries, as there are only 5 organisation units in total.
*/
@Test
public void planQueryC() {
ouB.setParent(ouA);
ouC.setParent(ouA);
ouD.setParent(ouB);
ouE.setParent(ouC);
ouA.getChildren().add(ouB);
ouA.getChildren().add(ouC);
ouD.getChildren().add(ouB);
ouC.getChildren().add(ouE);
organisationUnitService.updateOrganisationUnit(ouA);
organisationUnitService.updateOrganisationUnit(ouB);
organisationUnitService.updateOrganisationUnit(ouC);
organisationUnitService.updateOrganisationUnit(ouD);
organisationUnitService.updateOrganisationUnit(ouE);
DataQueryParams params = DataQueryParams.newBuilder().withDataElements(getList(deA)).withOrganisationUnits(getList(ouA, ouB, ouC, ouD, ouE)).withPeriods(getList(createPeriod("2000Q1"), createPeriod("2000Q2"), createPeriod("2000Q3"))).build();
QueryPlannerParams plannerParams = QueryPlannerParams.newBuilder().withOptimalQueries(6).withTableName(ANALYTICS_TABLE_NAME).build();
DataQueryGroups queryGroups = queryPlanner.planQuery(params, plannerParams);
assertEquals(5, queryGroups.getAllQueries().size());
assertEquals(1, queryGroups.getSequentialQueries().size());
assertEquals(5, queryGroups.getLargestGroupSize());
for (DataQueryParams query : queryGroups.getAllQueries()) {
assertTrue(samePeriodType(query.getPeriods()));
assertTrue(samePartition(query.getPeriods()));
assertDimensionNameNotNull(query);
}
}
Aggregations