Assuming you mean running all in one process — a common use-case is to break Hamilton DAGs that answer differnt questions across multiple tasks.
So, “driver chaining” (wiring one DAG from the output of another) is something we want to do — I think this is a valuable case/is on our roadmap. That said, I think that we have a few good solutions for the time-bing:
1. Placing your graph in modules, and combining modules dynamically using a driver. They can often depend on each other, although you want your modules to be a DAG as well as your functions. The cool thing is you can use modules for (a) different discrete DAG components and (b) different implementations of subcomponents of DAGs, allowing a pretty flexible combination.
2. Calling one driver then passing the results of that (and other) to another. While we’d like to officially sum/wire together two drivers, this is a perfectly reasonable way of doing it. You lose lineage, but gain flexibility.
3.
@subdag
allows you to utilize one subcomponent (set of functions, modules, etc…) in another part of the DAG. While this isn’t as dynamic as you might want, its good if you want it set in stone
You can also use overrides/set your variables you query to just get specific components, and have it all part of one DAG.
My guess is modules is what you need, but you run into the problem of global namespace, which subdag (and eventually driver chaining) should help with.
This is a pretty broad overview — any chance you have a quick pseudocode example to illustrate what you’re trying to do? Might help ground it more.