What is dbt Metrics?

What is dbt Metrics?

What is dbt Metrics?

Right off the bat, let's dive into our topic: "What is dbt Metrics?" Dbt (data build tool) Metrics is a robust feature in dbt that allows data analysts and engineers to define key business metrics directly within their data transformation layer.

The dbt Metrics

Introduced by dbt Labs, dbt Metrics is a module that empowers data professionals to standardize their business metrics in SQL. By defining metrics within dbt, you can ensure the consistent calculation of key metrics across your business, minimizing discrepancies and potential misunderstandings (source). This system delivers an accurate and dependable method for measuring essential business metrics, providing a single source of truth.

The Building Blocks of dbt Metrics

The functionality of dbt Metrics rests on its key components: the multiple metric definitions. Now, one might wonder, "What exactly does this mean?", to better understand, we should delve into these building blocks in greater depth.

In the simplest terms, a metric definition is a clear, detailed description of a specific business metric that is established within your dbt semantic layer. These definitions are SQL expressions that are written and stored in YAML files. Each of these YAML files is linked directly to a specific model within your dbt project (source).

Let's think of it as a recipe card. A recipe card tells you the name of the dish, the ingredients required, and the steps to follow. Similarly, each metric definition includes:

  • Name: This is the unique identifier for the metric. Just like how each dish has a unique name, each metric has a unique name to distinguish it from the others.
  • Model: This parameter defines which data model the metric should be linked to. In our recipe analogy, the model is like the type of cuisine the dish belongs to.
  • Description: This is a brief explanation of what the metric represents, akin to a short summary on a recipe card explaining the dish.
  • Aggregation: This is the type of mathematical operation to be performed on the data. The most common aggregations include sum, count, average, etc. This can be compared to the cooking method (baking, frying, steaming) in a recipe.

Metrics can have many declared properties, which define aspects of your metric. More information on properties and configs can be found here.

Page Title
Field Description Example Required?
name A unique identifier for the metric new_customers yes
model The dbt model that powers this metric dim_customers yes (no for derived metrics)
label A short for name / label for the metric New Customers yes
description Long form, human-readable description for the metric The number of customers who... no
calculation_method The method of calculation (aggregation or derived) that is applied to the expression count_distinct yes
expression The expression to aggregate/calculate over user_id, cast(user_id as int) yes
timestamp The time-based component of the metric signup_date no
time_grains One or more "grains" at which the metric can be evaluated. [day, week, month, quarter, year] no
dimensions A list of dimensions to group or filter the metric by [plan, country] no
window A dictionary for aggregating over a window of time. Acceptable periods are: [day,week,month, year, all_time] {count: 14, period: day} no
filters A list of filters to apply before calculating the metric See below no
config Optional configurations for calculating this metric {treat_null_values_as_zero: true} no
meta Arbitrary key/value store {team: Finance} no

dbt Metrics Layer: The Stalwart Foundation of dbt Metrics

The term "dbt Metrics layer" might seem abstract at first glance, but it's an essential cog in the dbt core Metrics machinery. To truly understand its significance, it's important to delve deeper into what this modeling layer is and the vital role it plays.

The dbt Metrics layer serves as an abstraction layer within dbt. Think of it as a master blueprint or a map that encapsulates all your metric definitions. It's a bit like a skeleton supporting the body, forming the backbone for all your business metrics. It's here that all your metrics reside, neatly organized and defined, enabling consistent calculation and providing a clear overview of all the metrics in play (source).

One of the significant advantages of defining metrics in the dbt Metrics layer is the standardization it brings. By centrally storing metric definitions, it ensures that these metrics are calculated uniformly, regardless of where they are used or who uses them. This uniformity is essential for maintaining data integrity across different departments and teams within an organization.

The Indispensable Role of dbt Metrics Layer

