방명록
- [Airflow] 스케줄 시간 (Crontab) Query 파싱2023년 05월 03일 17시 31분 50초에 업로드 된 글입니다.작성자: DE 군고구마반응형
안녕하세요.
해당 글을 MySQL 문법을 사용 하였습니다.
지난번에 Query를 통해서 Airflow의 스케줄 시간을 파싱 하는 글을 작성하였는데요. ( 바로가기 )
이번에는 파싱하여 일반 사용자가 보기 편하게 나타내는 Query를 만들었습니다.
위와 같이 Crontab시간을 사용자가 보기 편한 형태로 보여 주도록 하였습니다.
아무래도 규치적을 주고 파싱을 하다 보니 영어 표현과 어순이 조금 어색하거나 안 맞는 경우가 있습니다.
이 부분은 감안해 주세요. (도저히.. 어떻게 바꿀지 모르겠습니다.)
SELECT schedule_interval ,CASE WHEN schedule_interval = '"@once"' THEN 'Schedule once and only once' WHEN schedule_interval = '"@daily"' THEN 'Run once a day at midnight' WHEN schedule_interval = '"None"' THEN 'Don’t schedule, use for exclusively “externally triggered” DAGs' WHEN schedule_interval = '"@hourly"' THEN 'Run once an hour at the beginning of the hour' WHEN schedule_interval = '"@weekly"' THEN 'Run once a week at midnight on Sunday morning' WHEN schedule_interval = '"@monthly"' THEN 'Run once a month at midnight of the first day of the month' WHEN schedule_interval = '"@yearly"' THEN 'Run once a year at midnight of January 1' ELSE CONCAT('Run at ' ,CASE WHEN `hour` = '*' THEN ' Every hour ' WHEN `hour` LIKE '%/%' THEN CONCAT(' every ',REPLACE(`hour`,'*/',''),' hour ') ELSE CONCAT(`hour`,' hour ')END ,CASE WHEN `minute` = '*' THEN ' every minute ' WHEN `minute` LIKE '%/%' THEN CONCAT(' every ',REPLACE(`minute`,'*/',''),' minute ') ELSE CONCAT(`minute`,' minute ')END ,CASE WHEN `day_of_week` = '*' THEN ' every day ' ELSE CONCAT(' from ',`day_of_week`)END ,CASE WHEN `month` = '*' THEN '' ELSE CONCAT(`month`,', month ')END ,CASE WHEN `day` = '*' THEN '' ELSE CONCAT(`day`,' th ')END ) END AS schedule_interval_parse FROM ( SELECT SUBSTRING_INDEX(REPLACE (schedule_interval,'"',''),' ',1)AS `minute` ,SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE (schedule_interval,'"',''),' ',2),' ',-1)AS `hour` ,SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE (schedule_interval,'"',''),' ',3),' ',-1)AS `day` ,SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE (schedule_interval,'"',''),' ',4),' ',-1)AS `month` ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE (schedule_interval,'"',''),' ',5),' ',-1),0,'Sunday'),1,'Monday'),2,'Tuesday'),3,'Wednesday'),4,'Thursday'),5,'Friday'),6,'Saturday') AS `day_of_week` ,schedule_interval FROM ( SELECT '"48 * * * *"' AS schedule_interval UNION ALL SELECT '"30 */4 * * *"' UNION ALL SELECT '"@once"' UNION ALL SELECT '"15 1 * * *"' UNION ALL SELECT '"30 1 * * 1"' UNION ALL SELECT '"30 5 * 3 1"' )AS T1 )AS T2
위의 Query를 이용해서 누구나 쉽게 볼 수 있는 Airflow의 시간표를 만들 수 있습니다.
감사합니다.
반응형'Data pipeline > Airflow' 카테고리의 다른 글
[Airflow] oracle connection 등록 후 python으로 부르기 (0) 2023.07.20 docker기반 Airflow 2.0 설치 (2) 2021.02.23 airflow dag의 task를 실행하고 동작하지 않는 현상 (0) 2020.11.03 airflow CPU가 높게 점유되는 현상 (0) 2020.08.11 Airflow 실패여부 slack알람으로 받기 (python) (0) 2019.12.04 다음글이 없습니다.이전글이 없습니다.댓글