Параметры обработки, переданные в активность SQL в конвейере данных AWS

Я работаю с конвейером данных 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, я не понимаю, как я буду достигать (1), (2) и (3) из RUN_DATE.

Таким образом, если RUN_DATE=20190101, то значение в (1) должно быть "20181231", значение в (2) должно быть "2018-12-01" и (3) должно быть "2018-12-31" .

1 ответ

Вы можете использовать функции даты HIVE в вашем SQL, чтобы получить желаемый результат:

  1. Прошлый день: date_sub(RUN_DATE,1)
  2. Дата начала предыдущего месяца: date_add(last_day(add_months(RUN_DATE, -2)),1)
  3. Дата окончания предыдущего месяца: last_day(add_months(RUN_DATE, -1))
Другие вопросы по тегам