The dbt Metrics layer is not just a mere repository of metric definitions. Its primary function is to promote consistency across all your business metrics. In a world without the dbt Metrics layer, different teams could interpret and calculate the same metrics in different ways. This inconsistency could result in a variety of outcomes, leading to confusion, erroneous conclusions, and misguided decision-making.

For instance, consider a business metric like "Average Revenue Per User" (ARPU). Without a standardized definition in the dbt Metrics layer, one team might calculate ARPU based on the total revenue and total number of users in a given month, while another team might base it on the revenue and number of active users. This discrepancy could result in significantly different figures, causing potential misunderstandings and incorrect strategic decisions.

With the dbt Metrics layer, this risk is mitigated. Everyone is working from the same playbook, drawing from the same set of defined metrics. This consistency not only reduces potential errors but also increases efficiency. Instead of spending time determining how to calculate each metric, analysts can focus on interpreting the results and delivering insights.

Architecting dbt Metrics

Understanding how to effectively design and structure your dbt Metrics is crucial to maximize their utility. Below is a step-by-step guide to help you navigate this process. We will be referring to the invaluable insights from dbt's official blog (source).

Start with a Solid Foundation

The first step is to lay a solid groundwork by clearly identifying your key business metrics. These are the numbers that matter most to your business. Engage with stakeholders from various departments to ensure that the metrics you define are meaningful and aligned with business goals.

Define Metrics Using SQL

Once you've identified your key business metrics, you'll need to translate them into SQL query expressions. These expressions should detail how to calculate each metric from the data in your dbt models. This step requires a good understanding of SQL and your data structure within data warehouse.

Store Metric Definitions in YAML

With your SQL expressions in hand, the next step is to define them in YAML files. Each definition should include the metric's name, the SQL expression, a short description, and the type of aggregation to be used.

Organize Metrics Logically

Now it's time to organize your metrics. Group related metrics together in the same YAML file. This logical organization will make your metrics easier to navigate and maintain in dbt cloud.

Leverage the Power of dbt Metrics Layer

Finally, store your YAML files in the dbt Metrics layer. This provides a single source of truth for your metrics to data teams. This ensures that they are calculated consistently no matter where they are used.

The Future of dbt Metrics

Businesses are waking up to the power of data and the need for reliable business metrics. As a result, tools like dbt Metrics are gaining traction. dbt Metrics, with its dedication to consistency and ease-of-use, provides a robust solution for managing the intricate world of business metrics.

To sum up, dbt Metrics stands as a vital weapon in the data analyst's toolkit consisting of BI tools. It offers the promise of uniform and precise business metrics. Businesses that define metrics within the dbt Metrics layer can rely on their data-driven decisions being grounded in consistent and standardized data. This approach optimizes their prospects for success in today's data-centric Modern Data Stack landscape.

Transform acquisition & Metric Flow

After Transform acquisition we might wonder how dbt metrics will evolve. In the past few week, there were talks about dbt open-sourcing Transform source code & migrate dbt metrics towards a new model called Metric Flow.

Metric Flow is defined as : a metrics layer that sits on top of your data warehouse. Define “metrics” — like active users, revenue, and net dollar retention — in code. Then use the same logic across your entire organization. In MetricFlow, you define these metrics in YAML and export them as REST endpoints.

Harness the Power of dbt with CastorDoc

Navigating the intricate world of dbt Metrics and its evolving landscape? Let CastorDoc elevate your journey. With our Sync Back feature, seamlessly push table and column descriptions back to dbt directly from Castor. Dive deeper into your metrics, maintain consistency, and ensure your documentation is always in sync. Try CastorDoc today.

New Release

Get in Touch to Learn More

See Why Users Love CastorDoc
Fantastic tool for data discovery and documentation

“[I like] The easy to use interface and the speed of finding the relevant assets that you're looking for in your database. I also really enjoy the score given to each table, [which] lets you prioritize the results of your queries by how often certain data is used.” - Michal P., Head of Data