public void writeColumn(TblColRef col, String value, int roundingFlag, byte defaultValue, byte[] output, int outputOffset) { DimensionEncoding dimEnc = dimEncMap.get(col); if (dimEnc instanceof DictionaryDimEnc) dimEnc = ((DictionaryDimEnc) dimEnc).copy(roundingFlag, defaultValue); dimEnc.encode(value, output, outputOffset); }
private ByteArray encode(DimensionEncoding enc, Object value) { byte[] buf = new byte[enc.getLengthOfEncoding()]; String valueStr = value == null ? null : value.toString(); enc.encode(valueStr, buf, 0); return new ByteArray(buf); }
@Override public TopNCounter<ByteArray> valueOf(String[] values, MeasureDesc measureDesc, Map<TblColRef, Dictionary<String>> dictionaryMap) { double counter = values[0] == null ? 0 : Double.parseDouble(values[0]); if (dimensionEncodings == null) { literalCols = getTopNLiteralColumn(measureDesc.getFunction()); dimensionEncodings = getDimensionEncodings(measureDesc.getFunction(), literalCols, dictionaryMap); for (DimensionEncoding encoding : dimensionEncodings) { keyLength += encoding.getLengthOfEncoding(); } if (values.length != (literalCols.size() + 1)) { throw new IllegalArgumentException(); } } final ByteArray key = new ByteArray(keyLength); int offset = 0; for (int i = 0; i < dimensionEncodings.length; i++) { if (values[i + 1] == null) { Arrays.fill(key.array(), offset, offset + dimensionEncodings[i].getLengthOfEncoding(), DimensionEncoding.NULL); } else { dimensionEncodings[i].encode(values[i + 1], key.array(), offset); } offset += dimensionEncodings[i].getLengthOfEncoding(); } TopNCounter<ByteArray> topNCounter = new TopNCounter<ByteArray>( dataType.getPrecision() * TopNCounter.EXTRA_SPACE_RATE); topNCounter.offer(key, counter); return topNCounter; }
String dimValue = dimensionEncodings[i].decode(c.getItem().array(), offset, dimensionEncodings[i].getLengthOfEncoding()); newDimensionEncodings[i].encode(dimValue, newIdBuf, bufOffset + innerBuffOffset); innerBuffOffset += newDimensionEncodings[i].getLengthOfEncoding(); offset += dimensionEncodings[i].getLengthOfEncoding();
public void writeColumn(TblColRef col, String value, int roundingFlag, byte defaultValue, byte[] output, int outputOffset) { DimensionEncoding dimEnc = dimEncMap.get(col); if (dimEnc instanceof DictionaryDimEnc) dimEnc = ((DictionaryDimEnc) dimEnc).copy(roundingFlag, defaultValue); dimEnc.encode(value, output, outputOffset); }
@Override public TopNCounter<ByteArray> valueOf(String[] values, MeasureDesc measureDesc, Map<TblColRef, Dictionary<String>> dictionaryMap) { double counter = values[0] == null ? 0 : Double.parseDouble(values[0]); if (dimensionEncodings == null) { literalCols = getTopNLiteralColumn(measureDesc.getFunction()); dimensionEncodings = getDimensionEncodings(measureDesc.getFunction(), literalCols, dictionaryMap); for (DimensionEncoding encoding : dimensionEncodings) { keyLength += encoding.getLengthOfEncoding(); } if (values.length != (literalCols.size() + 1)) { throw new IllegalArgumentException(); } } final ByteArray key = new ByteArray(keyLength); int offset = 0; for (int i = 0; i < dimensionEncodings.length; i++) { if (values[i + 1] == null) { Arrays.fill(key.array(), offset, offset + dimensionEncodings[i].getLengthOfEncoding(), DimensionEncoding.NULL); } else { dimensionEncodings[i].encode(values[i + 1], key.array(), offset); } offset += dimensionEncodings[i].getLengthOfEncoding(); } TopNCounter<ByteArray> topNCounter = new TopNCounter<ByteArray>( dataType.getPrecision() * TopNCounter.EXTRA_SPACE_RATE); topNCounter.offer(key, counter); return topNCounter; }
String dimValue = dimensionEncodings[i].decode(c.getItem().array(), offset, dimensionEncodings[i].getLengthOfEncoding()); newDimensionEncodings[i].encode(dimValue, newIdBuf, bufOffset + innerBuffOffset); innerBuffOffset += newDimensionEncodings[i].getLengthOfEncoding(); offset += dimensionEncodings[i].getLengthOfEncoding();