airflow - 在 Airflow 中使用 SqlSensor,创建一个查询,检查上个月的所有日期是否都在表中
问题描述
这是检查上个月的所有日期是否都在我的表中的正确/快速方法吗?我的雪花表有一个“日期”列,它是“日期”类型:
我正在这样做,但我觉得必须有更好的方法?
SELECT *
FROM dfp.revenue_allocation
WHERE YEAR("date") = '{{ execution_date.year }}'
AND MONTH("date") = '{{ execution_date.month }}'-1
解决方案
为了获得最佳性能,应避免在列上表达:
SELECT *
FROM dfp.revenue_allocation
WHERE "date" >= TRUNC( CAST(? AS DATE) - INTERVAL '1 MONTH', 'MONTH')
AND "date" < TRUNC( CAST(? AS DATE), 'MONTH');
将日期、时间或时间戳截断到指定部分