dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #08945
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 2265: Minor performance improvement in datamart
------------------------------------------------------------
revno: 2265
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2010-12-02 22:52:11 +0100
message:
Minor performance improvement in datamart
modified:
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java
dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java 2010-07-04 11:11:30 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntAggregator.java 2010-12-02 21:52:11 +0000
@@ -165,6 +165,7 @@
"', for data element with id: '" + entry.getKey() +
"', for period with id: '" + crossTabValue.getPeriodId() +
"', for source with id: '" + crossTabValue.getSourceId() + "'" );
+ continue;
}
if ( currentStartDate.compareTo( startDate ) >= 0 && currentEndDate.compareTo( endDate ) <= 0 ) // Value is within period
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java 2010-07-04 11:50:16 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/AverageIntSingleValueAggregator.java 2010-12-02 21:52:11 +0000
@@ -153,6 +153,7 @@
"', for data element with id: '" + entry.getKey() +
"', for period with id: '" + crossTabValue.getPeriodId() +
"', for source with id: '" + crossTabValue.getSourceId() + "'" );
+ continue;
}
if ( currentStartDate.compareTo( endDate ) <= 0 && currentEndDate.compareTo( startDate ) >= 0 ) // Value is intersecting
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java 2010-07-04 11:11:30 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/aggregation/dataelement/SumIntAggregator.java 2010-12-02 21:52:11 +0000
@@ -155,6 +155,7 @@
"', for data element with id: '" + entry.getKey() +
"', for period with id: '" + crossTabValue.getPeriodId() +
"', for source with id: '" + crossTabValue.getSourceId() + "'" );
+ continue;
}
if ( currentStartDate.compareTo( startDate ) >= 0 && currentEndDate.compareTo( endDate ) <= 0 ) // Value is within period
=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java 2010-12-02 21:24:43 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java 2010-12-02 21:52:11 +0000
@@ -221,13 +221,21 @@
log.info( "Deleted existing aggregated data: " + TimeUtils.getHMS() );
// ---------------------------------------------------------------------
+ // Get objects
+ // ---------------------------------------------------------------------
+
+ Collection<Indicator> indicators = indicatorService.getIndicators( indicatorIds );
+ Collection<Period> periods = periodService.getPeriods( periodIds );
+ Collection<OrganisationUnit> organisationUnits = organisationUnitService.getOrganisationUnits( organisationUnitIds );
+
+ // ---------------------------------------------------------------------
// Filter and get operands
// ---------------------------------------------------------------------
final Set<Integer> nonCalculatedDataElementIds = filterCalculatedDataElementIds( dataElementIds, false );
final Set<Integer> calculatedDataElementIds = filterCalculatedDataElementIds( dataElementIds, true );
- final Set<Integer> dataElementInIndicatorIds = getDataElementIdsInIndicators( indicatorIds );
+ final Set<Integer> dataElementInIndicatorIds = getDataElementIdsInIndicators( indicators );
final Set<Integer> dataElementInCalculatedDataElementIds = getDataElementIdsInCalculatedDataElements( calculatedDataElementIds );
final Set<Integer> allDataElementIds = new HashSet<Integer>();
@@ -294,14 +302,6 @@
log.info( "Trimmed crosstab table: " + TimeUtils.getHMS() );
// ---------------------------------------------------------------------
- // Get objects
- // ---------------------------------------------------------------------
-
- Collection<Period> periods = periodService.getPeriods( periodIds );
- Collection<OrganisationUnit> organisationUnits = organisationUnitService.getOrganisationUnits( organisationUnitIds );
- Collection<Indicator> indicators = indicatorService.getIndicators( indicatorIds );
-
- // ---------------------------------------------------------------------
// Data element export
// ---------------------------------------------------------------------
@@ -330,8 +330,7 @@
count += dataElementDataMart.exportDataValues( averageIntDataElementOperands, periods,
organisationUnits, averageIntSingleValueAggregator, key );
- log
- .info( "Exported values for data element operands with average aggregation operator with single value of type number ("
+ log.info( "Exported values for data element operands with average aggregation operator with single value of type number ("
+ averageIntDataElementOperands.size() + "): " + TimeUtils.getHMS() );
}
@@ -364,7 +363,7 @@
count += indicatorDataMart.exportIndicatorValues( indicators, periods, organisationUnits,
dataElementInIndicatorOperands, key );
- log.info( "Exported values for indicators (" + indicatorIds.size() + "): " + TimeUtils.getHMS() );
+ log.info( "Exported values for indicators (" + indicators.size() + "): " + TimeUtils.getHMS() );
}
state.setMessage( "exporting_data_for_calculated_data_elements" );
@@ -422,14 +421,12 @@
* Returns all data element identifiers included in the indicators in the
* given identifier collection.
*/
- private Set<Integer> getDataElementIdsInIndicators( final Collection<Integer> indicatorIds )
+ private Set<Integer> getDataElementIdsInIndicators( final Collection<Indicator> indicators )
{
- final Set<Integer> identifiers = new HashSet<Integer>( indicatorIds.size() );
+ final Set<Integer> identifiers = new HashSet<Integer>( indicators.size() );
- for ( final Integer id : indicatorIds )
+ for ( final Indicator indicator : indicators )
{
- final Indicator indicator = indicatorService.getIndicator( id );
-
identifiers.addAll( getDataElementIdsInExpression( indicator.getNumerator() ) );
identifiers.addAll( getDataElementIdsInExpression( indicator.getDenominator() ) );
}