static void updateSketch()

in src/main/java/org/apache/datasketches/pig/tuple/DataToArrayOfDoublesSketchBase.java [119:172]


  static void updateSketch(
      final DataBag bag, final ArrayOfDoublesUpdatableSketch sketch, final int numValues)
          throws ExecException {
    if (bag == null) {
      throw new IllegalArgumentException("InputTuple.Field0: Bag may not be null");
    }
    final double[] values = new double[numValues];
    for (final Tuple tuple: bag) {
      if (tuple.size() != numValues + 1) {
        throw new IllegalArgumentException("Inner tuple of input bag must have " + (numValues + 1)
            + " fields.");
      }

      final Object key = tuple.get(0);
      if (key == null) { continue; }
      for (int i = 0; i < numValues; i++) {
        values[i] = (Double) tuple.get(i + 1);
      }

      switch (tuple.getType(0)) {
      case DataType.BYTE:
        sketch.update(((Byte) key).longValue(), values);
        break;
      case DataType.INTEGER:
        sketch.update(((Integer) key).longValue(), values);
        break;
      case DataType.LONG:
        sketch.update((Long) key, values);
        break;
      case DataType.FLOAT:
        sketch.update((Float) key, values);
        break;
      case DataType.DOUBLE:
        sketch.update((Double) key, values);
        break;
      case DataType.BYTEARRAY:
        final DataByteArray dba = (DataByteArray) key;
        if (dba.size() != 0) {
          sketch.update(dba.get(), values);
        }
        break;
      case DataType.CHARARRAY:
        final String s = key.toString();
        if (!s.isEmpty()) {
          sketch.update(s, values);
        }
        break;
      default:
        throw new IllegalArgumentException("Field 0 must be one of "
            + "NULL, BYTE, INTEGER, LONG, FLOAT, DOUBLE, BYTEARRAY or CHARARRAY. " + "Type = "
            + DataType.findTypeName(tuple.getType(0)) + ", Object = " + key.toString());
      }
    }
  }