Formadores y clasificadores de lenguaje Python
Este ejemplo utiliza el siguiente nombre de archivo: ' shaperSizer.py
Código
El código de este ejemplo muestra tanto un modelador como un dimensionador, cada uno de los cuales utiliza el mismo código y realiza esencialmente la misma tarea. El código devuelve como salida la entrada dada. No demuestra la recuperación de los campos literales, sólo la funcionalidad de conformador/conformador.
import nzae
class ShaperSizerAe(nzae.Ae):
def _runSizer(self):
self._runShaper()
def _runShaper(self):
# GET THE INPUT TYPE.
inputType = self.getInputType(0)
columnName = self.getDataTypeName(inputType)
# HANDLE STRINGS.
if inputType in self.STRING_DATA_TYPES:
size = self.getInputSize(0)
self.addOutputColumnString(columnName, inputType, size)
# HANDLE NUMERICS.
elif inputType in self.NUMERIC_DATA_TYPES:
precision = self.getInputPrecision(0)
scale = self.getInputScale(0)
self.addOutputColumnNumeric(columnName, inputType, precision, scale)
# HANDLE OTHER.
else:
self.addOutputColumn(columnName, inputType)
def _getFunctionResult(self, row):
return row
ShaperSizerAe.run()
virtual
Despliegue el script:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
--template deploy ./shaperSizer.py --version 3Registro
Registre el ejemplo como UDF y UDTF:
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language python64 --version 3 \
--template udf --exe shaperSizer.py --sig "sizer(varchar(ANY))" \
--return "varchar(ANY)"$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language python64 --version 3 \
--template udtf --exe shaperSizer.py --sig "shaper(VARARGS)" \
--return "table(ANY)"En ejecución
Ejecute la consulta en nzsql. Devuelve como salida la entrada dada:
SELECT sizer('test');
SIZER
-------
test
(1 row)
SELECT * FROM TABLE WITH FINAL(shaper('test'));
NATIONAL_VARIABLE
-------------------
test
(1 row)
SELECT * FROM TABLE WITH FINAL(shaper(32.1));
NUMERIC32
-----------
32.1
(1 row)
SELECT * FROM TABLE WITH FINAL(shaper(42));
INT32
-------
42
(1 row)