public BytesWritable evaluate()

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());
  }