我已经问过Vertica对此的支持,但是想知道这里是否有任何问题。
我正在使用Vertica Analytic Database v6.1.3-0 我使用的是R版3.0.0 - 它附带了Vertica R语言包。
我尝试创建一个使用USING PARAMETERS关键字传递的参数的简单UDF。
这是R代码:
testFun <- function(x,y) {
# extract the function parameters from y
parameter <- y[["parameter"]] # parameter to be passed
sum(x[,1])
}
testFunParams <- function()
{
params <- data.frame(datatype=rep(NA, 1), length=rep(NA,1),scale=rep(NA,1),name=rep(NA,1))
params[1,1] <- "varchar"
params[1,2] <- "40"
params[1,4] <- "parameter"
params
}
testFunFactory <- function()
{
list(
name=testFun
,udxtype=c("transform")
,intype=c("int")
,outtype=c("varchar(200)")
,outnames=c('test')
,parametertypecallback=testFunParams
,volatility=c("stable")
,strict=c("called_on_null_input")
)
}
在Vertica我运行库:
drop library r_test cascade;
create or replace library r_test as '.../testFun.r' language 'R';
create transform function testFun as name 'testFunFactory' library r_test;
create table test as select 1 as x union select 2 union select 3 union select 4 union select 5 union select 6 union select 7;
select testFun(x) over() from test;
> ERROR 3399: Failure in UDx RPC call InvokeGetParameterType(): Error calling getParameterType() in User Defined Object [testFun] at [/scratch_a/release/vbuild/vertica/UDxFence/vertica-udx-R.cpp:245], error code: 0, message: Error happened in getParameterType : not compatible with REALSXP
我已经尝试过Vertica的带有参数的函数示例,但是当我将参数类型更改为varchar时失败了。
可以做些什么?
由于
答案 0 :(得分:0)
我测试了您的配置并返回了以下错误
[...] getParameterType发生错误:与REALSXP [...]
不兼容经过一些调整,我知道发生了什么。你节省了&#34; scale&#34;作为字符值而不是&#34; testFunParams&#34;。
中的数字测试这是否有助于你=)