private Object[] buildValue(String[] row) { Object[] values = new Object[measureCount]; for (int i = 0; i < measureCount; i++) { String[] colValues = kvBuilder.buildValueOf(i, row); MeasureDesc measure = measureDescs[i]; values[i] = measureIngesters[i].valueOf(colValues, measure, dictionaryMap); } return values; } }
public Object[] buildValueObjects(String[] flatRow) { Object[] measures = new Object[cubeDesc.getMeasures().size()]; for (int i = 0; i < measures.length; i++) { String[] colValues = kvBuilder.buildValueOf(i, flatRow); MeasureDesc measure = measureDescList.get(i); measures[i] = aggrIngesters[i].valueOf(colValues, measure, dictionaryMap); } return measures; }
@Test public void testIngest() { MeasureType<HLLCounter> mtype = (MeasureType<HLLCounter>) MeasureTypeFactory.create(HLLCMeasureType.FUNC_COUNT_DISTINCT, DataType.getType("hllc(10)")); MeasureIngester<HLLCounter> ingester = mtype.newIngester(); HLLCounter hllc; hllc = ingester.valueOf(new String[] { null }, null, null); assertEquals(0, hllc.getCountEstimate()); hllc = ingester.valueOf(new String[] { null, null }, null, null); assertEquals(0, hllc.getCountEstimate()); hllc = ingester.valueOf(new String[] { "" }, null, null); assertEquals(1, hllc.getCountEstimate()); hllc = ingester.valueOf(new String[] { "", null }, null, null); assertEquals(1, hllc.getCountEstimate()); hllc = ingester.valueOf(new String[] { "abc" }, null, null); assertEquals(1, hllc.getCountEstimate()); } }
@Test public void testOverflow() { String text = StringUtils.repeat("h", 21); ExtendedColumnSerializer serializer = new ExtendedColumnSerializer(DataType.getType("extendedcolumn(20)")); MeasureIngester<ByteArray> ingester = measureType.newIngester(); ByteArray array = ingester.valueOf(new String[] { null, text }, null, null); ByteBuffer buffer = ByteBuffer.allocate(serializer.maxLength()); serializer.serialize(array, buffer); buffer.flip(); ByteArray des = serializer.deserialize(buffer); Assert.assertTrue(new ByteArray(StringUtils.repeat("h", 20).getBytes(StandardCharsets.UTF_8)).equals(des)); } }
@Test public void testNormal() { String text = StringUtils.repeat("h", 20); ExtendedColumnSerializer serializer = new ExtendedColumnSerializer(DataType.getType("extendedcolumn(20)")); MeasureIngester<ByteArray> ingester = measureType.newIngester(); ByteArray array = ingester.valueOf(new String[] { null, text }, null, null); ByteBuffer buffer = ByteBuffer.allocate(serializer.maxLength()); serializer.serialize(array, buffer); buffer.flip(); ByteArray des = serializer.deserialize(buffer); Assert.assertTrue(new ByteArray(text.getBytes(StandardCharsets.UTF_8)).equals(des)); }
@Test public void testSerDesNull() { ExtendedColumnSerializer serializer = new ExtendedColumnSerializer(DataType.getType("extendedcolumn(20)")); MeasureIngester<ByteArray> ingester = measureType.newIngester(); ByteArray array = ingester.valueOf(new String[] { null, null }, null, null); Assert.assertTrue(new ByteArray().equals(array)); ByteBuffer buffer = ByteBuffer.allocate(serializer.maxLength()); serializer.serialize(array, buffer); buffer.flip(); int length = serializer.peekLength(buffer); Assert.assertTrue(length == 1); ByteArray des = serializer.deserialize(buffer); Assert.assertTrue(new ByteArray().equals(des)); }
private Object[] buildValue(String[] row) { Object[] values = new Object[measureCount]; for (int i = 0; i < measureCount; i++) { String[] colValues = kvBuilder.buildValueOf(i, row); MeasureDesc measure = measureDescs[i]; values[i] = measureIngesters[i].valueOf(colValues, measure, dictionaryMap); } return values; } }
public Object[] buildValueObjects(String[] flatRow) { Object[] measures = new Object[cubeDesc.getMeasures().size()]; for (int i = 0; i < measures.length; i++) { String[] colValues = kvBuilder.buildValueOf(i, flatRow); MeasureDesc measure = measureDescList.get(i); measures[i] = aggrIngesters[i].valueOf(colValues, measure, dictionaryMap); } return measures; }
private Object buildValueOf(int idxOfMeasure, SplittedBytes[] splitBuffers) { MeasureDesc measure = cubeDesc.getMeasures().get(idxOfMeasure); FunctionDesc function = measure.getFunction(); int[] colIdxOnFlatTable = intermediateTableDesc.getMeasureColumnIndexes()[idxOfMeasure]; int paramCount = function.getParameterCount(); String[] inputToMeasure = new String[paramCount]; // pick up parameter values ParameterDesc param = function.getParameter(); int colParamIdx = 0; // index among parameters of column type for (int i = 0; i < paramCount; i++, param = param.getNextParameter()) { String value; if (function.isCount()) { value = "1"; } else if (param.isColumnType()) { value = getCell(colIdxOnFlatTable[colParamIdx++], splitBuffers); } else { value = param.getValue(); } inputToMeasure[i] = value; } return aggrIngesters[idxOfMeasure].valueOf(inputToMeasure, measure, dictionaryMap); }