Python语言成型器和定型器

本示例使用以下文件名:"shaperSizer.py

代码

本示例中的代码同时演示了整形器和调整器,它们使用相同的代码,执行基本相同的任务。 代码会将给定的输入作为输出返回。 它没有演示检索字段,只是演示了整形器/调整器功能。
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()

部署

部署脚本:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
--template deploy ./shaperSizer.py --version 3

注册

将示例注册为 UDF 和 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)"

正在运行

在 nzsql 中运行查询。 它将给定的输入作为输出返回:
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)