我使用命令创建了一个名为“passthrough”的udf,
%%bigquery udf -m passthrough
function passthrough(row, emit) {
emit({outputA: row.inputA, outputB: row.inputB});
}
bigquery.defineFunction(
'passthrough',
['inputA', 'inputB'],
[{'name': 'outputA', 'type': 'string'},
{'name': 'outputB', 'type': 'string'}],
passthrough
);
然后,它返回了错误。
JavaScript 必须使用有效的 jsdoc 格式注释声明输入行和输出发射器参数。输入行参数声明必须键入 {{field:type, field2:type}},输出发射器参数声明必须键入 function({{field:type, field2:type}}。
所以,我在 passthrough 函数上面添加了 jsdoc 注释,
/**
* @param {{field:string, field2:string}} row
* @param function({{field:string, field2:string}}) emit
*/
并运行 sql 命令。但它仍然返回错误“未知 TVF:直通”。
%%sql
SELECT outputA, outputB FROM (passthrough(SELECT "abc" AS inputA, "def" AS inputB))
如何声明参数,稍后在 datalab 上使用 UDF?