SELECT *
FROM table1 t1
WHERE t1.b_c IN ('A', 'B') AND t1.d_id IN ('2', '3')
AND ( (t1.a_d >= '1-May-2018'AND t1.a_d <= '15-May-2018')
OR (t1.a_r >= '1-May-2018' AND t1.a_r <= '15-May-2018'))
AND ( t1.a_m = 'AC'
AND t1.s = 'SW'
AND t1.c_m IN ('DM', 'SW')
AND t1.d_m IN ('DM', 'SW')
OR ((t1.a_m = 'NO' AND t1.s = 'SW')
AND ( (t1.d_m = 'DM' AND t1.c_m = 'DM')
OR (t1.d_m = 'SW' AND t1.c_m = 'DM')
OR NOT (t1.d_m = 'DM' AND t1.c_m = 'SW')
OR (t1.d_m = 'SW' AND t1.c_m = 'SW'))))
AND ( (t1.a_m,t1.s,t1.d_m,t1.c_m,t1.d_s) NOT IN
( ('NO', 'SW', 'SW', 'DM', 'X001'),
('NO', 'SW', 'SW', 'DM', 'XXXX')))
-- added this:
AND NOT (t1.dept_id IN ('20', '35')
AND t1.a_m IN ('AC', 'NO')
AND t1.s = 'SW'
AND t1.c_m = 'DM'
AND t1.d_m IN ('DM', 'SW')
AND ((t1.o_b = 'X001' AND t1.s_s = 'X001' ) OR (t1.o_b = 'XXXX' AND t1.s_s = 'XXXX'))
AND REGEXP_LIKE (t1.r_no, '^(20PS|35RE)')))
;
的{{3}}许多airflow example dags设置了动态开始日期,如airflow.utils.dates.days_ago(2)
或datetime.utcnow()
。但是,docs建议针对动态开始日期:
我们建议不要将动态值用作start_date,尤其是datetime.now(),因为它可能非常混乱。一旦周期结束,任务就会被触发,理论上@hourly DAG永远不会达到一小时之后,因为now()会一直移动。
开始日期与手动触发的dags无关吗?这里的最佳做法是什么?
答案 0 :(得分:4)
我总是尝试将手动触发的DAGS的开始日期设置为我第一次运行它的那一天,以便我知道DAG何时会在未来首次运行以供参考。
答案 1 :(得分:0)
如果您有schedule_interval=None
我相信start_date
无关紧要,因为气流不会尝试执行任何回填。只要把它设置成任何东西,即使它是动态的也不应该引起麻烦。
答案 2 :(得分:0)
我最终只是将start_date
设置为1月1日(过去很远)到1970年,以使Airflow从不抱怨执行日期早于开始日期。