package com.facebook.hive.udf; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; /** * Find the sum of elements in a list. If any are null, return null. */ @Description(name = "udfpsum", value = "_FUNC_(...) - Find the sum of arguments passed. Unlike SUM, PSUM adds up all of its arguments row-wise, rather than adding up a column of data. If any element is NULL, NULL is returned.") public class UDFPsum extends UDF { public Double evaluate(Double... args) { Double psum = args.length > 0 ? 0.0 : null; for (int ii = 0; ii < args.length; ++ii) { if (args[ii] == null) { return null; } psum += args[ii]; } return psum; } }