我創建了一個聚合函數,這在塞在其中工作的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