in src/main/java/org/apache/datasketches/hive/tuple/ArrayOfDoublesSketchToQuantilesSketchUDF.java [73:97]
public BytesWritable evaluate(final BytesWritable serializedSketch, final int column,
final int k) {
if (serializedSketch == null) { return null; }
final ArrayOfDoublesSketch sketch = ArrayOfDoublesSketches.wrapSketch(
BytesWritableHelper.wrapAsMemory(serializedSketch));
if (column < 1) {
throw new IllegalArgumentException("Column number must be greater than zero. Received: "
+ column);
}
if (column > sketch.getNumValues()) {
throw new IllegalArgumentException("Column number " + column
+ " is out of range. The given sketch has "
+ sketch.getNumValues() + " columns");
}
final DoublesSketchBuilder builder = DoublesSketch.builder();
if (k > 0) {
builder.setK(k);
}
final UpdateDoublesSketch qs = builder.build();
final ArrayOfDoublesSketchIterator it = sketch.iterator();
while (it.next()) {
qs.update(it.getValues()[column - 1]);
}
return new BytesWritable(qs.compact().toByteArray());
}