This functionality already exists (unless I misunderstand your ask).
It is possible to re-run a child pipeline without re-running the parent pipeline.
It is possible to re-run a pipeline from a point of failure.
Here is how I tested:
- Created a new blank factory without git (easier to test that way)
- Created a linked service and dataset which pointed to a missing blob
- Created child pipeline which does a lookup on that missing blob. I expect it to fail.
- Created a parent pipeline which calls the child pipeline. Nothing special.
- Published it all and then "trigger now" the parent pipeline.
- Upload the missing blob to storage.
- Go to Monitoring tab "Pipeline Runs" , not "Trigger Runs"
- See the parent pipeline and the failed child pipeline run.
- Click the rerun button on the failed child pipeline run.
- Refresh and see the child pipeline now succeeded. The parent pipeline did not re-run , only the child.
Now modify and test the re-run from point of failure:
- Remove the blob so it is missing again.
- In the parent pipeline, add a copy activity before the execute pipeline activity. Connect by on-success dependency.
- In this copy activity, copy some convenient delimited text blob. In the source options, use the 'Additional Columns' to add new column "runID" with value (edit for dynamic expression)
@pipeline().RunId
This lets us track whether it was writted by a first run or a re-run. In the sink options, use the "File extension" feature to appendbefore.txt
to the file name. - Duplicate the copy activity, and place the new one after the execute pipeline activity. Connect them by a green on-success dependency. Change the sink option File extension to `after.txt'.
- Set the execute pipeline activity to use the "wait on completion" flag.
- Publish and "Trigger Now".
- Go to the Monitoring "Pipeline Runs" and find the failed parent pipeline. Click it and see the details. Note there is a "Rerun from failed activity" button.
- Re-Upload that missing blob so the child pipeline can find it again.
- Click the "Rerun from failed activity" button. Refresh and wait to complete.
- Open your storage and download / look inside the 2 new files. Match the pipeline run IDs against those in the Monitoring Pipeline Runs. You may need to switch the filter from "Runs: Latest runs" to "Runs: Including reruns". This will prove the 'after' file was written in the re-run while the 'before' file was written in the original run.