Ответ
Logical Date (ранее назывался execution_date) — это центральное понятие в Airflow, представляющее логическую дату и время, для которых выполняется DAG Run. Это НЕ фактическое время запуска задачи.
Ключевые моменты:
- Это точка на временной шкале данных, которые задача должна обработать. Например, для ежедневного DAG, запущенного 10 января для обработки данных за 9 января,
logical_dateбудет2024-01-09. - Используется для шаблонизации через макросы (например,
{{ ds }},{{ logical_date }}). - Позволяет выполнять backfill (перезапуск) за прошлые периоды, сохраняя контекст обработки корректных данных.
Пример в коде задачи:
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime
def process_data(**context):
# logical_date доступен в контексте выполнения
data_interval_end = context["logical_date"]
print(f"Обрабатываю данные за период, заканчивающийся: {data_interval_end}")
# Например, загружаем файл с именем data_2024-01-09.csv
with DAG('my_dag', start_date=datetime(2024, 1, 1), schedule='@daily') as dag:
run_task = PythonOperator(
task_id='process',
python_callable=process_data
)