public ImmutableBitSet selectColumns(ImmutableBitSet selectedColBlocks) { ImmutableBitSet result = ImmutableBitSet.EMPTY; for (int i = 0; i < selectedColBlocks.trueBitCount(); i++) { result = result.or(colBlocks[selectedColBlocks.trueBitAt(i)]); } return result; }
private void validate(GTInfo info) { if (hasAggregation()) { if (aggrGroupBy.intersects(aggrMetrics) || aggrGroupBy.intersects(rtAggrMetrics)) throw new IllegalStateException(); if (aggrMetrics.cardinality() != aggrMetricsFuncs.length) throw new IllegalStateException(); if (columns == null) columns = ImmutableBitSet.EMPTY; columns = columns.or(aggrGroupBy); columns = columns.or(aggrMetrics); } if (columns == null) columns = info.colAll; if (hasFilterPushDown()) { validateFilterPushDown(info); } this.selectedColBlocks = info.selectColumnBlocks(columns.or(rtAggrMetrics).andNot(dynamicCols)); }
merge = merge.or(colBlocks[i]);
private CuboidResult scanAndAggregateGridTable(GridTable gridTable, long parentId, long cuboidId, ImmutableBitSet aggregationColumns, ImmutableBitSet measureColumns) throws IOException { long startTime = System.currentTimeMillis(); logger.info("Calculating cuboid {}", cuboidId); GTAggregateScanner scanner = prepareGTAggregationScanner(gridTable, parentId, cuboidId, aggregationColumns, measureColumns); GridTable newGridTable = newGridTableByCuboidID(cuboidId); GTBuilder builder = newGridTable.rebuild(); ImmutableBitSet allNeededColumns = aggregationColumns.or(measureColumns); GTRecord newRecord = new GTRecord(newGridTable.getInfo()); int count = 0; try { for (GTRecord record : scanner) { count++; for (int i = 0; i < allNeededColumns.trueBitCount(); i++) { int c = allNeededColumns.trueBitAt(i); newRecord.set(i, record.get(c)); } builder.write(newRecord); } } finally { scanner.close(); builder.close(); } long timeSpent = System.currentTimeMillis() - startTime; logger.info("Cuboid {} has {} rows, build takes {}ms", cuboidId, count, timeSpent); return updateCuboidResult(cuboidId, newGridTable, count, timeSpent, 0); }
GTBuilder builder = newGridTable.rebuild(); ImmutableBitSet allNeededColumns = aggregationColumns.or(measureColumns);
public ImmutableBitSet selectColumns(ImmutableBitSet selectedColBlocks) { ImmutableBitSet result = ImmutableBitSet.EMPTY; for (int i = 0; i < selectedColBlocks.trueBitCount(); i++) { result = result.or(colBlocks[selectedColBlocks.trueBitAt(i)]); } return result; }
private void validate(GTInfo info) { if (hasAggregation()) { if (aggrGroupBy.intersects(aggrMetrics) || aggrGroupBy.intersects(rtAggrMetrics)) throw new IllegalStateException(); if (aggrMetrics.cardinality() != aggrMetricsFuncs.length) throw new IllegalStateException(); if (columns == null) columns = ImmutableBitSet.EMPTY; columns = columns.or(aggrGroupBy); columns = columns.or(aggrMetrics); } if (columns == null) columns = info.colAll; if (hasFilterPushDown()) { validateFilterPushDown(info); } this.selectedColBlocks = info.selectColumnBlocks(columns.or(rtAggrMetrics).andNot(dynamicCols)); }
merge = merge.or(colBlocks[i]);
private CuboidResult scanAndAggregateGridTable(GridTable gridTable, long parentId, long cuboidId, ImmutableBitSet aggregationColumns, ImmutableBitSet measureColumns) throws IOException { long startTime = System.currentTimeMillis(); logger.info("Calculating cuboid {}", cuboidId); GTAggregateScanner scanner = prepareGTAggregationScanner(gridTable, parentId, cuboidId, aggregationColumns, measureColumns); GridTable newGridTable = newGridTableByCuboidID(cuboidId); GTBuilder builder = newGridTable.rebuild(); ImmutableBitSet allNeededColumns = aggregationColumns.or(measureColumns); GTRecord newRecord = new GTRecord(newGridTable.getInfo()); int count = 0; try { for (GTRecord record : scanner) { count++; for (int i = 0; i < allNeededColumns.trueBitCount(); i++) { int c = allNeededColumns.trueBitAt(i); newRecord.set(i, record.get(c)); } builder.write(newRecord); } } finally { scanner.close(); builder.close(); } long timeSpent = System.currentTimeMillis() - startTime; logger.info("Cuboid {} has {} rows, build takes {}ms", cuboidId, count, timeSpent); return updateCuboidResult(cuboidId, newGridTable, count, timeSpent, 0); }
GTBuilder builder = newGridTable.rebuild(); ImmutableBitSet allNeededColumns = aggregationColumns.or(measureColumns);