用户可以在 SQL 作业中的库表管理使用变量。SQL 作业的临时表和元数据表都可以通过表变量替换对使用变量进行替换。
表变量语法:
${变量名称}
${变量名称:默认值}
${变量名称}:默认值
注意
变量名称分隔符用下划线 _ 。推荐使用${变量名称}这种语法。
新建变量
自定义值
在变量管理功能界面中,选择右上角的新建,在弹窗中填写变量信息,然后单击确定。
自定义凭据
当作业中需要使用数据库账号密码等敏感信息时,为避免其以明文形式出现在代码或变量定义中,可使用自定义凭据功能。具体流程为:先创建自定义凭据,再在创建变量时选择已有的自定义凭据进行关联;作业开发时直接引用该变量即可。这样便可有效避免敏感信息明文暴露的问题。
说明:
凭据管理系统(SSM)为独立的产品服务,使用自定义凭据将产生相应费用,详见凭据管理系统的计费概述。 SSM 地域:默认为用户当前所在地域。若目标凭据不在当前地域,可重新选择其所属地域。
凭据名称:在凭据管理系统(SSM)中已定义的凭据名称。
凭据版本:凭据支持多版本管理,请根据实际需求选择对应版本。
注意:
自定义凭据一旦被作业引用,请勿随意删除。若删除仍在使用中的凭据,将导致关联作业运行失败。如需删除,请先确认该凭据未被任何作业引用。
数据表中引用全局变量
在库表引用功能界面中,选择右上角的新建 > 数据表,在弹窗中选择 Catalog 和 Database,然后单击下一步,进入选择创建元表的方式,可使用模板、自定义、云资源。如果选择自定义或者云资源,则需输入相应的连接信息。在 WITH 参数中设置表变量并点击完成,表变量命名规则参考 库表管理。
引用多个全局变量
注意:
引用多个变量,可以使用${变量名称}或${变量名称:默认值}样式进行拼接。
SQL 作业引用全局变量
在 SQL 作业中可以直接引用全局变量,单击表变量替换,右侧会显示操作菜单,单击引用全局变量,最后单击提交。
系统变量
将以下变量替换为真实的 job_id 和 cluster_id
${SYSTEM_VARIABLE_JOB_SERIAL_ID}:xx
${SYSTEM_VARIABLE_CLUSTER_SERIAL_ID}:xx
全局 SQL 变量
注意
该功能当前为白名单开放,如需使用请 联系我们 开通。 全局 SQL 变量与表变量不同,表变量仅作用于数据表的 WITH 参数中,而全局 SQL 变量可以在 SQL 编辑器中的任意位置使用,包括 DDL 语句、DML 语句中的字段名、表名、参数值等。
变量语法
与表变量一致:
${变量名称}
${变量名称:默认值}
注意
变量名称分隔符用下划线 _ 。推荐使用${变量名称}这种语法。
在 SQL 中引用
在 SQL 编辑器中,直接使用 ${变量名称} 语法引用。变量会在作业保存/发布时被替换为实际值。
SET pipeline.operator-chaining = ${chaining_enabled};
CREATE TABLE source (
id INT,
name STRING
) WITH (
'connector' = 'datagen',
'rows-per-second' = '${rows_per_second}'
);
INSERT INTO sink SELECT * FROM source;
动态表达式变量
全局 SQL 变量支持动态表达式,变量值会在作业保存/发布时动态计算。
CREATE TABLE sink (
id INT,
dt STRING
) WITH (
'connector' = 'filesystem',
'path' = '/data/${dateUtil.today()}'
);
INSERT INTO sink SELECT id, '${IdUtil.simpleUUID()}' FROM source;
|
dateUtil
| cn.hutool.core.date.DateUtil
|
idUtil
| cn.hutool.core.util.IdUtil
|
randomUtil
| cn.hutool.core.util.RandomUtil
|
strUtil
| cn.hutool.core.util.StrUtil
|
注意:
仅上述 4 个工具类前缀在白名单中,使用其他前缀的表达式会被跳过,保持原样输出。