Параметры обработки, переданные в активность SQL в конвейере данных AWS - PullRequest
0 голосов
/ 22 января 2019

Я работаю с конвейером данных 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 Ответ

0 голосов
/ 22 февраля 2019

Вы можете использовать функции даты 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))
...