Replies: 2 comments 1 reply
-
Thanks @jtcohen6 for the details. Here is my wish list of features which I would love to see in the next version
|
Beta Was this translation helpful? Give feedback.
1 reply
-
Not much to add, but 1.2 sounds amazing as adapter improvements would be a huge boost. We use Snowflake, and some of those would be amazing, especially around the dry run as we can run a "full refresh" dry run and also an incremental dry run to make sure the SQL inside the |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
In our post-1.0 world, we're aiming for predictability and consistency with new
dbt-core
releases. That means a new minor ("feature") release every three months: https://docs.getdbt.com/docs/core-versionsEach minor release is organized around a "theme." This helps us plan our work, coordinate our efforts, and talk about the new version when it's ready. We should expect about half of the changes in a minor version to be "thematic." The other half is accoutrements: bug fixes, community contributions, performance improvements, and straightforward extensions of existing capabilities.
v1.1 is arriving very soon (end of April), and it's currently available as a release candidate. (Please try it out!) The theme for v1.1 was testing—not in the sense of
dbt test
, but rather in the sense ofpytest test_make_sure_dbt_core_works.py
. We totally rebuilt our testing harness fordbt-core
and adapter plugins, we converted a bunch of our legacy tests, and we're documenting the components of the new framework, for the benefit of external adapter maintainers: https://docs.getdbt.com/docs/contributing/testing-a-new-adapterThe next minor version, v1.2, is targeted for July. We're organizing a theme around "adapter ergonomics," meaning straightforward quality-of-life improvements for how dbt interacts with and across different databases, platforms, query engines, etc. I'll aim to keep the v1.2 milestone up-to-date as we scope and tackle specific issues. For now, take the set of things described below as an illustration of what we're thinking about for v1.2.
Materializations
Materializations are the most important macros we have—they do a lot of the heavy lifting in
dbt run
. They also haven't gotten a lot of love in a long time. Before we can make sweeping, nonlinear improvements to how dbt materializes models/snapshots/seeds/tests, there are a handful of straightforward, linear improvements that have been staring us in the face for some time.Initial scope
Stretch goals
grants
, support more "advanced" permission features, on available platforms: secure/authorized views,row access policy
, column-level security via masking policies / policy tagsDown the line
These aren't in scope for the work we're planning for v1.2, but they're things I always have in mind:
explain
or database-specific validation when available (dbt should have a Dry-Run mode #4456)The linear improvements in scope above will help us reexamine and strengthen the foundations of dbt materializations. It's those same foundations that will enable us to tackle these bigger-swing initiatives head-on, in the not-so-distant futur. In the meantime, if you find them compelling, please continue to weigh into each discussion, share your experimentation and findings.
I'm open to your feedback! Are there other quality-of-life improvements that we're missing here? Other long-shots that we should be thinking about, even if we're not ready to write the code for them just yet?
Cross-database macros
Today, most of the macros that are defined within
dbt-core
and adapter plugins are the ones needed for low-level tasks (caching, cataloging) and materializations (create_table_as
,create_view_as
). These are "internal" macros, used indirectly every time you typedbt run
. It's rare as an end user to call them by name.There are some more visible "global" macros: the built-in generic tests (
unique
,not_null
,relationships
,accepted_values
), or macros that control configurable behavior (generate_schema_name
).Meanwhile, as the
dbt_utils
package has grown over the past few years, it's naturally found itself developing a set of reusable building blocks: "cross-database macros." These handle everything from data types todatediff
. So long as these building blocks are implemented for a given dbt adapter, higher-order macros, such asdbt_utils.date_spine
, just work on that database/engine/etc.Following the excellent discussion in dbt-labs/dbt-utils#487, it's become clear that:
dbt_utils
is a monolith that needs splitting updbt-core
and adapter plugins, where they can be more easily maintained and tested (see: new testing framework in v1.1!)Who benefits?
Initial scope
Considerations
dbt
macro namespace, or within another built-in / internal namespace (dbt_utils
)?dbt_utils
and shimmed those utilities across a dozen popular databases.Beta Was this translation helpful? Give feedback.
All reactions