public List evaluate()

in src/main/java/org/apache/datasketches/hive/quantiles/GetQuantilesFromDoublesSketchUDF.java [94:120]


  public List<Double> evaluate(final BytesWritable serializedSketch, final Boolean inclusive, final int number) {
    if (serializedSketch == null) { return null; }
    final DoublesSketch sketch = DoublesSketch.wrap(BytesWritableHelper.wrapAsMemory(serializedSketch));
    if (sketch.isEmpty()) { return null; }

    double[] quantiles = null;
    if (number == 1) {
      quantiles = new double[1];
      quantiles[0] = sketch.getMinItem();
    } else if (number == 2) {
      quantiles = new double[2];
      quantiles[0] = sketch.getMinItem();
      quantiles[1] = sketch.getMaxItem();
    } else if (number > 2) {
      final double[] ranks = new double[number];
      final double delta = 1.0 / (number - 1);
      for (int i = 0; i < number; i++) {
        ranks[i] = i * delta;
      }
      quantiles = sketch.getQuantiles(ranks,
          (inclusive ? QuantileSearchCriteria.INCLUSIVE : QuantileSearchCriteria.EXCLUSIVE));
      quantiles[number - 1] = sketch.getMaxItem(); // to ensure the max value is exact
    }

    if (quantiles == null) { return null; }
    return Util.primitivesToList(quantiles);
  }