Search in sources :

Example 6 with AnalyticsTablePartition

use of org.hisp.dhis.analytics.AnalyticsTablePartition in project dhis2-core by dhis2.

the class PartitionUtilsTest method testGetTablePartitions.

@Test
void testGetTablePartitions() {
    List<AnalyticsTableColumn> dimensions = Lists.newArrayList(new AnalyticsTableColumn("dx", TEXT, "dx"));
    List<AnalyticsTableColumn> values = Lists.newArrayList(new AnalyticsTableColumn("value", DOUBLE, "value"));
    AnalyticsTable tA = new AnalyticsTable(AnalyticsTableType.DATA_VALUE, dimensions, values);
    tA.addPartitionTable(2010, new DateTime(2010, 1, 1, 0, 0).toDate(), new DateTime(2010, 12, 31, 0, 0).toDate());
    tA.addPartitionTable(2011, new DateTime(2011, 1, 1, 0, 0).toDate(), new DateTime(2011, 12, 31, 0, 0).toDate());
    AnalyticsTable tB = new AnalyticsTable(AnalyticsTableType.ORG_UNIT_TARGET, dimensions, values);
    List<AnalyticsTablePartition> partitions = PartitionUtils.getTablePartitions(Lists.newArrayList(tA, tB));
    assertEquals(3, partitions.size());
}
Also used : AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableColumn(org.hisp.dhis.analytics.AnalyticsTableColumn) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition) DateTime(org.joda.time.DateTime) Test(org.junit.jupiter.api.Test)

Example 7 with AnalyticsTablePartition

use of org.hisp.dhis.analytics.AnalyticsTablePartition in project dhis2-core by dhis2.

the class JdbcAnalyticsTableManagerTest method testGetRegularAnalyticsTable.

@Test
void testGetRegularAnalyticsTable() {
    Date startTime = new DateTime(2019, 3, 1, 10, 0).toDate();
    List<Integer> dataYears = Lists.newArrayList(2018, 2019);
    AnalyticsTableUpdateParams params = AnalyticsTableUpdateParams.newBuilder().withStartTime(startTime).build();
    when(jdbcTemplate.queryForList(Mockito.anyString(), ArgumentMatchers.<Class<Integer>>any())).thenReturn(dataYears);
    List<AnalyticsTable> tables = subject.getAnalyticsTables(params);
    assertEquals(1, tables.size());
    AnalyticsTable table = tables.get(0);
    assertNotNull(table);
    assertNotNull(table.getTablePartitions());
    assertEquals(2, table.getTablePartitions().size());
    AnalyticsTablePartition partitionA = table.getTablePartitions().get(0);
    AnalyticsTablePartition partitionB = table.getTablePartitions().get(1);
    assertNotNull(partitionA);
    assertNotNull(partitionA.getStartDate());
    assertNotNull(partitionA.getEndDate());
    assertEquals(partitionA.getYear().intValue(), new DateTime(partitionA.getStartDate()).getYear());
    assertNotNull(partitionB);
    assertNotNull(partitionB.getStartDate());
    assertNotNull(partitionB.getEndDate());
    assertEquals(partitionB.getYear().intValue(), new DateTime(partitionB.getStartDate()).getYear());
}
Also used : AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableUpdateParams(org.hisp.dhis.analytics.AnalyticsTableUpdateParams) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition) Date(java.util.Date) DateTime(org.joda.time.DateTime) Test(org.junit.jupiter.api.Test)

Example 8 with AnalyticsTablePartition

use of org.hisp.dhis.analytics.AnalyticsTablePartition in project dhis2-core by dhis2.

the class AnalyticsIndexHelper method getIndexes.

/**
 * Returns a queue of analytics table indexes.
 *
 * @param partitions the list of {@link AnalyticsTablePartition}.
 * @return a {@link java.util.concurrent.ConcurrentLinkedQueue} of indexes.
 */
public static List<AnalyticsIndex> getIndexes(final List<AnalyticsTablePartition> partitions) {
    final List<AnalyticsIndex> indexes = new ArrayList<>();
    for (final AnalyticsTablePartition partition : partitions) {
        final List<AnalyticsTableColumn> columns = partition.getMasterTable().getDimensionColumns();
        for (final AnalyticsTableColumn col : columns) {
            if (!col.isSkipIndex()) {
                final List<String> indexColumns = col.hasIndexColumns() ? col.getIndexColumns() : Lists.newArrayList(col.getName());
                indexes.add(new AnalyticsIndex(partition.getTempTableName(), indexColumns, col.getIndexType()));
                maybeAddTextLowerIndex(indexes, partition.getTempTableName(), col, indexColumns);
            }
        }
    }
    return indexes;
}
Also used : AnalyticsIndex(org.hisp.dhis.analytics.AnalyticsIndex) ArrayList(java.util.ArrayList) AnalyticsTableColumn(org.hisp.dhis.analytics.AnalyticsTableColumn) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition)

Example 9 with AnalyticsTablePartition

use of org.hisp.dhis.analytics.AnalyticsTablePartition in project dhis2-core by dhis2.

the class JdbcCompletenessTableManager method removeUpdatedData.

@Override
public void removeUpdatedData(List<AnalyticsTable> tables) {
    AnalyticsTablePartition partition = getLatestTablePartition(tables);
    String sql = "delete from " + quote(getAnalyticsTableType().getTableName()) + " ax " + "where ax.id in (" + "select (ds.uid || '-' || ps.iso || '-' || ou.uid || '-' || ao.uid) as id " + "from completedatasetregistration cdr " + "inner join dataset ds on cdr.datasetid=ds.datasetid " + "inner join _periodstructure ps on cdr.periodid=ps.periodid " + "inner join organisationunit ou on cdr.sourceid=ou.organisationunitid " + "inner join categoryoptioncombo ao on cdr.attributeoptioncomboid=ao.categoryoptioncomboid " + "where cdr.lastupdated >= '" + getLongDateString(partition.getStartDate()) + "' " + "and cdr.lastupdated < '" + getLongDateString(partition.getEndDate()) + "')";
    invokeTimeAndLog(sql, "Remove updated data values");
}
Also used : DateUtils.getLongDateString(org.hisp.dhis.util.DateUtils.getLongDateString) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition)

Example 10 with AnalyticsTablePartition

use of org.hisp.dhis.analytics.AnalyticsTablePartition in project dhis2-core by dhis2.

the class JdbcAnalyticsTableManagerTest method testGetLatestAnalyticsTable.

@Test
void testGetLatestAnalyticsTable() {
    Date lastFullTableUpdate = new DateTime(2019, 3, 1, 2, 0).toDate();
    Date lastLatestPartitionUpdate = new DateTime(2019, 3, 1, 9, 0).toDate();
    Date startTime = new DateTime(2019, 3, 1, 10, 0).toDate();
    AnalyticsTableUpdateParams params = AnalyticsTableUpdateParams.newBuilder().withStartTime(startTime).withLatestPartition().build();
    List<Map<String, Object>> queryResp = Lists.newArrayList();
    queryResp.add(ImmutableMap.of("dataelementid", 1));
    when(systemSettingManager.getDateSetting(SettingKey.LAST_SUCCESSFUL_ANALYTICS_TABLES_UPDATE)).thenReturn(lastFullTableUpdate);
    when(systemSettingManager.getDateSetting(SettingKey.LAST_SUCCESSFUL_LATEST_ANALYTICS_PARTITION_UPDATE)).thenReturn(lastLatestPartitionUpdate);
    when(jdbcTemplate.queryForList(Mockito.anyString())).thenReturn(queryResp);
    List<AnalyticsTable> tables = subject.getAnalyticsTables(params);
    assertEquals(1, tables.size());
    AnalyticsTable table = tables.get(0);
    assertNotNull(table);
    assertNotNull(table.getTablePartitions());
    assertEquals(1, table.getTablePartitions().size());
    AnalyticsTablePartition partition = table.getLatestPartition();
    assertNotNull(partition);
    assertTrue(partition.isLatestPartition());
    assertEquals(lastFullTableUpdate, partition.getStartDate());
    assertEquals(startTime, partition.getEndDate());
}
Also used : AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableUpdateParams(org.hisp.dhis.analytics.AnalyticsTableUpdateParams) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) Date(java.util.Date) DateTime(org.joda.time.DateTime) Test(org.junit.jupiter.api.Test)

Aggregations

AnalyticsTablePartition (org.hisp.dhis.analytics.AnalyticsTablePartition)10 AnalyticsTable (org.hisp.dhis.analytics.AnalyticsTable)7 DateTime (org.joda.time.DateTime)5 Test (org.junit.jupiter.api.Test)5 DateUtils.getLongDateString (org.hisp.dhis.util.DateUtils.getLongDateString)4 Date (java.util.Date)3 AnalyticsTableUpdateParams (org.hisp.dhis.analytics.AnalyticsTableUpdateParams)3 ImmutableMap (com.google.common.collect.ImmutableMap)2 Map (java.util.Map)2 AnalyticsIndex (org.hisp.dhis.analytics.AnalyticsIndex)2 AnalyticsTableColumn (org.hisp.dhis.analytics.AnalyticsTableColumn)2 Program (org.hisp.dhis.program.Program)2 LocalDate (java.time.LocalDate)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 Matchers.containsString (org.hamcrest.Matchers.containsString)1 DhisConvenienceTest.createProgram (org.hisp.dhis.DhisConvenienceTest.createProgram)1 DhisConvenienceTest.getDate (org.hisp.dhis.DhisConvenienceTest.getDate)1 AnalyticsTableType (org.hisp.dhis.analytics.AnalyticsTableType)1 TextUtils.getQuotedCommaDelimitedString (org.hisp.dhis.commons.util.TextUtils.getQuotedCommaDelimitedString)1