use of com.khartec.waltz.model.tally.TallyPack in project waltz by khartec.
the class EntityStatisticHarness method main.
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(DIConfiguration.class);
DSLContext dsl = ctx.getBean(DSLContext.class);
EntityStatisticValueDao dao = ctx.getBean(EntityStatisticValueDao.class);
EntityStatisticService service = ctx.getBean(EntityStatisticService.class);
/*
select
outcome,
sum(CASE ISNUMERIC(value) when 1 then cast(value as BIGINT) else 0 end)
from entity_statistic_value
where statistic_id = 20010
GROUP BY outcome;
*/
/*
AggregateFunction<BigDecimal> summer = DSL.sum(DSL.cast(esv.VALUE, Long.class));
dsl.select(esv.OUTCOME, summer)
.from(esv)
.where(esv.STATISTIC_ID.eq(20010L))
.groupBy(esv.OUTCOME)
.fetch()
.forEach(System.out::println);
*/
IdSelectionOptions selectionOptions = ImmutableIdSelectionOptions.builder().entityReference(EntityReference.mkRef(EntityKind.ORG_UNIT, 70)).scope(HierarchyQueryScope.CHILDREN).build();
// count by value
List<TallyPack<String>> countByValueTallyPacks = service.calculateHistoricStatTally(10100L, RollupKind.COUNT_BY_ENTITY, selectionOptions, Duration.WEEK);
System.out.println(countByValueTallyPacks);
// sum by value
List<TallyPack<String>> sumByValueTallyPacks = service.calculateHistoricStatTally(20010L, RollupKind.SUM_BY_VALUE, selectionOptions, Duration.YEAR);
System.out.println(sumByValueTallyPacks);
// pre-computed
List<TallyPack<String>> preComputedTallyPacks = service.calculateHistoricStatTally(11000L, RollupKind.NONE, selectionOptions, Duration.ALL);
System.out.println(preComputedTallyPacks);
System.out.println("done");
}
use of com.khartec.waltz.model.tally.TallyPack in project waltz by khartec.
the class EntityStatisticSummaryDao method generateWithNoRollup.
public TallyPack<String> generateWithNoRollup(Long statisticId, EntityReference entityReference) {
Condition condition = mkNoRollupCondition(newArrayList(statisticId), entityReference, esv.CURRENT.eq(true));
Result<Record4<Long, String, String, Timestamp>> values = dsl.select(esv.STATISTIC_ID, esv.OUTCOME, esv.VALUE, max(esv.CREATED_AT).as(maxCreatedAtField)).from(esv).where(dsl.renderInlined(condition)).groupBy(esv.STATISTIC_ID, esv.OUTCOME, esv.VALUE).fetch();
LocalDateTime maxCreatedAt = values.isNotEmpty() ? values.get(0).getValue(maxCreatedAtField).toLocalDateTime() : nowUtc();
List<Tally<String>> tallies = values.stream().map(r -> ImmutableTally.<String>builder().count(Double.parseDouble(r.getValue(esv.VALUE))).id(r.getValue(esv.OUTCOME)).build()).collect(toList());
return ImmutableTallyPack.<String>builder().entityReference(EntityReference.mkRef(EntityKind.ENTITY_STATISTIC, statisticId)).tallies(tallies).lastUpdatedAt(maxCreatedAt).build();
}
use of com.khartec.waltz.model.tally.TallyPack in project waltz by khartec.
the class EntityStatisticSummaryDao method generateSummary.
private <T> TallyPack<String> generateSummary(Long statisticId, Select<Record1<Long>> appIdSelector, Field<T> aggregateField, Function<T, Double> toTally) {
Condition condition = mkSummaryCondition(newArrayList(statisticId), appIdSelector, esv.CURRENT.eq(true));
Result<Record3<String, T, Timestamp>> values = dsl.select(esv.OUTCOME, aggregateField, max(esv.CREATED_AT).as(maxCreatedAtField)).from(esv).where(condition).groupBy(esv.OUTCOME).fetch();
LocalDateTime maxCreatedAt = values.isNotEmpty() ? values.get(0).getValue(maxCreatedAtField).toLocalDateTime() : nowUtc();
List<Tally<String>> tallies = values.stream().map(r -> ImmutableTally.<String>builder().count(toTally.apply(r.getValue(aggregateField))).id(r.getValue(esv.OUTCOME)).build()).collect(toList());
return ImmutableTallyPack.<String>builder().entityReference(EntityReference.mkRef(EntityKind.ENTITY_STATISTIC, statisticId)).tallies(tallies).lastUpdatedAt(maxCreatedAt).build();
}
Aggregations