@AfterClass public static void after() throws Exception { cleanAfterClass(); }
@BeforeClass public static void setUp() throws Exception { staticCreateTestMetadata(); }
@After public void clear() { this.cleanupTestMetadata(); }
public ByteBuffer[] getHColValues(MeasureAggregator[] aggrs) { int i = 0; for (int ci = 0; ci < nHCols; ci++) { HCol col = hcols[ci]; for (int j = 0; j < col.nMeasures; j++) col.measureValues[j] = aggrs[i++].getState(); col.measureBuf.clear(); col.measureCodec.encode(col.measureValues, col.measureBuf); hColValues[ci] = col.measureBuf; } return hColValues; }
public void collectStates(Object[] states) { for (int i = 0; i < descs.length; i++) { states[i] = aggs[i].getState(); } }
public MeasureAggregator[] createBuffer() { MeasureAggregator[] aggrs = new MeasureAggregator[funcNames.length]; for (int i = 0; i < aggrs.length; i++) { if (metricInfos[i].type == MetricType.DistinctCount) { aggrs[i] = MeasureAggregator.create(funcNames[i], dataTypes[i]); } else { //all other fixed length measures can be aggregated as long aggrs[i] = MeasureAggregator.create(funcNames[i], "long"); } } return aggrs; }
@Test public void basicTest() { MeasureDesc[] descs = new MeasureDesc[] { measure("double"), measure("long"), measure("decimal"), measure("HLLC16"), measure("bitmap") }; BufferedMeasureCodec codec = new BufferedMeasureCodec(descs); Double d = new Double(1.0); Long l = new Long(2); BigDecimal b = new BigDecimal("333.1234"); HLLCounter hllc = new HLLCounter(16); hllc.add("1234567"); hllc.add("abcdefg"); BitmapCounter bitmap = RoaringBitmapCounterFactory.INSTANCE.newBitmap(); bitmap.add(123); bitmap.add(45678); bitmap.add(Integer.MAX_VALUE - 10); Object[] values = new Object[] { d, l, b, hllc, bitmap }; ByteBuffer buf = codec.encode(values); buf.flip(); System.out.println("size: " + buf.limit()); Object[] copy = new Object[values.length]; codec.decode(buf, copy); for (int i = 0; i < values.length; i++) { Object x = values[i]; Object y = copy[i]; assertEquals(x, y); } }
@Before public void setup() { this.createTestMetadata(); }
private void init(String[] dataTypes) { nMeasures = dataTypes.length; serializers = new MeasureSerializer[nMeasures]; for (int i = 0; i < nMeasures; i++) { serializers[i] = MeasureSerializer.create(dataTypes[i]); } }
@Override public int getMemBytes() { return guessDoubleMemBytes(); }
public void reset() { for (int i = 0; i < aggs.length; i++) { aggs[i].reset(); } }
@Override public int getMemBytes() { return guessBigDecimalMemBytes(); } }
public void encode(Object[] values, ByteBuffer out) { assert values.length == nMeasures; for (int i = 0; i < nMeasures; i++) { serializers[i].serialize(values[i], out); } } }
@Override public int getMemBytes() { return guessBigDecimalMemBytes(); } }
public void decode(ByteBuffer buf, Object[] result) { assert result.length == nMeasures; for (int i = 0; i < nMeasures; i++) { result[i] = serializers[i].deserialize(buf); } }
public MeasureCodec(String... dataTypes) { init(dataTypes); }
@Override public int getMemBytes() { return guessLongMemBytes(); }
@Override public int getMemBytes() { return guessBigDecimalMemBytes(); }
@Override public int getMemBytes() { return guessDoubleMemBytes(); }
@Test public void test() { CubeDesc desc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_without_slr_left_join_desc"); MeasureDesc topSellerMeasure = null; for (MeasureDesc measureDesc : desc.getMeasures()) { if (measureDesc.getName().equals("TOP_SELLER")) { topSellerMeasure = measureDesc; break; } } TopNMeasureType measureType = (TopNMeasureType) MeasureTypeFactory.create(topSellerMeasure.getFunction().getExpression(), topSellerMeasure.getFunction().getReturnDataType()); topSellerMeasure.getFunction().getConfiguration().clear(); List<TblColRef> colsNeedDict = measureType.getColumnsNeedDictionary(topSellerMeasure.getFunction()); assertTrue(colsNeedDict != null && colsNeedDict.size() == 1); TblColRef sellerColRef = topSellerMeasure.getFunction().getParameter().getColRefs().get(1); topSellerMeasure.getFunction().getConfiguration().put(TopNMeasureType.CONFIG_ENCODING_PREFIX + sellerColRef.getIdentity(), "int:6"); colsNeedDict = measureType.getColumnsNeedDictionary(topSellerMeasure.getFunction()); assertTrue(colsNeedDict.size() == 0); } }