首页 > 解决方案 > 在 Airflow 中使用 SqlSensor,创建一个查询,检查上个月的所有日期是否都在表中

问题描述

这是检查上个月的所有日期是否都在我的表中的正确/快速方法吗?我的雪花表有一个“日期”列,它是“日期”类型:

我正在这样做,但我觉得必须有更好的方法?

SELECT *
FROM dfp.revenue_allocation
WHERE YEAR("date") = '{{ execution_date.year }}'
AND MONTH("date") = '{{ execution_date.month }}'-1

标签: airflowsnowflake-cloud-data-platform

解决方案


为了获得最佳性能,应避免在列上表达:

SELECT *
FROM dfp.revenue_allocation
WHERE "date" >= TRUNC( CAST(? AS DATE) - INTERVAL '1 MONTH', 'MONTH')
  AND "date" < TRUNC( CAST(? AS DATE), 'MONTH');

TRUNC

将日期、时间或时间戳截断到指定部分


推荐阅读