Fusion Diaries: Coalesce Edition (2025-10-10) #889
dataders
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Welcome to the Coalesce edition of the Fusion diary!
There are many new things to share today, but there are a few cards we’re keeping up our sleeves.
The best way to learn about everything that’s new? Coalesce, happening next week! If you can’t make it in person, stop what you’re doing right now and register for the online experience!
Did you do it? Great, now you can learn some of what the Fusion team has been up to.
Apologies for this week’s edition being delayed all week. We had plane full of features to land this week!
But now that plane has landed, and taxied to the gate, let’s take a look at what’s onboard!
Velocity
caveat that this week was 60% longer with 3 more business days
Community Contributions
Slack
27 contributors over the past week (and a half)!
GitHub
Seven people opened 16 issues on dbt-fusion last week:
@danlsn, @sophieml, @joar, @daweimau, @Therayo96, @ecksru, @aksestok
(Abridged) Release notes
There were 14 releases last week:
preview.30
all the way topreview.43
.We won’t go over each. For version-specific information, check out dbt-fusion’s CHANGELOG.
🪨 Big Rocks
Now in beta: UDFs!
UDFs are now in beta for both dbt Core and the dbt Fusion engine!
This time last year, the Core roadmap post declared that UDFs were coming! Since then, with tremendous input via the community discussion and a live feedback session, they’re now delivered.
To define them you:
.sql
file in thefunctions/
directoryconfig()
or inYAML
) with a name, datatypes for arguments and return values, and other configsAfter that you can use them in a dbt model. They’ll now show up in lineage and can be used with Fusion’s static analysis!
To learn more check out this preview of the new UDFs docs page
Analyses
Analyses were one of the first features of dbt Core that shipped in
0.3.0
!Tristan opened dbt-core#43 almost 10 years ago to describe the use case for analyses:
SELECT
statement that uses dbt-jinja likeref()
,I believe they’ve been slept on for too long and now are more valuable than ever!
Today, in 2025, the VSCode extension enables us to just:
analysis/my_ad_hoc_query.sql
Preview File
button (or⌘+⏎
)And we can now forgo the arduous process of copying & pasting the compiled SQL to web UI query editor! In the below screenshot, I’m showing that you could get the compiled SQL, but why not just preview it right inside VS Code!
One known limitation: multiple statements (i.e. two queries separated by
;
) are not yet supported in a single analysis.now in Beta: Query Cache!
The biggest performance bottleneck in dbt isn’t the language the engine is written in: it’s actually the times that dbt needs to query the data warehouse in order to render jinja into SQL!
We call this “introspection” and it really slows down local development! So we’ve shipped a query cache that’s now in beta.
How it works
During a dbt compile, every time there’s a DWH query executed to render jinja into SQL, dbt will now locally cache the result. So if the same query is needed later, it doesn’t have to make a round trip to the DWH for the results, it will just use the cache.
The first time you enable this feature, you might not get the benefit the first time you
compile
, but you certainly should the second time! Even still, some dbt projects will repeat the same query many times across the DAG, so compile performance may improve on the first invocationWhere is the cache?
If you have query caching enabled, you will notice a new folder
target/query_cache/
that contains many parquet files.How to invalidate the cache
Inevitably, the local cache will be out of date. For example, the remote DWH might have a new column on a certain table that the query cache doesn’t have reflected.
While there is a 12-hour expiration date on the query cache objects you can also refresh the cache manually by either:
deleting the
target/query_cache/
use the “Clear Cache” button of the VSCode sidebar
How to opt into this beta feature
--beta-use-query-cache
to all your dbt CLI commandsnow source available: adapter implementation
A huge amount of source code has been made available in the dbt-fusion repo! Check out how fleshed out this directory is now: crates/dbt-fusion-adapter/src (screenshot below)
We still have a ways to go before an engine built from the source-available dbt-fusion repo can do everything dbt Core does and more, but making the majority of our adapter implementations is a big milestone on this journey to GA!
Our adapters team is truly world-class because not only have they built these adapters, but they’ve also been contributing to upstream to the drivers themselves.
We're strong believers in ADBC, and standardized on them for Fusion in January when the project was still only one week old.
Since then, more than six of Fusion adapter engineers have made almost two dozen commits to the ADBC drivers themselves, with more to come. These drivers are the bedrock upon which the data ecosystem will be built. If this isn't moving up the stack, I don't know what is!
Apache Iceberg & Catalogs in Snowflake!
We launched initial support for materializing tables in Iceberg table format at Coalesce last year. Meanwhile, Apache Iceberg itself has had tremendous adoption over the past twelve months and all the DWH vendors have deeply integrated it into their products.
We’re in an uncanny valley state right now in that there’s still work to make an Iceberg REST catalog feel like a data warehouse’s
database
. To help close this gap, on May 28th this year, we shipped a new, clean abstraction in dbt which we believe will be useful as data continues to federate:catalogs.yml
.This functionality is now in Fusion for Snowflake and soon also for Databricks!
More information
About Iceberg catalogs | dbt Developer Hub
Snowflake and Apache Iceberg | dbt Developer Hub
know if your model can get red squiggles when you save it
We’ve been ranting and raving about how SQL understanding is for analytic engineers with one of the main reasons being that you can know if your SQL is correct without talking to your data warehouse.
However, many have reported that they don’t see red squiggles when they expect them! This can lead folks to think that the absence of Problems/errors via red squiggles means that their model will run without issue. Not a great look!
Not only do we allow users to manually disable static analysis, but Fusion will also intelligently do this when it comes across a good reason to do so. This is great, but the big UX drawback is that it’s hard to know when you have a file open if features like Intellisense will be supported! This is because static analysis is a requirement for this.
So check out our solution. If
static_analysis
isoff
for any reason, you'll be told via a codelens and in many cases, you'll also be told why!execution summary
We’ve been neck-deep replatforming our logging to be based on OpenTelemetry-compatible events. This change has deep and far-reaching consequences, but once stable will enable us to make logs better than ever. Shoutout @mishamsk for the heroic effort here so far.
One change we were able to eke out was a new Execution Summary at the end of Fusion invocations. Not only did we fix the actual counts (sometimes it’d only count unit tests) they are also much more comprehensive.
There’s a lot more to be done to improve the logging UX both locally and within dbt Platform (see dbt-fusion#564), and after Coalesce we’ll begin to address these, starting with re-emitting errors at the end of a run.
Here's a plain text version of the summary. Upgrade Fusion to the latest to see it with pretty colors!
Agentic Authoring Layer Migrations
Last week, I called out our new AGENTS.md workflow for the scenarios that dbt-autofix cannot automatically resolve.
This week, this workflow is now tightly integrated into the VS Code extension. The goal here is to make it as easy and pain-free to migrate to the new authoring layer and the new Fusion engine.
What a time to be alive! Reach out if you try this out and have any issues.
In the video below you can observe what happens after clicking “Getting Started”
dbtf init --fusion-upgrade
AGENTS.md
is downloaded and the user is given a prompt on how to use itScreen_recording_of_CLI_onboarding_flow.mov
🚧 Work in progress
Semantic Layer
Work continues to have Fusion support the semantic layer. We’re also in the process of revamping metricflow’s YAML spec to make it easier and more intuitive to author and maintain metrics. Doing both of these concurrently is non-trivially complex!
So you may have started to see the below warning. You can ignore it for now, but stay tuned as Semantic Layer is indeed coming to Fusion later this year!
🤔 Looking for feedback
After Coalesce, we’d like to start a conversation about what “static analysis” means to you as an analytics engineer. It’ll definitely be something I’ll ask you about if you see me at Coalesce in Vegas next week!
What does the term “static analysis” mean for you? If you’re already using Fusion, what exactly does it give you?
🏁 Made it to the meme
I’m really stoked on analyses! I envision this as the de-facto query editor of choice for local users of Fusion! Stefan agrees!
Beta Was this translation helpful? Give feedback.
All reactions