Skip to content
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

Add Partner Integration Guide to dbt Developer Blog #4673

Merged
merged 64 commits into from
Dec 20, 2023
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
326af16
upload the guide
amychen1776 Dec 19, 2023
4b7af55
fix broken links
amychen1776 Dec 19, 2023
7337ab2
Merge branch 'current' into partner_integration_guide
nghi-ly Dec 19, 2023
827e339
This branch was auto-updated!
github-actions[bot] Dec 19, 2023
623189c
This branch was auto-updated!
github-actions[bot] Dec 20, 2023
07de82e
This branch was auto-updated!
github-actions[bot] Dec 20, 2023
0d4ec77
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
44bf2cf
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
c28ecb4
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
402aee5
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
434e7c0
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
74e6fbb
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
6d215a8
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
74a53e2
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
ec77ce0
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
d652d75
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
bd6426d
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
d29101c
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
dce4940
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
e7a5cfc
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
8c2b058
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
294a6ae
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
27b085a
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
efe6c44
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
1b6cc26
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
325c554
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
151e4da
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
cec34b0
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
71db8f2
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
1f17b84
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
f0638c4
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
50f4b3c
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
f235d72
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
d9a9b6c
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
e64fede
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
c6bae5e
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
ff21888
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
6af40a3
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
3c91a59
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
b8d5449
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
298cd46
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
1635cec
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
2f26668
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
eefe9e0
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
c521160
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
ed73c02
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
f9d6b1e
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
fbc844d
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
f2ccece
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
dbb3924
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
4358a4d
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
5748cbe
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
c64ddc5
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
3cf7408
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
1b766c9
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
ea0ae3c
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
872c676
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
f177a6d
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
57ac462
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
715394b
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
68f3a68
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
509f5a8
Update website/blog/2023-12-20-partner-integration-guide.md
amychen1776 Dec 20, 2023
d459a08
fix links
amychen1776 Dec 20, 2023
4fa9d37
Update website/blog/2023-12-20-partner-integration-guide.md
nghi-ly Dec 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions website/blog/2023-12-20-partner-integration-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
title: "How to integrate with dbt"
description: "This guide will cover the ways to integrate with dbt Cloud"
slug: integrating-with-dbtcloud

authors: [amy_chen]

tags: [dbt Cloud, Integrations, APIs]
hide_table_of_contents: false

date: 2023-12-20
is_featured: false
---
## Overview

Over the course of my 3 years running the Partner Engineering team at dbt Labs, the most common question I have been asked is “How do we integrate with dbt?”. Because those conversations often start out at the same place, I decided to create this guide so I’m no longer the blocker to fundamental information. This also allows us to skip the intro and get to the fun conversations like what a joint solution for our customers would look like so much faster.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

