I am writing a query in bigquery using standard SQL and javascript UDF, and I ran into error "Error: Syntax error: Expected "<" but got ")"; failed to parse CREATE [TEMP] FUNCTION statement at [1:47]". Below is the command lines. Please can someone help. Many thanks.
CREATE TEMPORARY FUNCTION IRRCalc(CArray ARRAY)
RETURNS FLOAT64
LANGUAGE js AS """
function IRRCalc(CArray){
min = 0.0;
max = 1.0;
do {
guess = (min + max) / 2;
NPV = 0.0;
for (var j=0; j<CArray.length; j++){
NPV += CArray[j]/Math.pow((1+guess),j);
}
if (NPV > 0){
min = guess;
}
else {
max = guess;
}
} while (Math.abs(NPV) > 0.00000001);
return guess * 100;
}
""";
WITH Input AS
(SELECT [-100, 100, 100, 100, 100, 100] as CArray
UNION ALL
SELECT [-100, 100, 100, 100, 100] as CArray)
SELECT
CArray,
IRRCalc(CArray) as IRR
FROM Input as t;
CArraysupposed to be anARRAY<INT64>? Note thatINT64is not officially supported as input to JavaScript UDFs, so maybe you wantARRAY<FLOAT64>.