-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Slim CI runs, via state comparison and deferred refs #2641
Comments
For
If we don't mind destructive updates:
I think full-refresh at least is fine. dbt will do the right thing in the models that are actually running, and will use good data from models that aren't (because presumably it ran successfully). Right? I don't see any reason why a model should never be deferred.
we should offer |
Thanks for taking a look so quickly @beckjake!
In the first version, let's require that
Flipping a
At this moment, I don't either. A member of the community may come up with a great reason, at which point we can adapt accordingly. |
Here's a neat wrinkle that will require a manifest change! Currently, dbt doesn't store what the database form of a node should look like as a string when it runs. That means that given an existing manifest, the best we can do with the existing manifest is to tell you what the stored node would have been, if you loaded it with the current project's config - in particular, quoting. That's probably too restrictive! Instead, we should add a field to compiled nodes that indicates what the node's "resolved name" is. I'm pretty sure this can be filled in at compile-time, with something like Should that be part of this issue, or should we handle it separately? |
Let's open a new issue! It sounds like that change could be quite self-contained, and that it would simplify #2643 significantly. |
Custom error code if |
Slim CI: MVP
For 0.18.0, we want to prioritize making the following use case possible:
What does this do?
--state prod-target/
: Compare the current project against the manifest specified in the--state
arg (Add pseudo selectors that select models based on artifact states #2465)state:modified+
: Select the set of model nodes that are not present in the state manifest, or differ from the same-named model nodes in state manifest, and their children--defer
: Compile anyref()
in a selected model that points to a node not in the selection group by using the state manifest, instead of the default (target-informed) namespace (Defer to prod manifest for partial runs #2527)In terms of the user-side setup required for the V1 of this, we expect:
job_id
) and surface up-to-date artifacts, either:.dbt-cloud/
)The underlying constructs open a pandora's box of questions that we'll need to continue thinking through:
ref
s in ephemeral models? Is this a performance killer during compilation?--full-refresh
).There's more thinking to do. We're not going to block a first version of this by worrying about all the cascading implications.
Related art
As a selector (#2640):
As a workflow (#1842):
This is effectively a Makefile, with a few added benefits:
on_error
behavior: continue to next workflow step, or stop the workflow altogetherI feel good about adding this functionality, and the syntax above feels reasonable. The big unknowns are (a) how people will use these, and (b) how dbt Cloud could compellingly hook into these. If possible, I'd like to add very initial support for workflows in 0.18.0 and leave it undocumented / call it out as liable to change.
The text was updated successfully, but these errors were encountered: