在SQL语句中设置参数
如果我们每天早上只需要导入前一天的数据,这也就意味着我们需要在不同的时间执行不同的SQL语句来获取数据。那么如何来生成这样的动态SQL语句呢?这里,我们就用到“自定义字段”的设置。
在“管理”页面,我们可以找到“自定义字段”列表。默认情况下,我们预设置了两个自定义参数:TODATDATE和YESTERDAY_DATE。
比如今天是 2017年10月16日,那么这两个参数的值将会被自动计算,
- today_date : 2017-10-16
- yesterday_date : 2017-10-15
那么如果在定义数据集更新计划时, SQL被配置为:
select customer_id, max(customer_name), sum(sales)
from sales_orders
where order_date = '${yesterday_date}'
group by customer_id
则该SQL被执行时,${yesterday_date} 将会被替换为 2017-10-15。
当然,日期的格式也可以定制。比如,公司的数据库中是用的类似于 “20171017”的格式来存储的日期,那么我们可以添加一个新的自定义参数为:
YESTERDAY_DATE_SHORT: new org.joda.time.LocalDate().minusDays(1).toString('yyyyMMdd')
那么这个参数的格式就对应 “20170313”这种格式。 相比之前的设置,唯一修改的地方是把日期的格式化string由 ‘yyyy-MM-dd’ 替换为 ‘yyyyMMdd’。