|
1 | 1 | from databricks.bundles.jobs import ( |
2 | | - ConditionTask, |
3 | 2 | Job, |
4 | | - NotebookTask, |
5 | 3 | Task, |
| 4 | + NotebookTask, |
| 5 | + ConditionTask, |
| 6 | + ConditionTaskOp, |
6 | 7 | TaskDependency, |
7 | 8 | ) |
8 | 9 |
|
9 | | -pydabs_job_conditional_execution = Job( |
10 | | - name="pydabs_job_conditional_execution", |
11 | | - tasks=[ |
12 | | - Task( |
13 | | - task_key="check_data_quality", |
14 | | - notebook_task=NotebookTask(notebook_path="src/check_quality.ipynb"), |
15 | | - ), |
16 | | - Task( |
17 | | - task_key="evaluate_quality", |
18 | | - condition_task=ConditionTask( |
19 | | - left="{{tasks.check_data_quality.values.bad_records}}", |
20 | | - op="GREATER_THAN", |
21 | | - right="100", |
22 | | - ), |
23 | | - depends_on=[TaskDependency(task_key="check_data_quality")], |
24 | | - ), |
25 | | - Task( |
26 | | - task_key="handle_bad_data", |
27 | | - notebook_task=NotebookTask(notebook_path="src/process_bad_data.ipynb"), |
28 | | - depends_on=[TaskDependency(task_key="evaluate_quality", outcome="true")], |
29 | | - ), |
30 | | - Task( |
31 | | - task_key="continue_pipeline", |
32 | | - notebook_task=NotebookTask(notebook_path="src/process_good_data.ipynb"), |
33 | | - depends_on=[TaskDependency(task_key="evaluate_quality", outcome="false")], |
34 | | - ), |
35 | | - ], |
| 10 | +# 1) Producer task: runs a notebook and emits a task value |
| 11 | +check_quality = Task( |
| 12 | + task_key="check_quality", |
| 13 | + notebook_task=NotebookTask(notebook_path="src/branch/check_quality.ipynb"), |
| 14 | +) |
| 15 | + |
| 16 | +# 2) Branch task: evaluates an expression using an upstream task value |
| 17 | +branch = Task( |
| 18 | + task_key="branch", |
| 19 | + condition_task=ConditionTask( |
| 20 | + left="{{tasks.check_quality.values.bad_records}}", |
| 21 | + op=ConditionTaskOp.GREATER_THAN, |
| 22 | + right="100", |
| 23 | + ), |
| 24 | + depends_on=[TaskDependency(task_key="check_quality")], |
| 25 | +) |
| 26 | + |
| 27 | +# 3) Downstream tasks: gated on the condition outcome |
| 28 | +fix_path = Task( |
| 29 | + task_key="fix_path", |
| 30 | + notebook_task=NotebookTask(notebook_path="src/branch/fix_path.ipynb"), |
| 31 | + depends_on=[TaskDependency(task_key="branch", outcome="true")], |
| 32 | +) |
| 33 | + |
| 34 | +skip_path = Task( |
| 35 | + task_key="skip_path", |
| 36 | + notebook_task=NotebookTask(notebook_path="src/branch/skip_path.ipynb"), |
| 37 | + depends_on=[TaskDependency(task_key="branch", outcome="false")], |
| 38 | +) |
| 39 | + |
| 40 | +job = Job( |
| 41 | + name="conditional_execution_example", |
| 42 | + tasks=[check_quality, branch, fix_path, skip_path], |
36 | 43 | ) |
0 commit comments