R langue fonction scalaire 1
L'exemple suivant crée une fonction qui renvoie la longueur totale de toutes les colonnes d'entrée de caractères.
Coder
Dans R AE, l'objet principal fourni par l'utilisateur est une fonction appelée " nz.fun. Il encapsule la boucle principale de l'AE et utilise l'API de l'AE R pour recevoir et émettre des données. L'exemple suivant montre l'implémentation de " applyop dans R.
nz.fun <- function () {
while(getNext()) {
op <- getInputColumn(0)
X <- c()
for (i in seq(1, inputColumnCount()-1)) {
x <- as.numeric(getInputColumn(i))
if (!is.null(x) && !is.na(x))
X <- append(X, x)
}
if (op != '+' && op != '*')
stop('incorrect operator: ', op)
setOutputInt32(0, eval(parse(text=paste(X, collapse=op))))
outputResult()
}
}
La boucle principale se termine lorsque " getNext() renvoie la valeur false, ce qui indique qu'il n'y a plus de lignes d'entrée à traiter. Chaque ligne d'entrée est accessible par le " getInputColumn() qui renvoie la valeur de la colonne spécifiée par son index. L'indice de la première colonne est zéro et l'indice de la dernière colonne est " inputColumnCount()-1. Les valeurs de sortie sont traitées par les fonctions " setOutput*, où l'astérisque représente un identifiant de type de données spécifique. Pour envoyer les valeurs de sortie à la base de données, la fonction " outputResult() doit être appelée.
En cas d'erreur, appelez la fonction R standard " stop() ou utilisez la fonction de l'API AE appelée " userError(). Les deux fonctions interrompent l'exécution du programme et renvoient le message d'erreur à l'appelant.
Compilation
/nz/export/ae/utilities/bin/compile_ae --language r \
--version 3 --template compile --user nz --db dev \
/tmp/applyop.RAu cours de l'étape de compilation, le fichier source d'entrée est sérialisé à l'aide de l'API R standard et préparé pour une exécution ultérieure. La sortie est stockée sous un chemin prédéfini qui est accessible depuis l'hôte et sur les SPU, en fonction de la base de données et des noms d'utilisateur.
Enregistrement
- Le nom du modèle doit être udf.
- Le nom de l'utilisateur, le nom de la base de données et la signature UDX, y compris le type de sortie, doivent correspondre aux valeurs de la compilation.
- Le nom de l'exécutable doit correspondre au nom du fichier source de l'étape de compilation.
/nz/export/ae/utilities/bin/register_ae --language r \
--version 3 --user nz --db dev --template udf \
--sig 'applyop(VARARGS)' --return INT4 --exe applyop.REn cours d'exécution
SELECT applyop('+', 4, 10);
APPLYOP
---------
14
(1 row)
SELECT applyop('*', 3, 5);
APPLYOP
---------
15
(1 row)
SELECT applyop('-', 3, 5);
ERROR: Error in function () : incorrect operator: -