package com.facebook.hive.udf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import java.util.ArrayList;
/**
* Like 'FIELD', but operates on an Array.
*/
@Description(name = "udffindinarray",
value = "_FUNC_(NEEDLE, HAYSTACK) - Find the first 1-indexed value of HAYSTACK which matches NEEDLE. Returns NULL if HAYSTACK is NULL. Returns 0 if NEEDLE is not found in HAYSTACK or is NULL.",
extended = "Example:\n"
+ " > SELECT FIND_IN_ARRAY(foo, bar) FROM users;\n")
public class UDFFindInArray extends UDF {
public Integer evaluate(String needle, ArrayList<String> haystack) {
if (needle == null) {
return Integer.valueOf(0);
}
if (haystack == null) {
return null;
}
int retval = 0;
for (int ii = 0; ii < haystack.size(); ++ii) {
if (haystack.get(ii).equals(needle)) {
retval = ii + 1;
}
}
return Integer.valueOf(retval);
}
}