Now this guide does not include how to integrate with dbt Core. If you’re interested in creating an dbt Adapter, **[please check out this documentation instead.](https://docs.getdbt.com/guides/dbt-ecosystem/adapter-development/1-what-are-adapters)**
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

Instead we are going to focus on integrating with dbt Cloud. Integrating with dbt Cloud is a key requirement to become a dbt Labs technology partner, opening the door to a variety of collaborative commercial opportunities.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

Here I will cover how to get started, potential use cases you want to solve for, and points of integrations to do so.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

## New to dbt Cloud?

If you're new to dbt and dbt Cloud, we recommend you and your software developers try our [Getting Started Quickstarts](https://docs.getdbt.com/quickstarts) after reading [What is dbt?](https://docs.getdbt.com/docs/introduction). The documentation will help you familiarize yourself with how our users interact with dbt. By going through this, you will also create a sample dbt project to test your integration.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

If you require a partner dbt Cloud account to test on, we can upgrade an existing account or a trial account. **This account may only be used for development, training, and demonstration purposes.** Please speak to your partner manager if you're interested and provide the account id (provided in the URL). Our partner account has all of the enterprise level functionality and can be provided with a signed partnerships agreement.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

## Integration Points
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

- [Discovery API (formerly referred to as Metadata API)](https://docs.getdbt.com/docs/dbt-cloud-apis/discovery-api)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Overview**: This GraphQL API allows you to query the metadata that dbt Cloud generates every time you run a dbt Project. We have two schemas available (environment and job level). By default, we always recommend that you integrate with the environment level schema because it contains the latest state and historical run results of all the jobs run on the dbt Cloud project. The job level will only provide you the metadata of one job, giving you only a small snapshot of part of the project.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- [Administrative API (also referred to as the Admin API)](https://docs.getdbt.com/docs/dbt-cloud-apis/admin-cloud-api)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Overview:** This REST API allows you to orchestrate dbt Cloud jobs runs and help you administer a dbt Cloud account. For metadata retrieval, we recommend integrating with the Discovery API instead.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Webhooks
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Overview:** Outbound webhooks can send notifications about your dbt Cloud jobs to other systems. These webhooks allow you to get the latest information on your dbt jobs in real time.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- [Link to documentation](https://docs.getdbt.com/docs/deploy/webhooks)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Semantic Layers/Metrics
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Overview: Our Semantic Layer is made up of two parts: metrics definitions and the ability to interactively query the dbt metrics. For more details, here is a [basic overview](https://docs.getdbt.com/docs/use-dbt-semantic-layer/dbt-sl) and [our best practices](https://docs.getdbt.com/guides/dbt-ecosystem/sl-partner-integration-guide).**
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Metrics definitions can be pulled from the Discovery API (linked above) or the Semantic Layer Driver/GraphQL API. The key difference is the Discovery API is not able to pull the semantic graph which provides the list of available dimensions that one can query per metric. That is only available via the SL Driver/APIs. The tradeoff is the SL Driver/APIs does not have access to the lineage of the entire dbt project (i.e how the dbt metrics dependencies on dbt models)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- [We have three available integration points for the Semantic Layer API.](https://docs.getdbt.com/docs/dbt-cloud-apis/sl-api-overview)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

## dbt Cloud Hosting and Authentication
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

To use the dbt Cloud APIs, you will need access to the customer’s access urls. Depending on their dbt Cloud setup, they will have a different access url. To find out more, here is the [documentation](https://docs.getdbt.com/docs/cloud/about-cloud/regions-ip-addresses) to understand all the possible configurations. My recommendation is to allow the customer to provide their own url to simplify support.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

If the customer is on an Azure Single Tenant instance, they do not currently have access to the Discovery API or the Semantic Layer APIs.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

For authentication, we highly recommend that your integration uses account service tokens. You can read more about how to create a service token and what permission sets to provide it [here](https://docs.getdbt.com/docs/dbt-cloud-apis/service-tokens). Please note depending on their plan type, they will have access to different permission sets. We **do not** recommend that users supply their user bearer tokens for authentication. This can cause issues if the user leaves the organization and provides you access to all the dbt Cloud accounts associated to the user rather than just the account (and related projects) that they want to integrate with.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

## Potential Use Cases
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

- Event-based orchestration
- **Desired Action:** You wish to receive information that a scheduled dbt Cloud Job has been completed or kick off a dbt Cloud job. You can align your product schedule to the dbt Cloud run schedule.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Examples:** Kicking off a dbt Job after the ETL job of extracting and loading the data is completed. Or receiving a webhook after the job has been completed to kick off your reverse ETL job.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Integration Points:** Webhooks and/or Admin API
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- dbt Lineage
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Desired Action:** You wish to interpolate the dbt lineage metadata into your tool.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Example: In your tool, you wish to pull in the dbt DAG into your lineage diagram. [This is what you could pull and how to do this.](https://docs.getdbt.com/docs/dbt-cloud-apis/discovery-use-cases-and-examples#whats-the-full-data-lineage)**
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Integration Points:** Discovery API
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- dbt Environment/Job metadata
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Desired Action:** You wish to interpolate dbt Cloud job information into your tool, including the status of the jobs, the status of the tables executed in the run, what tests passed, etc.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Example:** In your Business Intelligence tool, stakeholders select from tables that a dbt model created. You show the last time the model passed its tests/last run to show that the tables are current and can be trusted. [This is what you could pull and how to do this.](https://docs.getdbt.com/docs/dbt-cloud-apis/discovery-use-cases-and-examples#whats-the-latest-state-of-each-model)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Integration Points:** Discovery API
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- dbt Model Documentation
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Desired Action:** You wish to interpolate dbt Project Information, including model descriptions, column descriptions, etc.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Example:** You want to extract out the dbt model description so that you can display and help the stakeholder understand what they are selecting from. This way, the creators can easily pass on the information without updating another system. [This is what you could pull and how to do this.](https://docs.getdbt.com/docs/dbt-cloud-apis/discovery-use-cases-and-examples#what-does-this-dataset-and-its-columns-mean)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Integration Points:** Discovery API
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

**dbt Core only users will have no access to the above integration points.** For dbt metadata, oftentimes our partners will create a dbt core integration by using the [dbt artifacts](https://www.getdbt.com/product/semantic-layer/) files generated by each run and provided by the user. With our Discovery API, we are providing a dynamic way to get the latest up to date information, parsed out for you.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

## dbt Cloud Plans & Permissions
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

[The dbt Cloud plan type](https://www.getdbt.com/pricing) will change what the user has access to. There are four different types of plans:

- **Developer**: This is free and available to one user with a limited amount of successful models built. This plan cannot access the APIs, Webhooks, or Semantic Layer. Limited to 1 project.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Team:** This plan has access to the APIs, Webhooks, and Semantic Layer. You may have up to 8 users on the account and one dbt Cloud Project. This is limited to 15,000 successful models built.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Enterprise** (Multi-tenant/Multi-cell): This plan has access to the APIs, Webhooks, and Semantic Layer. They may have more than one dbt Cloud Project based on how many dbt projects/domains they have using dbt. Majority of our enterprise customers are on multi-tenant dbt Cloud instances.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- **Enterprise** (Single-tenant): This plan may have access to the APIs, Webhooks, and Semantic Layer. If you are working with a specific customer, let us know, and we can confirm if their instance has access.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

## Frequently Asked Questions
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved

- What is a dbt Cloud Project?
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- A dbt Cloud project is made up of two connections: one to the git repository and one to the data warehouse/platform. Most customers will have only one dbt Cloud Project in their account but there are enterprise clients who might have more depending on their use cases.The project also encapsulates two types of environments at minimal: a development environment and deployment environment.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Oftentimes folks refer to the [dbt Project](https://docs.getdbt.com/docs/build/projects) as the code hosted in their git repository.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- What is a dbt Cloud Environment?
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- [For an overview, check out this documentation.](https://docs.getdbt.com/docs/environments-in-dbt) At minimal an project will have one deployment type environment that they will be executing jobs on. The development environment powers the dbt Cloud IDE and Cloud CLI.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Can we write back to the dbt project?
- At this moment, we do not have a Write API. A dbt project is hosted in a git repository, so if you have a git provider integration, you can manually open up a Pull Request on the project to maintain the version control process.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Can you provide column-level information in the lineage?
- Column-level lineage is currently in beta release with more information to come.
- How do I get a Partner Account?
- Contact your Partner Manager with your account id (in your URL)
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Why should I not use the Admin API to pull out the dbt artifacts for metadata?
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- We recommend not integrating with the Admin API to extract the dbt artifacts documentation. This is because the Discovery API provides more extensive information, a user-friendly structure and more reliable integration point.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- How do I get access to the dbt Brand assets?
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- Check out this [page](https://www.getdbt.com/brand-guidelines/). Please make sure you’re not using our old logo(hint: there should only be one hole in the logo). Please also note that the name dbt and the dbt logo are trademarked by dbt Labs, and that use is governed by our brand guidelines - which are fairly specific for commercial uses. If you have any questions about proper use of our marks, please ask for your partner manager.
amychen1776 marked this conversation as resolved.
Show resolved Hide resolved
- How do I engage with the partnerships team?
- Email [email protected].
2 changes: 1 addition & 1 deletion website/blog/authors.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
amy_chen:
image_url: /img/blog/authors/achen.png
job_title: Staff Partner Engineer
job_title: Product Partnerships Manager
links:
- icon: fa-linkedin
url: https://www.linkedin.com/in/yuanamychen/
Expand Down
Loading