我创建了一个聚合函数,这在塞在其中工作的AQL工作:塞式UDF的NodeJS聚集错误
AGGREGATE filter2.check_teamId('123', 0, 1456499994597) ON analytics.tracking
WHERE teamId = '123'
这将返回结果。 我然后尝试使用相同的UDF中的NodeJS:
var statement = {
aggregationUDF: {module: 'filter2', funcname: 'check_teamId',
arg:['123', 0, 1456499994597]}
};
var query = client.query('analytics', 'tracking', statement);
var stream = query.execute();
结果是一个看似无信息错误:
{ code: 100,
message: 'UDF: Execution Error 1',
func: 'as_query_aggregate',
file: 'src/main/aerospike/aerospike_query.c',
line: 903 }
服务器日志状态:
Feb 28 2016 22:33:58 GMT: INFO (scan): (scan.c::933) starting aggregation scan job 1201452721893048027 {analytics:tracking} priority 2
Feb 28 2016 22:33:58 GMT: INFO (scan): (scan.c::1026) finished aggregation scan job 1201452721893048027 (0)
有谁有任何提示让UDF与NodeJS一起工作? 或者任何想法如何诊断错误?
我已经在配置中设置了用户UDF位置,但不影响结果。
UPDATE: 这里是Lua代码:
local function map_profile(record)
return map {interaction=record.interaction,
teamId=record.teamId, datetime=record.datetime,
timestamp=record.timestamp, version=record.version,
interactions=record.interactions}
end
function check_teamId(stream, teamId, startDate, endDate)
local function filter_teamId(record)
return record.teamId == teamId and
record.timestamp >= startDate and record.timestamp <= endDate
end
return stream : filter(filter_teamId) : map(map_profile)
end
“check_teamId”UDF的代码是什么? –
另外,在Node.JS版本的语句对象中,AQL语句中有'WHERE'子句,但没有'filters'部分。 –
谢谢@AdamB。用上面的lua代码更新。 WHERE子句实际上不是必需的,查询在没有它的情况下运行良好。 – TStu