Ошибки при передаче параметров символов в R UDF в Vertica

Я также попросил поддержку Vertica по этому поводу, но мне интересно, есть ли у кого-нибудь такая же проблема.

Я работаю с Vertica Analytic Database v6.1.3-0. Я использую R версии 3.0.0, которая поставляется с языковым пакетом Vertica R.

Я пытаюсь создать простую пользовательскую функцию, в которой используется параметр, переданный с помощью ключевого слова USING PARAMETERS.

Это код 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, это не удалось.

Что может быть сделано?

Спасибо


person Aviad Klein    schedule 19.05.2014    source источник


Ответы (1)


Я проверил вашу конфигурацию, и она вернула следующую ошибку

[...] Произошла ошибка в getParameterType : несовместимо с REALSXP [...]

И после некоторой настройки я знаю, что произошло. Вы сохранили «масштаб» как символьное значение вместо числового в «testFunParams».

Проверьте, поможет ли это вам =)

person Said Montiel    schedule 20.05.2014