我正在使用 AWS 数据管道。在这种情况下,我将几个参数从管道定义传递到 sql 文件,如下所示:
s3://reporting/preprocess.sql,-d,RUN_DATE=#{@scheduledStartTime.format('YYYYMMdd')}"
我的 sql 文件如下所示:
CREATE EXTERNAL TABLE RESULT (
STUDENT_ID STRING,
REMARKS STRING,
EXAM_DATE STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE LOCATION 's3://result/data/run_date=${previous day of RUN_DATE}'; <----(1)
...
insert into temp
select a.roll_number, remarks
from student a inner join result b
on a.student_id = b.student_id
where exam_date>='<start date of previous month of RUN_DATE>' <---- (2)
and exam_date<='<end date of previous month of RUN_DATE>';<---- (3)
在上面的 sql 中,我不知道如何从 RUN_DATE 实现 (1)、(2) 和 (3)。
所以如果 RUN_DATE=20190101,那么 (1) 中的值应该是 "20181231",(2) 中的值应该是 "2018-12-01" 并且 (3) 应该是 "2018-12-31" 。