
# EL表达式使用示例
通过本示例，用户可以了解数据开发模块EL表达式的如下应用：
- 如何在数据开发模块的SQL脚本中使用变量？
- 作业如何传递参数给SQL脚本变量？
- 在参数中如何使用EL表达式？
#### 背景信息
使用数据开发模块的作业编排和作业调度功能，每日通过统计交易明细表，生成日交易统计报表。
本示例涉及的数据表如下所示：
- trade_log：记录每一笔交易数据。
- trade_report：根据trade_log统计产生，记录每日交易汇总。
 
#### 前提条件
- 已建立DLI的数据连接，以"dli_demo"数据连接为例。 如未建立，请参考[配置DataArts Studio数据连接参数](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0009.html)进行操作。
  
- 已在DLI中创建数据库，以"dli_db"数据库为例。 如未创建，请参考[新建数据库](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0405.html)进行操作。
  
- 已在"dli_db"数据库中创建数据表trade_log和trade_report。 如未创建，请参考[新建数据表](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0416.html)进行操作。
  
 
#### 操作步骤
1. 新建和开发SQL脚本。
   
   1. 在数据开发模块控制台的左侧导航栏，进入"数据开发 \> 脚本开发"，选择"新建DLI SQL脚本"。
   
   2. 进入SQL脚本开发页面，在脚本属性栏选择"数据连接"、"数据库"、"资源队列"。
      图1脚本属性   
      ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001488195622.png "点击放大")
      
      
   
   3. 在脚本编辑器中输入以下SQL语句。
      
      ```
      INSERT OVERWRITE TABLE trade_report
      SELECT
        sum(trade_count),
        '${yesterday}'
      FROM
        trade_log
      where
        date_format(trade_time, 'yyyy-MM-dd') = '${yesterday}'
      ```
      
   
   4. 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001148602683.png)，将脚本的名称设置为"generate_trade_report"。
   
   
   
   
2. 新建和开发作业。 
   1. 在数据开发模块控制台的左侧导航栏，进入"数据开发 \> 作业开发"，右键单击目录，选择"新建作业"，新建一个名称为"job"的批处理作业。
   
   2. 进入作业开发页面，将DLI SQL节点拖至画布中，单击其图标并配置"节点属性"。
      图2节点属性   
      ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002312695949.png "点击放大")
      关键属性说明：
      - SQL脚本：关联[1]中开发完成的SQL脚本"generate_trade_report"。
      
      - 数据库名称：自动填写SQL脚本"generate_trade_report"中选择的数据库。
      
      - 队列名称：自动填写SQL脚本"generate_trade_report"中选择的资源队列。
      
      - 脚本参数：显示SQL脚本"generate_trade_report"中的参数"yesterday"，输入以下EL表达式作为其参数值。
        ```
        #{Job.getYesterday("yyyy-MM-dd")}
        ```
        EL表达式说明：Job为作业对象，通过getYesterday方法获取作业计划执行时间前一天的时间，时间格式为yyyy-MM-dd。
        假设作业计划执行时间为2018/9/26 01:00:00，这个表达式计算结果是2018-09-25，该计算结果将替换[SQL脚本]中的${yesterday}参数。替换后的SQL内容如下：
        ```
        INSERT OVERWRITE TABLE trade_report
        SELECT
          sum(trade_count),
          '2018-09-25'
        FROM
          trade_log
        where
          date_format(trade_time, 'yyyy-MM-dd') = '2018-09-25'
        ```
        
       
   
   3. 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001102082722.png)，测试运行作业。
   
   4. 作业测试无问题后，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001148602683.png)，保存作业配置。
   
   
   
   
 
#### 更多案例
EL表达式在数据开发过程中被广泛应用，您可以参考[最佳实践](https://support.huaweicloud.com/bestpractice-dataartsstudio/dataartsstudio_05_0100.html)查看更多应用EL表达式的进阶实践。
