开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute自定义函数可以声明参数传入的字段为null么?

大数据计算MaxCompute目前我们创建完sql自定义函数之后 就看不到列表 只能通过查询查到,还有一个问题是 自定义函数可以声明参数传入的字段为null么? 就是如何适配字段行不存在的情况
ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: java.lang.NullPointerException

展开
收起
真的很搞笑 2023-11-05 16:15:42 98 0
3 条回答
写回答
取消 提交回答
  • 查看函数列表:https://help.aliyun.com/zh/maxcompute/user-guide/function-operations#section-sjm-4v7-lft

    目前看文档没有注明入参为null该如何写。直接报错空指针,那我理解是不行。参数不能为空,需要去掉为空的情况再进行处理,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-11-07 23:43:20
    赞同 展开评论 打赏
  • 在MaxCompute中,创建自定义函数后,可以通过查询语句来查看列表。如果需要适配字段行不存在的情况,可以在自定义函数中使用COALESCE函数将字段值替换为默认值。

    关于您提到的NullPointerException异常,这可能是由于在使用自定义函数时,传入的参数值为null导致的。为了解决这个问题,您可以在自定义函数中添加对参数值的检查,并在参数值为null时返回一个默认值。例如:

    CREATE FUNCTION my_custom_function(input_field STRING) RETURNS STRING
    BEGIN
      IF input_field IS NULL THEN
        RETURN 'default_value';
      ELSE
        -- 在这里处理输入字段的值
        RETURN input_field;
      END IF;
    END;
    

    这样,当传入的参数值为null时,函数将返回一个默认值,而不是抛出异常。

    2023-11-06 10:58:38
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在MaxCompute中,您可以通过以下方法查看已创建的自定义函数:

    1. 在控制台命令行中执行show functions;命令,以查看当前工作空间中的所有函数。
    2. 使用ODPS Shell或ODPS SDK,通过ODPS.get_functions()方法获取当前工作空间中的函数列表。

    在MaxCompute中,自定义函数可以声明参数为null,并且支持行不存在的情况。例如,假设您有一个名为func的自定义函数,可以像下面这样声明:

    create function func(input string) returns string using 'python' AS $$
    

    def main(args):
    return args[0] if len(args) > 0 else None

    
    $$ language python;
    

    在这个例子中,如果input参数不存在,则函数返回None。
    如果您的自定义函数在运行时发生NullPointerException,请检查函数的实现是否正确。如果函数中存在空指针引用,MaxCompute将会抛出NullPointerException。您可以在ODPS控制台的错误日志中查看堆栈跟踪信息,以确定发生异常的位置和原因。

    2023-11-05 16:22:47
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载