全局变量可减少工作流中重复参数的配置,常用于在线工作流和DataWorks离线调度工作流。在线工作流中,全局变量让多个组件共享同一参数;DataWorks离线调度中,全局变量用于替换定时调度参数,提升工作流的灵活性和效率。
使用方法
配置全局变量。
进入已创建的工作流,单击画布空白处,在界面右侧新建全局变量。
全局变量的引用方式为
${变量名}。变量名为1~20个字符,必须以字母开头,只能包含字母、下划线和数字。全局变量用于离线调度时,需在离线调度中配置同名变量;此处填写的变量值仅用于在线运行实验,离线调度时会被同名调度参数的值替换。在使用全局变量处输入
${变量名},即可引用该变量。
使用示例1:在线工作流使用全局变量
本示例设置全局变量para1,将表中的列名status更改为ifHealth,并在SQL脚本中引用该变量。
本示例以预置模板“心脏病预测案例”创建工作流。创建完成后,仅保留前两个节点,删除其余节点。
单击画布空白处,在界面右侧新建全局变量。
配置的全局变量名为
para1,值为ifHealth。使用全局变量。
修改SQL脚本,在需要使用全局变量的位置填入
${para1},即可引用该变量。在SQL脚本-1的SQL编辑器中,SELECT语句末尾使用
${para1}作为输出列别名,FROM子句使用${t1}引用输入源读数据表-1。同时勾选是否由系统添加Create Table语句,此时最后一句必须为SELECT语句。运行工作流。
运行结束后,右击组件SQL脚本,选择查看数据 > SQL脚本的输出,可以看到列名
status已改为ifHealth。
使用示例2:DataWorks离线调度工作流时使用全局变量
本示例设置全局变量gDate,将定时调度的工作流与日期关联,然后在DataWorks上设置同名调度参数。
创建测试数据表。
本示例在MaxCompute控制台上创建一个名为dwtest的表(详见下表)。具体操作请参见SQL参考。
dwtest表包含四列:
t1(数值,示例值1.0、0.0、1.2、0.1)、t2(数值,示例值1.1、1.0、0.0、0.1)、label(字符串,示例值A、B、C、D、E、F)、ds(日期分区,示例值20190519、20190520),共10行测试数据。创建工作流并配置全局变量。
单击画布空白处,在界面右侧新建全局变量
gDate。变量值设置为
20190520。配置工作流组件。

读数据表:将表名配置为上一步创建的dwtest表。
SQL脚本:在SQL脚本中使用上一步配置的全局变量
gDate。select * from ${t1} where ds=${gDate}
运行工作流。
运行结束后,右击组件SQL脚本,选择查看数据 > SQL脚本的输出,可以看到按全局变量gDate查询出的数据。
查询结果中,ds列的值为
20190520,即全局变量gDate对应的分区日期值,说明全局变量已成功传入。单击画布左上方的周期性调度,再单击新建调度节点。页面跳转到DataWorks后,在新建节点对话框填写节点名称,单击确认。
选择PAI Designer实验,然后单击页面右侧的调度配置。具体配置详情请参见节点调度配置。
本示例配置如下,其余保持默认配置:
调度参数:新增同名调度参数
gDate,值为$bizdate。时间属性:重跑属性配置为运行成功或失败后皆可重跑。
调度依赖:上游节点使用工作空间根节点。
单击工具栏中的
和
图标,按界面提示保存并提交节点。单击页面上方的运维中心,查看机器学习任务的运行情况和操作日志。
您也可以执行补数据、工作流试跑等操作。详情请参见管理周期任务。