请问下,DataWorks中MaxCompute shell 节点的调度参数应该怎么配置啊?我理解这样配置之后在shell脚本里$2 可以拿到 $[yyyymmdd-2] 的传值,但是实际上好像不行。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在DataWorks中,MaxCompute Shell节点的调度参数配置与其他类型节点有所不同,尤其是Shell节点对变量的命名和引用方式有特殊限制。以下是详细的配置方法及注意事项:
在Shell节点中,调度参数的变量名不能自定义,必须按照$1
、$2
、$3
...的顺序命名。如果参数数量超过10个,则需要使用${10}
的方式声明变量。
$1
对应第一个参数。$2
对应第二个参数。${10}
对应第十个参数。在调度配置 > 参数区域,通过表达式为参数赋值。多个参数之间用空格分隔,并且参数的取值顺序与定义时的顺序一致。
示例: 如果需要为$1
赋值业务日期(前一天),为$2
赋值定时时间(前一天),可以这样配置:
$bizdate ${yyyymmdd-2}
$1
的值为 $bizdate
,即业务日期(格式为 yyyymmdd
)。$2
的值为 ${yyyymmdd-2}
,即业务日期前两天。在Shell脚本中,直接使用 $1
、$2
等变量名引用对应的参数值。
echo "业务日期前一天: $1"
echo "业务日期前两天: $2"
Shell节点仅支持使用表达式方式为参数赋值,不支持可视化方式。因此,在配置参数时,请确保表达式的语法正确,例如: - 多个参数之间用空格分隔。 - 表达式中不允许出现多余的空格或非法字符。
Shell节点的参数取值严格依赖于定义时的顺序。如果参数顺序错误,可能导致脚本无法正确获取预期值。
$2
可以拿到 $[yyyymmdd-2]
的传值,但实际好像不行”,可能的原因包括:
$[yyyymmdd-2]
应该是第二个参数,但实际配置中可能被放在了其他位置。$[yyyymmdd-2]
的格式是否正确,或者是否存在多余空格。DataWorks支持多种调度参数格式,不同格式的参数取值方式略有差异: - ${yyyymmdd}
:基于业务日期计算。 - $[yyyymmdd]
:基于定时时间计算。 - $bizdate
:系统内置参数,表示业务日期。
请根据实际需求选择合适的格式。
以下是一个完整的配置示例,展示如何在Shell节点中使用调度参数。
在调度配置 > 参数区域,配置如下内容:
$bizdate ${yyyymmdd-2}
#!/bin/bash
# 输出业务日期前一天
echo "业务日期前一天: $1"
# 输出业务日期前两天
echo "业务日期前两天: $2"
假设当前业务日期为 20231001
,则脚本运行结果为:
业务日期前一天: 20230930
业务日期前两天: 20230929
如果Shell脚本中无法获取到预期的参数值,请检查以下内容: 1. 参数顺序:确保 $1
、$2
等变量的顺序与配置一致。 2. 表达式语法:检查调度参数表达式是否符合规范,例如 ${yyyymmdd-2}
是否正确。 3. 任务发布状态:确保任务已成功发布至生产环境,并在运维中心确认调度参数配置无误。
如果参数值不符合预期,可能是调度参数的计算逻辑有问题。例如: - $bizdate
默认为业务日期前一天。 - ${yyyymmdd-2}
表示业务日期前两天。
请根据实际需求调整参数表达式。
通过以上步骤,您可以正确配置MaxCompute Shell节点的调度参数,并在Shell脚本中引用这些参数。如果仍然遇到问题,建议检查参数顺序、表达式语法以及任务发布状态,确保配置无误。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。