case "var": case "var_pop": evaluator = new GenericUDAFVariance.GenericUDAFVarianceEvaluator(); break; case "var_samp":
setResult(new DoubleWritable(0)); return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
setResult(new DoubleWritable(0)); return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
setResult(new DoubleWritable(0)); return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
@Override public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) throws SemanticException { if (parameters.length != 1) { throw new UDFArgumentTypeException(parameters.length - 1, "Exactly one argument is expected."); } if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) { throw new UDFArgumentTypeException(0, "Only primitive type arguments are accepted but " + parameters[0].getTypeName() + " is passed."); } switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) { case BYTE: case SHORT: case INT: case LONG: case FLOAT: case DOUBLE: case STRING: case TIMESTAMP: case DECIMAL: return new GenericUDAFVarianceEvaluator(); case BOOLEAN: case DATE: default: throw new UDFArgumentTypeException(0, "Only numeric or string type arguments are accepted but " + parameters[0].getTypeName() + " is passed."); } }
@Override public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) throws SemanticException { if (parameters.length != 1) { throw new UDFArgumentTypeException(parameters.length - 1, "Exactly one argument is expected."); } if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) { throw new UDFArgumentTypeException(0, "Only primitive type arguments are accepted but " + parameters[0].getTypeName() + " is passed."); } switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) { case BYTE: case SHORT: case INT: case LONG: case FLOAT: case DOUBLE: case STRING: return new GenericUDAFVarianceEvaluator(); case BOOLEAN: default: throw new UDFArgumentTypeException(0, "Only numeric or string type arguments are accepted but " + parameters[0].getTypeName() + " is passed."); } }
@Override public Object terminate(AggregationBuffer agg) throws HiveException { StdAgg myagg = (StdAgg) agg; if (myagg.count == 0) { // SQL standard - return null for zero elements return null; } else { if (myagg.count > 1) { getResult().set(myagg.variance / (myagg.count)); } else { // for one element the variance is always 0 getResult().set(0); } return getResult(); } }
@Override public Object terminate(AggregationBuffer agg) throws HiveException { StdAgg myagg = (StdAgg) agg; if (myagg.count == 0) { // SQL standard - return null for zero elements return null; } else { if (myagg.count > 1) { getResult().set(myagg.variance / (myagg.count)); } else { // for one element the variance is always 0 getResult().set(0); } return getResult(); } }
@Override public AggregationBuffer getNewAggregationBuffer() throws HiveException { StdAgg result = new StdAgg(); reset(result); return result; }
@Override public AggregationBuffer getNewAggregationBuffer() throws HiveException { StdAgg result = new StdAgg(); reset(result); return result; }
case TIMESTAMP: case DECIMAL: return new GenericUDAFVarianceEvaluator(); case BOOLEAN: case DATE:
setResult(new DoubleWritable(0)); return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
case TIMESTAMP: case DECIMAL: return new GenericUDAFVarianceEvaluator(); case BOOLEAN: case DATE:
@Override public Object terminate(AggregationBuffer agg) throws HiveException { StdAgg myagg = (StdAgg) agg; if (myagg.count == 0) { // SQL standard - return null for zero elements return null; } else { if (myagg.count > 1) { getResult().set(myagg.variance / (myagg.count)); } else { // for one element the variance is always 0 getResult().set(0); } return getResult(); } }
@Override public Object terminate(AggregationBuffer agg) throws HiveException { StdAgg myagg = (StdAgg) agg; if (myagg.count == 0) { // SQL standard - return null for zero elements return null; } else { if (myagg.count > 1) { getResult().set( calculateVarianceResult(myagg.variance, myagg.count)); } else { // for one element the variance is always 0 getResult().set(0); } return getResult(); } }
@Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { if (parameters[0] == null || parameters[1] == null) return; super.iterate(agg, new Object[] { parameters[1] }); }
@Override public AggregationBuffer getNewAggregationBuffer() throws HiveException { StdAgg result = new StdAgg(); reset(result); return result; }
@Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { if (parameters[0] == null || parameters[1] == null) return; super.iterate(agg, new Object[] { parameters[0] }); }
@Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { if (parameters[0] == null || parameters[1] == null) return; super.iterate(agg, new Object[] { parameters[0] }); }