将字符参数传递给Vertica中的R UDF时出错

时间:2014-05-19 04:55:44

标签: r vertica

我已经问过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时失败了。

可以做些什么?

由于

1 个答案:

答案 0 :(得分:0)

我测试了您的配置并返回了以下错误

[...] getParameterType发生错误:与REALSXP [...]

不兼容

经过一些调整,我知道发生了什么。你节省了&#34; scale&#34;作为字符值而不是&#34; testFunParams&#34;。

中的数字

测试这是否有助于你=)