Refactor dagster-dbt integration / add dbt cli resource
Refactored / reworked a lot of the cli side of the dagster-dbt integration. List of changes:
- changed output data types so that we aren't passing around untyped dictionaries as much and so that we can have more consistent return types
- removed the "summary" thing from DbtCliOutput. I can absolutely guarantee that nobody was using this because there was a bug that would make it empty regardless of the input :)
- removed the weird asset materializations that represent just normal outputs. I feel like these make absolutely zero sense with the story that we want to tell around asset materializations, and will just clutter up the asset catalog while providing basically zero value.
There are a couple breaking changes mixed in here (mostly related to the output types), but migration would be fairly easy for that stuff. Technically people might have been depending on the weird asset materializations, in which case this change would be more disruptive, but tbh I kinda doubt that this was that useful to anyone (famous last words).
To be honest, I'd ideally like to remove a lot of the solids outside of the main path dbt commands (like test and run). These add a ton of maintenance overhead (if dbt adds a flag to any of these, people will be blocked on using it until we update the library), whereas the resource workflow is a lot more flexible (it has a permissive flags dictionary, so you can pass in whatever flag you want, even if we're not aware of it yet).
The main value-add here is the dbt_cli_resource, which will solve basically all the ergonomic issues that I was experiencing w/ the dbt pipeline in demo-land. Now that this is in a working state,I'll try to put out a quick diff on that pipeline and link it to this to give a better sense of how that would look.
Test Plan: bk
Reviewers: sandyryza, owen
Reviewed By: sandyryza
Differential Revision: https://dagster.phacility.com/D8392