package com.facebook.hive.udf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
/**
* Find the 0-indexed argument with the largest value.
*/
@Description(name = "udfargmax",
value = "_FUNC_(double, double, ...) - Find the index with the largest value",
extended = "Example:\n"
+ " > SELECT ARGMAX(foo, bar) FROM users;\n")
public class UDFArgMax extends UDF {
public Integer evaluate(Double... args) {
Integer which_max = null;
Double max_val = Double.NEGATIVE_INFINITY;
for (int ii = 0; ii < args.length; ++ii) {
if (args[ii] != null && args[ii] > max_val) {
max_val = args[ii];
which_max = ii;
}
}
return which_max;
}
}