在 Airflow 中使用 SqlSensor,创建一个查询来检查上个月的所有日期是否都在 table

using SqlSensor in Airflow, create a query that checks if all days from previous month are in a table

这会是一种 correct/fast 检查上个月的所有日期是否都在我的 table 中的方法吗?我的 Snowflake table 有一个 'date' 列是 'date' 类型:

我正在这样做,但我觉得一定有更好的方法吗?

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');

TRUNC

Truncates a date, time, or timestamp to the specified part