This is an automated email from the ASF dual-hosted git repository.

jedcunningham pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 056b8cf396 Document built in Timetables (#23099)
056b8cf396 is described below

commit 056b8cf3969137534f6f78b02166b71dd1b02ac6
Author: Collin McNulty <[email protected]>
AuthorDate: Thu Jun 30 13:56:40 2022 -0500

    Document built in Timetables (#23099)
---
 docs/apache-airflow/concepts/timetable.rst | 61 ++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/docs/apache-airflow/concepts/timetable.rst 
b/docs/apache-airflow/concepts/timetable.rst
index 9898204e99..986213df81 100644
--- a/docs/apache-airflow/concepts/timetable.rst
+++ b/docs/apache-airflow/concepts/timetable.rst
@@ -48,3 +48,64 @@ the schedule. Some examples are:
 As such, Airflow allows for custom timetables to be written in plugins and 
used by
 DAGs. An example demonstrating a custom timetable can be found in the
 :doc:`/howto/timetable` how-to guide.
+
+Built In Timetables
+-------------------
+
+Airflow comes with several common timetables built in to cover the most common 
use cases. Additional timetables
+may be available in plugins.
+
+CronDataIntervalTimetable
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Set schedule based on a cron expression. Can be selected by providing a string 
that is a valid
+cron expression to the ``schedule_interval`` parameter of a DAG as described 
in the :doc:`/concepts/dags` documentation.
+
+.. code-block:: python
+
+    @dag(schedule_interval="0 1 * * 3")  # At 01:00 on Wednesday.
+    def example_dag():
+        pass
+
+DeltaDataIntervalTimetable
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Schedules data intervals with a time delta. Can be selected by providing a
+:class:`datetime.timedelta` or ``dateutil.relativedelta.relativedelta`` to the 
``schedule_interval`` parameter of a DAG.
+
+.. code-block:: python
+
+    @dag(schedule_interval=datetime.timedelta(minutes=30))
+    def example_dag():
+        pass
+
+EventsTimetable
+^^^^^^^^^^^^^^^
+
+Simply pass a list of ``datetime``\s for the DAG to run after. Useful for 
timing based on sporting
+events, planned communication campaigns, and other schedules that are 
arbitrary and irregular but predictable.
+
+The list of events must be finite and of reasonable size as it must be loaded 
every time the DAG is parsed. Optionally,
+the ``restrict_to_events`` flag can be used to force manual runs of the DAG to 
use the time of the most recent (or very
+first) event for the data interval, otherwise manual runs will run with a 
``data_interval_start`` and
+``data_interval_end`` equal to the time at which the manual run was begun. You 
can also name the set of events using the
+``description`` parameter, which will be displayed in the Airflow UI.
+
+.. code-block:: python
+
+    from airflow.timetables.events import EventsTimetable
+
+
+    @dag(
+        timetable=EventsTimetable(
+            event_dates=[
+                pendulum.datetime(2022, 4, 5, 8, 27, tz="America/Chicago"),
+                pendulum.datetime(2022, 4, 17, 8, 27, tz="America/Chicago"),
+                pendulum.datetime(2022, 4, 22, 20, 50, tz="America/Chicago"),
+            ],
+            description="My Team's Baseball Games",
+            restrict_to_events=False,
+        ),
+    )
+    def example_dag():
+        pass

Reply via email to