@Test(dataProvider = "formatDataProvider") public void testConsecutiveDayParts(DateFormat format) throws LensException, InterruptedException { Set<FactPartition> answeringParts = new LinkedHashSet<>(); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, format)); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), DAILY, null, format)); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, 0), DAILY, null, format)); String whereClause = getTimerangeWriter().getTimeRangeWhereClause(getMockedCubeContext(false), "test", answeringParts); validateConsecutive(whereClause, format); }
/** * Partition should not be used a indicative of the class itself. * New Fact partition created includes more final partitions with that creation. * @return */ public FactPartition withoutContaining() { return new FactPartition(this.getPartCol(), this.getPartSpec(), this.getPeriod(), null, this .getPartFormat(), this.getStorageTables()); } public FactPartition(String partCol, TimePartition timePartition) {
/** * Partition should not be used a indicative of the class itself. * New Fact partition created includes more final partitions with that creation. * @return */ public FactPartition withoutContaining() { return new FactPartition(this.getPartCol(), this.getPartSpec(), this.getPeriod(), null, this .getPartFormat(), this.getStorageTables()); } public FactPartition(String partCol, TimePartition timePartition) {
private Set<FactPartition> getFactParts(List<String> partStrings) throws ParseException { Set<FactPartition> factParts = new HashSet<FactPartition>(); for (String partStr : partStrings) { String[] partEls = partStr.split(" "); UpdatePeriod p = null; String partSpec = partEls[1]; switch (partSpec.length()) { case 7: //monthly p = UpdatePeriod.MONTHLY; break; case 10: // daily p = UpdatePeriod.DAILY; break; case 13: // hourly p = UpdatePeriod.HOURLY; break; } FactPartition part = new FactPartition(partEls[0], p.parse(partSpec), p, null, p.format(), Collections.singleton("table1")); factParts.add(part); } return factParts; }
public FactPartition next() throws LensException { return new FactPartition(getPartCol(), getTimePartition().next(), getContainingPart(), getStorageTables()); }
public FactPartition next() throws LensException { return new FactPartition(getPartCol(), getTimePartition().next(), getContainingPart(), getStorageTables()); }
public FactPartition previous() throws LensException { return new FactPartition(getPartCol(), getTimePartition().previous(), getContainingPart(), getStorageTables()); }
public FactPartition previous() throws LensException { return new FactPartition(getPartCol(), getTimePartition().previous(), getContainingPart(), getStorageTables()); }
@Test public void testSinglePart() throws LensException { Set<FactPartition> answeringParts = new LinkedHashSet<FactPartition>(); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, null)); String whereClause = getTimerangeWriter().getTimeRangeWhereClause(getMockedCubeContext(false), "test", answeringParts); validateSingle(whereClause, null); answeringParts = new LinkedHashSet<>(); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, DB_FORMAT)); whereClause = getTimerangeWriter().getTimeRangeWhereClause(getMockedCubeContext(false), "test", answeringParts); validateSingle(whereClause, DB_FORMAT); }
@Test public void testSinglePartBetweenOnly() throws LensException { Set<FactPartition> answeringParts = new LinkedHashSet<FactPartition>(); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, null)); String whereClause = getTimerangeWriter().getTimeRangeWhereClause(getMockedCubeContext(true), "test", answeringParts); validateBetweenOnlySingle(whereClause, null); answeringParts = new LinkedHashSet<>(); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, DB_FORMAT)); whereClause = getTimerangeWriter().getTimeRangeWhereClause(getMockedCubeContext(true), "test", answeringParts); validateBetweenOnlySingle(whereClause, DB_FORMAT); }
FactPartition part = new FactPartition(partCol, fromDate, maxInterval, null, partWhereClauseFormat); partitions.add(part); part.getStorageTables().add(storageTable); part = new FactPartition(partCol, toDate, maxInterval, null, partWhereClauseFormat); partitions.add(part); part.getStorageTables().add(storageTable); Date dt = iter.next(); Date nextDt = iter.peekNext(); FactPartition part = new FactPartition(partCol, dt, maxInterval, null, partWhereClauseFormat); updatePartitionStorage(part); log.debug("Storage tables containing Partition {} are: {}", part, part.getStorageTables()); Date pdt = processTimeIter.next(); Date nextPdt = processTimeIter.peekNext(); FactPartition processTimePartition = new FactPartition(processTimePartCol, pdt, maxInterval, null, partWhereClauseFormat); updatePartitionStorage(processTimePartition); log.debug("Looking for finer partitions in pPart: {}", pPart); for (Date date : timeRange.iterable(pPart.getPeriod(), 1)) { FactPartition innerPart = new FactPartition(partCol, date, pPart.getPeriod(), pPart, partWhereClauseFormat); updatePartitionStorage(innerPart);
FactPartition part = new FactPartition(partCol, fromDate, maxInterval, null, partWhereClauseFormat); partitions.add(part); part.getStorageTables().add(storageTable); part = new FactPartition(partCol, toDate, maxInterval, null, partWhereClauseFormat); partitions.add(part); part.getStorageTables().add(storageTable); Date dt = iter.next(); Date nextDt = iter.peekNext(); FactPartition part = new FactPartition(partCol, dt, maxInterval, null, partWhereClauseFormat); updatePartitionStorage(part); log.debug("Storage tables containing Partition {} are: {}", part, part.getStorageTables()); while (timeIter.hasNext()){ Date date = timeIter.next(); currFactPartition = new FactPartition(processTimePartCol, date, maxInterval, null, partWhereClauseFormat); updatePartitionStorage(currFactPartition); log.debug("Looking for finer partitions in pPart: {}", pPart); for (Date date : timeRange.iterable(pPart.getPeriod(), 1)) { FactPartition innerPart = new FactPartition(partCol, date, pPart.getPeriod(), pPart, partWhereClauseFormat); updatePartitionStorage(innerPart);
answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s123)); answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s3)); answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s3)); Map<String, Set<FactPartition>> result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s123)); answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s4)); answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s5)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s1)); answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s2)); answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s3)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s23)); answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s4)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s24)); answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s4)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result);
@Test public void testDisjointParts() { Set<FactPartition> answeringParts = new LinkedHashSet<FactPartition>(); answeringParts.add(new FactPartition("dt", getDateWithOffset(MONTHLY, -2), MONTHLY, null, null)); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), DAILY, null, null)); answeringParts.add(new FactPartition("dt", getDateWithOffset(HOURLY, 0), HOURLY, null, null)); answeringParts.add(new FactPartition("dt", getDateWithOffset(MONTHLY, -2), MONTHLY, null, DB_FORMAT)); answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), DAILY, null, DB_FORMAT)); answeringParts.add(new FactPartition("dt", getDateWithOffset(HOURLY, 0), HOURLY, null, DB_FORMAT));
TimePartition.of(DAILY, ceilDay).rangeUpto(TimePartition.of(DAILY, nextDay)), TimePartition.of(HOURLY, nextDay).rangeUpto(TimePartition.of(HOURLY, NOW)))) { FactPartition fp = new FactPartition("it", p, null, storageTables); expectedPartsQueried.add(fp); FactPartition ptPartition = new FactPartition("pt", pt, null, storageTables); FactPartition itPartition = new FactPartition("it", it, ptPartition, storageTables); expectedPartsQueried.add(itPartition); TimePartition.of(DAILY, nextDay).rangeUpto(TimePartition.of(DAILY, nextToNextDay)), TimePartition.of(HOURLY, nextToNextDay).rangeUpto(TimePartition.of(HOURLY, NOW)))) { FactPartition fp = new FactPartition("it", p, null, storageTables); expectedPartsQueried.add(fp); FactPartition ptPartition = new FactPartition("pt", pt, null, storageTables); FactPartition itPartition = new FactPartition("it", it, ptPartition, storageTables); expectedPartsQueried.add(itPartition); FactPartition ptPartition = new FactPartition("pt", pt, null, storageTables); FactPartition itPartition = new FactPartition("it", it, ptPartition, storageTables); expectedPartsQueried.add(itPartition);