Función de fila simulada en lenguaje R

Código

El siguiente ejemplo crea una función de fila simulada que toma como entrada una representación de cadena de tiempo, por ejemplo, "12:30:55" y da como salida una fila de 3 anchos con la entrada dividida en sus partes componentes.

Introduce el siguiente código en el archivo ' /tmp/split.R ':
nz.fun <- function() {
while(getNext()) {
chunks <- strsplit(getInputColumn(0), ':')[[1]]
for (i in seq(chunks))
setOutputString(i-1, chunks[i])
outputResult()
}
}

Una compilación

Compila el código como sigue:
/nz/export/ae/utilities/bin/compile_ae --language r --version 3 \
--template compile --user nz --db dev /tmp/split.R

Registro

Dado que no existe un concepto integrado de función de fila en Netezza SQL, esta función se registra como una función de tabla, a pesar de que sólo genera una fila por cada fila de entrada:
/nz/export/ae/utilities/bin/register_ae --language r --version 3 \
--template udtf --exe split.R --sig "split(VARCHAR(20))" \
--return "TABLE(hour VARCHAR(2), minute VARCHAR(2), second VARCHAR(2))"

En ejecución

Al ejecutar esta función en nzsql, se obtiene el siguiente resultado:
SELECT * FROM TABLE WITH FINAL(split('13:22:47'));
HOUR | MINUTE | SECOND
------+--------+--------
13 | 22 | 47