云服务器内容精选
-
属性和方法 表1 属性说明 属性 类型 描述 name String 作业名称。 planTime java.util.Date 作业调度计划时间,即周期调度配置的时间,例如每天凌晨1:01调度作业。 startTime java.util.Date 作业执行时间,有可能与planTime同一个时间,也有可能晚于planTime(由于作业引擎繁忙等)。 eventData String 当作业使用事件驱动调度时,从通道获取的消息。 projectId String 当前数据开发模块所处项目ID。 表2 方法说明 方法 描述 示例 String getNodeStatus(String nodeName) 获取指定节点运行状态,成功状态返回success,失败状态返回fail。 例如,判断节点是否运行成功,可以使用如下判断条件,其中test为节点名称: #{(Job.getNodeStatus("test")) == "success" } 获取test节点运行状态。 #{Job.getNodeStatus("test")} String getNodeOutput(String nodeName) 获取指定节点的输出。此方法只能获取前面依赖节点的输出。 获取test节点输出。 #{Job.getNodeOutput("test")} 当前一节点执行无结果时,输出结果为“null”。 当前一节点的输出结果是一个字段时,输出结果形如[["000"]]所示。此时可通过EL表达式分割字符串结果,获取前一节点输出的字段值,但注意输出结果类型为String。需要输出原数据类型时,仍需通过For Each节点及其支持的Loop内嵌对象EL表达式获取。 #{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("前一节点名"),"]")[0],"[")[0],"\\"")[0]} 当前一节点的输出结果是多个(两个及以上)字段时,输出结果形如[["000"],["001"]]所示。此时需要结合For Each节点及其支持的Loop内嵌对象EL表达式如#{Loop.current[0]},循环获取输出结果,详见获取SQL节点的输出结果值。 String getParam(String key) 获取作业参数。 注意此方法只能直接获取当前作业里配置的参数值,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。 这种情况下建议使用表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。 获取参数test的值: #{Job.getParam("test")} String getPlanTime(String pattern) 获取指定pattern的计划时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 获取作业调度计划时间,具体到毫秒: #{Job.getPlanTime("yyyy-MM-dd HH:mm:ss:SSS")} String getYesterday(String pattern) 获取执行pattern的计划时间前一天的时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 获取作业调度计划时间的前一天的时间,具体到日期: #{Job.getYesterday("yyyy-MM-dd HH:mm:ss:SSS")} String getLastHour(String pattern) 获取执行pattern的计划时间前一小时的时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 获取作业调度计划时间前一小时的时间,具体到小时: #{Job.getLastHour("yyyy-MM-dd HH:mm:ss:SSS")} String getRunningData(String nodeName) 获取指定节点运行中记录的数据,当前只支持获取 DLI SQL节点SQL语句运行的作业id。此方法只能获取前面依赖节点的输出。 例如,想要获取DLI节点第3条语句的job ID(DLI节点名为DLI_INSERT_DATA),可以这样使用:#{JSONUtil.path(Job.getRunningData("DLI_INSERT_DATA"),"jobIds[2]")}。 获取指定DLI SQL节点test中第三条语句的job ID: #{JSONUtil.path(Job.getRunningData("test"),"jobIds[2]")} String getInsertJobId(String nodeName) 返回指定DLI SQL或Transform Load节点第一个Insert SQL语句的作业ID,不指定参数nodeName时,获取前面一个节点第一个DLI Insert SQL语句的作业ID,如果无法获取到作业ID,返回null值。 获取DLI SQL节点test中第一个Insert SQL语句的job ID: #{Job.getInsertJobId("test")} String getPreviousWorkday(Integer num, String pattern) 按照指定的pattern返回计划时间前第num个工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取作业调度前五天的工作日的日期。 #{Job.getPreviousWorkday(5, "yyyyMMdd")} String getPreviousNonWorkday(Integer num, String pattern) 按照指定的pattern返回计划时间前第num个非工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取作业调度前一天的非工作日的日期。 #{Job.getPreviousNonWorkday(1, "yyyyMMdd")}
-
调试方法介绍 下面介绍几种EL表达式的调试方法,能够在调试过程中方便地看到替换结果。 后文以#{DateUtil.now()}表达式为例进行介绍。 使用DIS Client节点。 前提:您需要具备DIS通道。 方法:选择DIS Client节点,将EL表达式直接写在要发送的数据中,单击“测试运行”,然后在节点上右键查看日志,日志中会把EL表达式的值打印出来。 使用Kafka Client节点。 前提:您需要具备 MRS 集群,且集群有Kafka组件。 方法:选择Kafka Client节点,将EL表达式直接写在要发送的数据中,单击“测试运行”,然后在节点上右键查看日志,日志中会把EL表达式的值打印出来。 使用Shell节点。 前提:您需要具备E CS 弹性云服务器。 方法:创建一个主机连接,将EL表达式直接通过echo打印出来,单击“测试运行”之后查看日志,日志中会打印出EL表达式的值。 使用Create OBS节点。 如果上述方法均不可用,则可以通过Create OBS去创建一个OBS目录,目录名称就是EL表达式的值,单击“测试运行”后,再去OBS界面查看创建出来的目录名称。
-
举例 在Rest Client节点的参数“URL参数”中使用EL表达式“tableName=#{JSONUtil.path(Job.getNodeOutput("get_cluster"),"tables[0].table_name")}”,如图1所示。 表达式说明如下: 获取作业中“get_cluster”节点的执行结果(“Job.getNodeOutput("get_cluster")”),执行结果是一个JSON字符串。 通过JSON路径(“tables[0].table_name”),获取JSON字符串中字段的值。 图1 表达式示例 EL表达式在数据开发过程中被广泛应用,您可以参考最佳实践查看更多应用EL表达式的进阶实践。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格