在odps脚本模式下执行: function myadd(@a BIGINT) as (select @a + 1); select myadd(key) from values (1) as t (key); 很可惜失败了,请问这个怎么解决?
根据您提供的信息,我猜测您是在阿里云MaxCompute上运行ODPS脚本时遇到了问题。如果您在ODPS脚本模式下执行以下命令:
function myadd(@a BIGINT) as (select @a + 1); select myadd(key) from values (1) as t (key); 会出现"SyntaxError: Unknown keyword 'function'"错误提示。这是因为在ODPS脚本中,不支持使用function和as来定义UDF,需要使用CREATE FUNCTION语句来创建UDF函数。
正确的语法应该是:
-- 创建UDF函数 CREATE FUNCTION myadd AS 'com.aliyun.odps.examples.udf.MyAdd' USING JAR 'xxx.jar';
-- 执行UDF函数 SELECT myadd(key) FROM (VALUES (1)) AS T(key); 其中,'com.aliyun.odps.examples.udf.MyAdd'为实现MyAdd函数的Java类名,'xxx.jar'为包含Java类的Jar文件路径。
注意:如果您是在ODPS Studio或者其他交互式环境下执行SQL语句,可以使用function和as来定义UDF函数,因为这些环境会对SQL语句进行解释和转换。
是在odps script节点执行的吗,可以查一下maxcompute相关内容。此答案整理自钉群“DataWorks交流群(答疑@机器人)”
楼主你好,根据你的描述,字面意思两个输入表的分区对不上。实际上可能是其中一个表没有数据、找不到分区,常见于多表join传递的情况。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。