使用NZFunApply调用Netezza表函数时NZPYIDA数据库检索错误求助
解决Netezza NZFunApply报错:ResolveCatalog: error retrieving database 'NZPYIDA'
报错原因
NZPYIDA是nzpyida的AE(分析引擎)模块默认使用的数据库,用于存储临时UDF、执行元数据等对象。你的环境中不存在该数据库,或当前用户无访问权限,导致触发报错。
解决建议
创建NZPYIDA数据库
使用具备数据库创建权限的账号(如admin)在Netezza控制台执行SQL:CREATE DATABASE NZPYIDA;创建完成后重新运行代码即可。
指定现有数据库作为目标库
修改NZFunApply的初始化代码,添加target_db参数,指定你有权限访问的现有数据库(比如代码中使用的weather库):nz_apply = NZFunApply(df=idadf, code_str=code_str_apply, fun_name='apply_fun', output_table="temp_conversion", output_signature=output_signature, merge_output_with_df=True, target_db='weather')验证INZA权限与配置
确认当前用户(admin)对INZA相关数据库有读写权限,同时检查INZA分析引擎服务是否正常运行,确保Python UDF执行环境配置正确。
额外优化建议
代码中通过列索引(x[3]、x[24])取值易受表结构变化影响,建议改用列名取值,提升代码稳定性:
def apply_fun(self, x): from math import sqrt max_temp = x['MAX_TEMP'] id = x['ID'] fahren_max_temp = (max_temp*1.8)+32 row = [id, max_temp, fahren_max_temp] self.output(row)
内容的提问来源于stack exchange,提问作者Sarath M
相关产品推荐
相关产品推荐

