From dfbf23f9ca3940abae88adecd7f7a1a076da33d1 Mon Sep 17 00:00:00 2001 From: gwen windflower Date: Thu, 14 Sep 2023 18:05:32 -0500 Subject: [PATCH 001/265] Spike out mesh guide --- .../how-we-mesh/mesh-1-intro.md | 35 +++++++++++++++++++ .../how-we-mesh/mesh-2-structures.md | 30 ++++++++++++++++ .../how-we-mesh/mesh-3-implementation.md | 29 +++++++++++++++ .../how-we-mesh/mesh-4-conclusion.md | 11 ++++++ 4 files changed, 105 insertions(+) create mode 100644 website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md create mode 100644 website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md create mode 100644 website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md create mode 100644 website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md new file mode 100644 index 00000000000..8ebf96a5070 --- /dev/null +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -0,0 +1,35 @@ +--- +title: "Intro to dbt Mesh" +description: Getting started with dbt Mesh patterns +hoverSnippet: Learn how to get started with dbt Mesh +--- + +## What is dbt Mesh? + +Historically, building data teams has involved two extremes, building a centralized team or using embedded analysts. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts, allowing embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficultly of this model though is managing the compplexity of dependencies, goverance, and workflows between all groups — creating friction in monorepos or complexity and silos in multi-repos. Ideally, you want to teams to be able to work independently, but also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. + +dbt Mesh is not a product, but a pattern, enabled a convergence of several features in dbt Cloud. It’s inspired by dbt’s best practices and ideas from [data mesh](https://en.wikipedia.org/wiki/Data_mesh). These features include: + +- Cross-project references - this is the core feature that enables a mesh structure. `ref`s now work across projects in dbt Cloud-enabled projects on Enterprise plans. +- Governance - dbt Cloud’s new governance features allow you to manage access and permissions across projects. + - Groups - groups allow you to assign models to subsets of models within a project. + - Access - access configs allow you to control who can view and reference models both within and across projects. +- Versioning - building a dbt Mesh involves treating your data models as stable APIs. To achieve this you need mechanisms to version your models and allow graceful adoption and deprecation of models as they evolve. +- Contracts - data contracts set strict expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream consumers. + +## Who is dbt Mesh for? + +dbt Mesh is not for every organization! If you're just starting your dbt journey, don't worry about building a dbt Mesh right away, it increases some meta-complexity around managing your projects that could distract from building initial value in dbt. However, if you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring a dbt Mesh: + +- The number of models in your project is degrading performance and slowing down development. +- Teams have developed separate workflows and need to decouple development. +- Security and governance requirements are increasing and would benefit from increased isolation. + +dbt Cloud is designed to coordinate the features above and simplify the meta-complexities (such as scoped CI and multi-project lineage) to solve for these problems. + +## Learning goals + +- Understand the purpose and tradeoffs of building a dbt Mesh. +- Develop an intuition for various dbt Mesh patterns and how to design a dbt Mesh for your organization. +- Establish recommended steps to incrementally adopt a dbt Mesh pattern in your dbt implementation. +- Offer tooling to help you more quickly and easily implement your dbt Mesh plan. diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md new file mode 100644 index 00000000000..2b57e50f2f4 --- /dev/null +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -0,0 +1,30 @@ +--- +title: "Deciding how to structure your mesh" +description: Getting started with dbt Mesh patterns +hoverSnippet: Learn how to get started with dbt Mesh +--- + +## Exploring mesh patterns + +Building a mesh is not a one-size-fits-all process. In fact, it's the opposite, it's about customizing your project structure to fit _your_ team and _your_ data. Often we've had to fit the data team and project structure into our company's org chart, or manage everything in one project to handle the constraints of our data and warehouse. dbt Mesh allows us to mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. + +## Vertical splits + +Vertical splits are about separating out layers of transformation in the DAG order. For example, splitting up staging and mart layers. Often the vertical separation will be based around security and governance requirements, such as separating out PII data from non-PII data and restricting raw data access to a platform team that's responsible for landing and cleaning data. + +## Horizontal splits + +Horizonal splits are about splitting up the data based on source or domain. Often the horizontal separation will be based around team consumption patterns, such as splitting out marketing data and financial data. Another common vector of horizontal splitting is data from different sources, such as click event data and transactional ecommerce data. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. + +## Combining these divisions + +- These are not either/or techniques, you can and should combine them in any way that makes sense for your organization. + +- **DRY applies to underlying data not just code.** Regardless of your split, you should not be sourcing the same rows and columns into multiple meshes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface error for conflicts and erodes the single source of truth we're trying to create in our dbt project. + +## Monorepo vs multi-repo + +- A dbt Mesh can exist as multiple projects in a single repo (monorepo) or as multiple projects in their own repositories (multi-repo). +- Monorepos are often easier to get started with, but can become unwieldy as the number of models and teams grow. +- If you're a smaller team looking primarily to speed up and simplify development, a monorepo is likely the right choice. +- If you're a larger team with multiple groups, and need to decouple projects for security and enablement of different development styles and rhythms, a multi-repo is your best bet. diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md new file mode 100644 index 00000000000..10d1b1cbaab --- /dev/null +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md @@ -0,0 +1,29 @@ +--- +title: "Implementing your mesh plan" +description: Getting started with dbt Mesh patterns +hoverSnippet: Learn how to get started with dbt Mesh +--- + +## Implementing a dbt Mesh + +Let's examine an outline of steps to start implementing a dbt Mesh in your organization. + +### Research your current structure + +- Look at your selectors to figure out how people are grouping models right now. +- Talk to teams about what sort of separation is naturally existing right now + - Are there various domains people are focused on? + - Are there various sizes, shapes, and sources of data that get handled separately (such as click event data)? + - Are there people focused on separate levels of transformation, such as landing and staging data or building marts? + +## Add groups and access + +Once you have a sense of some initial groupings, implement group and access permissions within a project. + +- Incrementally start building your jobs based on these groups (we would recommend in parallel to your production jobs until you’re sure about them) to feel out that you’ve drawn the lines in the right place. + +## Do the splits + +- When you’ve confirmed the right groups, use `dbt-meshify` to pull chunks out into their own projects. + - Do _one_ group at a time, using the groups as your selectors. + - Do _not_ refactor as you migrate, however tempting that may be. Focus on getting 1-to-1 parity and log any issues you find in doing the migration for later. Once you’ve fully landed the project then you can start optimizing it for its new life as part of the mesh. diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md b/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md new file mode 100644 index 00000000000..50273f109df --- /dev/null +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md @@ -0,0 +1,11 @@ +--- +title: "Conclusion" +description: Getting started with dbt Mesh patterns +hoverSnippet: Learn how to get started with dbt Mesh +--- + +## Conclusion + +dbt Mesh is a powerful new pattern for data transformation. It helps adapt teams and their data towards each other, rather than making arbitrary decisions based on the constraints of either one. By creating alignment between your people and data flows, developers can move faster, analysts can be more productive, and data consumers can be more confident in the data they use. + +You can incrementally adopt the ideas in this guide in your organization as you hit constraints. There's no pressure to adopt this as the _right pattern_ to build with. That said, familiarizing yourself with dbt Mesh concepts and thinking through how they can apply to your organization will help you make better decisions as you grow. We hope this guide has given you a good starting point to do that. From f08b0cd65e436898995ee6112d292f1e9fbd8c0a Mon Sep 17 00:00:00 2001 From: gwen windflower Date: Fri, 15 Sep 2023 11:40:45 -0500 Subject: [PATCH 002/265] Start bullet, bolds, and expansion of mesh guide --- .../how-we-mesh/mesh-1-intro.md | 26 +++++++-------- .../how-we-mesh/mesh-2-structures.md | 13 ++++++-- .../how-we-mesh/mesh-4-conclusion.md | 6 ++-- website/sidebars.js | 33 +++++++++++++++---- 4 files changed, 51 insertions(+), 27 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 8ebf96a5070..611d40a6567 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -10,26 +10,26 @@ Historically, building data teams has involved two extremes, building a centrali dbt Mesh is not a product, but a pattern, enabled a convergence of several features in dbt Cloud. It’s inspired by dbt’s best practices and ideas from [data mesh](https://en.wikipedia.org/wiki/Data_mesh). These features include: -- Cross-project references - this is the core feature that enables a mesh structure. `ref`s now work across projects in dbt Cloud-enabled projects on Enterprise plans. -- Governance - dbt Cloud’s new governance features allow you to manage access and permissions across projects. - - Groups - groups allow you to assign models to subsets of models within a project. - - Access - access configs allow you to control who can view and reference models both within and across projects. -- Versioning - building a dbt Mesh involves treating your data models as stable APIs. To achieve this you need mechanisms to version your models and allow graceful adoption and deprecation of models as they evolve. -- Contracts - data contracts set strict expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream consumers. +- **Cross-project references** - this is the core feature that enables a mesh structure. `ref`s now work across projects in dbt Cloud-enabled projects on Enterprise plans. +- **Governance** - dbt Cloud’s new governance features allow you to manage access and permissions across projects. + - **Groups** - groups allow you to assign models to subsets of models within a project. + - **Access** - access configs allow you to control who can view and reference models both within and across projects. +- **Versioning** - building a dbt Mesh involves treating your data models as stable APIs. To achieve this you need mechanisms to version your models and allow graceful adoption and deprecation of models as they evolve. +- **Contracts** - data contracts set strict expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream consumers. ## Who is dbt Mesh for? dbt Mesh is not for every organization! If you're just starting your dbt journey, don't worry about building a dbt Mesh right away, it increases some meta-complexity around managing your projects that could distract from building initial value in dbt. However, if you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring a dbt Mesh: -- The number of models in your project is degrading performance and slowing down development. -- Teams have developed separate workflows and need to decouple development. -- Security and governance requirements are increasing and would benefit from increased isolation. +- **The number of models** in your project is degrading performance and slowing down development. +- Teams have developed **separate workflows** and need to decouple development. +- **Security and governance** requirements are increasing and would benefit from increased isolation. dbt Cloud is designed to coordinate the features above and simplify the meta-complexities (such as scoped CI and multi-project lineage) to solve for these problems. ## Learning goals -- Understand the purpose and tradeoffs of building a dbt Mesh. -- Develop an intuition for various dbt Mesh patterns and how to design a dbt Mesh for your organization. -- Establish recommended steps to incrementally adopt a dbt Mesh pattern in your dbt implementation. -- Offer tooling to help you more quickly and easily implement your dbt Mesh plan. +- Understand the **purpose and tradeoffs** of building a dbt Mesh. +- Develop an intuition for various **dbt Mesh patterns** and how to design a dbt Mesh for your organization. +- Establish recommended steps to **incrementally adopt** a dbt Mesh pattern in your dbt implementation. +- Offer **tooling** to help you more quickly and easily implement your dbt Mesh plan. diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 2b57e50f2f4..816cba694b0 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -6,15 +6,22 @@ hoverSnippet: Learn how to get started with dbt Mesh ## Exploring mesh patterns -Building a mesh is not a one-size-fits-all process. In fact, it's the opposite, it's about customizing your project structure to fit _your_ team and _your_ data. Often we've had to fit the data team and project structure into our company's org chart, or manage everything in one project to handle the constraints of our data and warehouse. dbt Mesh allows us to mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. +Building a dbt Mesh is not a one-size-fits-all process. In fact, it's the opposite, it's about customizing your project structure to fit _your_ team and _your_ data. Often we've had to fit the data team and project structure into our company's org chart, or manage everything in one project to handle the constraints of our data and warehouse. dbt Mesh allows us to mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. Let's explore some language for discussing the design of these patterns. ## Vertical splits -Vertical splits are about separating out layers of transformation in the DAG order. For example, splitting up staging and mart layers. Often the vertical separation will be based around security and governance requirements, such as separating out PII data from non-PII data and restricting raw data access to a platform team that's responsible for landing and cleaning data. +Vertical splits are about separating out layers of transformation in the DAG order. Let's look at some examples. + +- **Splitting up staging and mart layers.** Creating a more tightly-controlled, shared set of components that other projects build on but can't edit. +- **Isolating earlier models for security and governance requirements.** Separating out and masking PII data so that downstream consumers can't access it is a common use case for a vertical split. +- **Protecting complex or expensive data.** If you have a large or complex model that's expensive to run, you might want to isolate it so that it's safer from accidental selection and easier to debug when it has issues. ## Horizontal splits -Horizonal splits are about splitting up the data based on source or domain. Often the horizontal separation will be based around team consumption patterns, such as splitting out marketing data and financial data. Another common vector of horizontal splitting is data from different sources, such as click event data and transactional ecommerce data. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. +Horizonal splits are about splitting up the data based on source or domain. Let's consider some possibilites for horizontal splitting. + +- Often the horizontal separation will be based around team consumption patterns, such as splitting out marketing data and financial data. +- Another common vector of horizontal splitting is data from different sources, such as click event data and transactional ecommerce data. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. ## Combining these divisions diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md b/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md index 50273f109df..d96bbbf741e 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md @@ -1,11 +1,9 @@ --- -title: "Conclusion" +title: "Go forth and mesh!" description: Getting started with dbt Mesh patterns hoverSnippet: Learn how to get started with dbt Mesh --- -## Conclusion - dbt Mesh is a powerful new pattern for data transformation. It helps adapt teams and their data towards each other, rather than making arbitrary decisions based on the constraints of either one. By creating alignment between your people and data flows, developers can move faster, analysts can be more productive, and data consumers can be more confident in the data they use. -You can incrementally adopt the ideas in this guide in your organization as you hit constraints. There's no pressure to adopt this as the _right pattern_ to build with. That said, familiarizing yourself with dbt Mesh concepts and thinking through how they can apply to your organization will help you make better decisions as you grow. We hope this guide has given you a good starting point to do that. +It's important to reiterate that you can _incrementally_ adopt the ideas in this guide in your organization as you hit constraints. The collection of features tha enable dbt Mesh work effectively as independent tools, and there's no pressure to adopt this as the _right pattern_ to build with. That said, familiarizing yourself with the tooling and dbt Mesh concepts, as well as thinking through how they can apply to your organization, will help you make better decisions as you grow. We hope this guide has given you a good starting point to do that. diff --git a/website/sidebars.js b/website/sidebars.js index fde16bc4983..a515f0a7f66 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -266,7 +266,7 @@ const sidebarSettings = { "docs/build/validation", "docs/build/metricflow-time-spine", "docs/build/metricflow-cli", - ] + ], }, { type: "category", @@ -275,8 +275,8 @@ const sidebarSettings = { items: [ "docs/build/dimensions", "docs/build/entities", - "docs/build/measures" - ] + "docs/build/measures", + ], }, { type: "category", @@ -287,7 +287,7 @@ const sidebarSettings = { "docs/build/derived", "docs/build/ratio", "docs/build/simple", - ] + ], }, ], }, @@ -463,7 +463,10 @@ const sidebarSettings = { { type: "category", label: "Job", - link: { type: "doc", id: "docs/dbt-cloud-apis/discovery-schema-job" }, + link: { + type: "doc", + id: "docs/dbt-cloud-apis/discovery-schema-job", + }, items: [ "docs/dbt-cloud-apis/discovery-schema-job-model", "docs/dbt-cloud-apis/discovery-schema-job-models", @@ -486,7 +489,10 @@ const sidebarSettings = { { type: "category", label: "Environment", - link: { type: "doc", id: "docs/dbt-cloud-apis/discovery-schema-environment" }, + link: { + type: "doc", + id: "docs/dbt-cloud-apis/discovery-schema-environment", + }, items: [ { type: "category", @@ -925,7 +931,20 @@ const sidebarSettings = { }, { type: "category", - label: "Materializations best practices", + label: "How we build our dbt Mesh projects", + link: { + type: "doc", + id: "guides/best-practices/how-we-mesh/mesh-1-intro", + }, + items: [ + "guides/best-practices/how-we-mesh/mesh-2-structures", + "guides/best-practices/how-we-mesh/mesh-3-implementation", + "guides/best-practices/how-we-mesh/mesh-4-conclusion", + ], + }, + { + type: "category", + label: "Materialization best practices", link: { type: "doc", id: "guides/best-practices/materializations/materializations-guide-1-guide-overview", From f27a91ea13a1da7db2ce6d84f5b9ec6f76feb0bd Mon Sep 17 00:00:00 2001 From: gwen windflower Date: Fri, 15 Sep 2023 12:01:28 -0500 Subject: [PATCH 003/265] Finish mesh patterns copy --- .../how-we-mesh/mesh-2-structures.md | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 816cba694b0..e7d213dd2e4 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -18,20 +18,22 @@ Vertical splits are about separating out layers of transformation in the DAG ord ## Horizontal splits -Horizonal splits are about splitting up the data based on source or domain. Let's consider some possibilites for horizontal splitting. +Horizonal splits are about splitting up the data based on source or domain. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. Let's consider some possibilites for horizontal splitting. -- Often the horizontal separation will be based around team consumption patterns, such as splitting out marketing data and financial data. -- Another common vector of horizontal splitting is data from different sources, such as click event data and transactional ecommerce data. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. +- **Team consumption patterns.** For example, splitting out marketing data and financial data. +- **Data from different sources.** For example, click event data and transactional ecommerce data. +- **Team workflows.** If two embedded groups operate in different project management tools at different paces, or are staffed differently, you may want to split the projects up so they can move independently. ## Combining these divisions -- These are not either/or techniques, you can and should combine them in any way that makes sense for your organization. - -- **DRY applies to underlying data not just code.** Regardless of your split, you should not be sourcing the same rows and columns into multiple meshes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface error for conflicts and erodes the single source of truth we're trying to create in our dbt project. +- **These are not either/or techniques**. You can and should combine them in any way that makes sense for your organization. +- **Pick one type of split and focus on that first**. If you have a hub-and-spoke team topology for example, handle breaking out the central platform project before you split the remainder into domains. Then if you need to break those domains up vertically you can shift back to that. +- **DRY applies to underlying data not just code.** Regardless of your splits, you should not be sourcing the same rows and columns into multiple nodes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface error for conflicts and erodes the single source of truth we're trying to create in our dbt project. ## Monorepo vs multi-repo -- A dbt Mesh can exist as multiple projects in a single repo (monorepo) or as multiple projects in their own repositories (multi-repo). -- Monorepos are often easier to get started with, but can become unwieldy as the number of models and teams grow. -- If you're a smaller team looking primarily to speed up and simplify development, a monorepo is likely the right choice. -- If you're a larger team with multiple groups, and need to decouple projects for security and enablement of different development styles and rhythms, a multi-repo is your best bet. +A dbt Mesh can exist as multiple projects in a single repo (monorepo) or as multiple projects in their own repositories (multi-repo). + +- **Monorepos are often easier to get started with**, but can become unwieldy as the number of models and teams grow. +- If you're a **smaller team** looking primarily to speed up and simplify development, a **monorepo** is likely the right choice. +- If you're a **larger team with multiple groups**, and need to decouple projects for security and enablement of different development styles and rhythms, a **multi-repo setup** is your best bet. From d2eda8258e33cf4c4b1ceb35447ef42a6326a7f9 Mon Sep 17 00:00:00 2001 From: gwen windflower Date: Fri, 15 Sep 2023 12:33:47 -0500 Subject: [PATCH 004/265] Bold and expand mesh implementation --- .../how-we-mesh/mesh-3-implementation.md | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md index 10d1b1cbaab..ae7f1d120b1 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md @@ -4,14 +4,14 @@ description: Getting started with dbt Mesh patterns hoverSnippet: Learn how to get started with dbt Mesh --- -## Implementing a dbt Mesh - Let's examine an outline of steps to start implementing a dbt Mesh in your organization. -### Research your current structure +## Research your current structure -- Look at your selectors to figure out how people are grouping models right now. -- Talk to teams about what sort of separation is naturally existing right now +- **Look at your selectors** to figure out how people are grouping models right now. +- **Examine jobs that you run**, look at how they're defined. +- **Look at your lineage graph** to see how models are connected. +- **Talk to teams** about what sort of separation is naturally existing right now. - Are there various domains people are focused on? - Are there various sizes, shapes, and sources of data that get handled separately (such as click event data)? - Are there people focused on separate levels of transformation, such as landing and staging data or building marts? @@ -20,10 +20,12 @@ Let's examine an outline of steps to start implementing a dbt Mesh in your organ Once you have a sense of some initial groupings, implement group and access permissions within a project. -- Incrementally start building your jobs based on these groups (we would recommend in parallel to your production jobs until you’re sure about them) to feel out that you’ve drawn the lines in the right place. +- TODO: Dave +- **Validate these groups by incrementally migrating your jobs** to be based on them. We would recommend in parallel to your production jobs until you’re sure about them. This will help you feel out if you’ve drawn the lines in the right place. ## Do the splits -- When you’ve confirmed the right groups, use `dbt-meshify` to pull chunks out into their own projects. - - Do _one_ group at a time, using the groups as your selectors. - - Do _not_ refactor as you migrate, however tempting that may be. Focus on getting 1-to-1 parity and log any issues you find in doing the migration for later. Once you’ve fully landed the project then you can start optimizing it for its new life as part of the mesh. +- When you’ve **confirmed the right groups** it's time to split the projects out. +- Once again, **use `dbt-meshify`** to pull chunks out into their own projects. + - **Do _one_ group at a time**, using the groups as your selectors. + - **Do _not_ refactor as you migrate**, however tempting that may be. Focus on getting 1-to-1 parity and log any issues you find in doing the migration for later. Once you’ve fully landed the project then you can start optimizing it for its new life as part of the mesh. From 6ad9dbdad1be9d64bd8c8b54d664843ded7d7424 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 29 Sep 2023 09:58:05 +0100 Subject: [PATCH 005/265] cloud cli changes --- .../docs/reference/node-selection/exclude.md | 10 +-- .../node-selection/graph-operators.md | 14 +-- .../docs/reference/node-selection/methods.md | 89 ++++++++++--------- .../node-selection/putting-it-together.md | 18 ++-- .../reference/node-selection/set-operators.md | 12 +-- .../docs/reference/node-selection/syntax.md | 40 +++++---- .../node-selection/test-selection-examples.md | 78 ++++++++-------- 7 files changed, 132 insertions(+), 129 deletions(-) diff --git a/website/docs/reference/node-selection/exclude.md b/website/docs/reference/node-selection/exclude.md index 9ad4bd1cc0e..d2c140d1bb5 100644 --- a/website/docs/reference/node-selection/exclude.md +++ b/website/docs/reference/node-selection/exclude.md @@ -7,19 +7,19 @@ sidebar_label: "Exclude" dbt provides an `--exclude` flag with the same semantics as `--select`. Models specified with the `--exclude` flag will be removed from the set of models selected with `--select`. ```bash -$ dbt run --select my_package.*+ --exclude my_package.a_big_model+ # select all models in my_package and their children except a_big_model and its children +dbt run --select "my_package".*+ --exclude "my_package.a_big_model+" # select all models in my_package and their children except a_big_model and its children ``` Exclude a specific resource by its name or lineage: ```bash # test -$ dbt test --exclude not_null_orders_order_id # test all models except the not_null_orders_order_id test -$ dbt test --exclude orders # test all models except tests associated with the orders model +dbt test --exclude "not_null_orders_order_id" # test all models except the not_null_orders_order_id test +dbt test --exclude "orders" # test all models except tests associated with the orders model # seed -$ dbt seed --exclude account_parent_mappings # load all seeds except account_parent_mappings +dbt seed --exclude "account_parent_mappings" # load all seeds except account_parent_mappings # snapshot -$ dbt snapshot --exclude snap_order_statuses # execute all snapshots except snap_order_statuses +dbt snapshot --exclude "snap_order_statuses" # execute all snapshots except snap_order_statuses ``` diff --git a/website/docs/reference/node-selection/graph-operators.md b/website/docs/reference/node-selection/graph-operators.md index 4fdc2f10628..8cba43e1b52 100644 --- a/website/docs/reference/node-selection/graph-operators.md +++ b/website/docs/reference/node-selection/graph-operators.md @@ -7,9 +7,9 @@ If placed at the front of the model selector, `+` will select all parents of the ```bash - $ dbt run --select my_model+ # select my_model and all children - $ dbt run --select +my_model # select my_model and all parents - $ dbt run --select +my_model+ # select my_model, and all of its parents and children +dbt run --select "my_model+" # select my_model and all children +dbt run --select "+my_model" # select my_model and all parents +dbt run --select "+my_model+" # select my_model, and all of its parents and children ``` @@ -20,9 +20,9 @@ to step through. ```bash - $ dbt run --select my_model+1 # select my_model and its first-degree children - $ dbt run --select 2+my_model # select my_model, its first-degree parents, and its second-degree parents ("grandparents") - $ dbt run --select 3+my_model+4 # select my_model, its parents up to the 3rd degree, and its children down to the 4th degree +dbt run --select "my_model+1" # select my_model and its first-degree children +dbt run --select "2+my_model" # select my_model, its first-degree parents, and its second-degree parents ("grandparents") +dbt run --select "3+my_model+4" # select my_model, its parents up to the 3rd degree, and its children down to the 4th degree ``` @@ -32,5 +32,5 @@ The `@` operator is similar to `+`, but will also include _the parents of the ch ```bash -$ dbt run --models @my_model # select my_model, its children, and the parents of its children +dbt run --models @my_model # select my_model, its children, and the parents of its children ``` diff --git a/website/docs/reference/node-selection/methods.md b/website/docs/reference/node-selection/methods.md index 2647f3416a3..6a9c64f3616 100644 --- a/website/docs/reference/node-selection/methods.md +++ b/website/docs/reference/node-selection/methods.md @@ -34,8 +34,8 @@ The `tag:` method is used to select models that match a specified [tag](/referen ```bash - $ dbt run --select tag:nightly # run all models with the `nightly` tag - ``` +dbt run --select "tag:nightly" # run all models with the `nightly` tag +``` ### The "source" method @@ -43,22 +43,22 @@ The `source` method is used to select models that select from a specified [sourc ```bash - $ dbt run --select source:snowplow+ # run all models that select from Snowplow sources - ``` +dbt run --select "source:snowplow+" # run all models that select from Snowplow sources +``` ### The "resource_type" method Use the `resource_type` method to select nodes of a particular type (`model`, `test`, `exposure`, and so on). This is similar to the `--resource-type` flag used by the [`dbt ls` command](/reference/commands/list). ```bash - $ dbt build --select resource_type:exposure # build all resources upstream of exposures - $ dbt list --select resource_type:test # list all tests in your project - ``` +dbt build --select "resource_type:exposure" # build all resources upstream of exposures +dbt list --select "resource_type:test" # list all tests in your project +``` Note: This method doesn't work for sources, so use the [`--resource-type`](/reference/commands/list) option of the list command instead: ```bash - $ dbt list --resource-type source - ``` +dbt list --resource-type source +``` ### The "path" method The `path` method is used to select models/sources defined at or under a specific path. @@ -69,12 +69,12 @@ selectors unambiguous. ```bash # These two selectors are equivalent - dbt run --select path:models/staging/github - dbt run --select models/staging/github + dbt run --select "path:models/staging/github" + dbt run --select "models/staging/github" # These two selectors are equivalent - dbt run --select path:models/staging/github/stg_issues.sql - dbt run --select models/staging/github/stg_issues.sql + dbt run --select "path:models/staging/github/stg_issues.sql" + dbt run --select "models/staging/github/stg_issues.sql" ``` @@ -85,9 +85,9 @@ The `file` method can be used to select a model by its filename, including the f ```bash # These are equivalent -dbt run --select file:some_model.sql -dbt run --select some_model.sql -dbt run --select some_model +dbt run --select "file:some_model.sql" +dbt run --select "some_model.sql" +dbt run --select "some_model" ``` @@ -96,10 +96,10 @@ dbt run --select some_model The `fqn` method is used to select nodes based off their "fully qualified names" (FQN) within the dbt graph. The default output of [`dbt list`](/reference/commands/list) is a listing of FQN. -``` -dbt run --select fqn:some_model -dbt run --select fqn:your_project.some_model -dbt run --select fqn:some_package.some_other_model +```bash +dbt run --select "fqn:some_model" +dbt run --select "fqn:your_project.some_model" +dbt run --select "fqn:some_package.some_other_model" ``` ### The "package" method @@ -111,10 +111,10 @@ selectors unambiguous. ```bash # These three selectors are equivalent - dbt run --select package:snowplow - dbt run --select snowplow - dbt run --select snowplow.* - ``` + dbt run --select "package:snowplow" + dbt run --select "snowplow" + dbt run --select "snowplow.*" +``` ### The "config" method @@ -124,10 +124,10 @@ The `config` method is used to select models that match a specified [node config ```bash - $ dbt run --select config.materialized:incremental # run all models that are materialized incrementally - $ dbt run --select config.schema:audit # run all models that are created in the `audit` schema - $ dbt run --select config.cluster_by:geo_country # run all models clustered by `geo_country` - ``` +dbt run --select "config.materialized:incremental" # run all models that are materialized incrementally +dbt run --select "config.schema:audit" # run all models that are created in the `audit` schema +dbt run --select "config.cluster_by:geo_country" # run all models clustered by `geo_country` +``` @@ -135,7 +135,8 @@ The `config` method is used to select models that match a specified [node config While most config values are strings, you can also use the `config` method to match boolean configs, dictionary keys, and values in lists. For example, given a model with the following configurations: -``` + +```bash {{ config( materialized = 'incremental', unique_key = ['column_a', 'column_b'], @@ -148,10 +149,10 @@ select ... You can select using any of the following: ```bash -$ dbt ls -s config.materialized:incremental -$ dbt ls -s config.unique_key:column_a -$ dbt ls -s config.grants.select:reporter -$ dbt ls -s config.transient:true +dbt ls -s config.materialized:incremental +dbt ls -s config.unique_key:column_a +dbt ls -s config.grants.select:reporter +dbt ls -s config.transient:true ``` @@ -162,10 +163,10 @@ The `test_type` method is used to select tests based on their type, `singular` o - ```bash - $ dbt test --select test_type:generic # run all generic tests - $ dbt test --select test_type:singular # run all singular tests - ``` +```bash +dbt test --select "test_type:generic" # run all generic tests +dbt test --select "test_type:singular" # run all singular tests +``` ### The "test_name" method @@ -176,10 +177,10 @@ that defines it. For more information about how generic tests are defined, read ```bash - $ dbt test --select test_name:unique # run all instances of the `unique` test - $ dbt test --select test_name:equality # run all instances of the `dbt_utils.equality` test - $ dbt test --select test_name:range_min_max # run all instances of a custom schema test defined in the local project, `range_min_max` - ``` +dbt test --select "test_name:unique" # run all instances of the `unique` test +dbt test --select "test_name:equality" # run all instances of the `dbt_utils.equality` test +dbt test --select "test_name:range_min_max" # run all instances of a custom schema test defined in the local project, `range_min_max` +``` ### The "state" method @@ -204,9 +205,9 @@ The `state` method is used to select nodes by comparing them against a previous ```bash - $ dbt test --select state:new # run all tests on new models + and new tests on old models - $ dbt run --select state:modified # run all models that have been modified - $ dbt ls --select state:modified # list all modified nodes (not just models) +dbt test --select "state:new " # run all tests on new models + and new tests on old models +dbt run --select "state:modified" # run all models that have been modified +dbt ls --select "state:modified" # list all modified nodes (not just models) ``` diff --git a/website/docs/reference/node-selection/putting-it-together.md b/website/docs/reference/node-selection/putting-it-together.md index 8faf02e6cc9..aad4dd703cd 100644 --- a/website/docs/reference/node-selection/putting-it-together.md +++ b/website/docs/reference/node-selection/putting-it-together.md @@ -4,16 +4,16 @@ title: "Putting it together" ```bash - $ dbt run --select my_package.*+ # select all models in my_package and their children - $ dbt run --select +some_model+ # select some_model and all parents and children +dbt run --select "my_package.*+" # select all models in my_package and their children +dbt run --select "+some_model+" # select some_model and all parents and children - $ dbt run --select tag:nightly+ # select "nightly" models and all children - $ dbt run --select +tag:nightly+ # select "nightly" models and all parents and children +dbt run --select "tag:nightly+" # select "nightly" models and all children +dbt run --select "+tag:nightly+" # select "nightly" models and all parents and children - $ dbt run --select @source:snowplow # build all models that select from snowplow sources, plus their parents +dbt run --select "@source:snowplow" # build all models that select from snowplow sources, plus their parents - $ dbt test --select config.incremental_strategy:insert_overwrite,test_name:unique # execute all `unique` tests that select from models using the `insert_overwrite` incremental strategy - ``` +dbt test --select "config.incremental_strategy:insert_overwrite,test_name:unique" # execute all `unique` tests that select from models using the `insert_overwrite` incremental strategy +``` @@ -22,8 +22,8 @@ and feed exports, while _excluding_ the biggest incremental models (and one othe ```bash - $ dbt run --select @source:snowplow,tag:nightly models/export --exclude package:snowplow,config.materialized:incremental export_performance_timing - ``` +dbt run --select "@source:snowplow,tag:nightly models/export" --exclude package:snowplow,config.materialized:incremental export_performance_timing +``` This command selects all models that: diff --git a/website/docs/reference/node-selection/set-operators.md b/website/docs/reference/node-selection/set-operators.md index 7d6b6c2411c..af399b9cad5 100644 --- a/website/docs/reference/node-selection/set-operators.md +++ b/website/docs/reference/node-selection/set-operators.md @@ -11,7 +11,7 @@ Run snowplow_sessions, all ancestors of snowplow_sessions, fct_orders, and all a ```bash - $ dbt run --select +snowplow_sessions +fct_orders +dbt run --select "+snowplow_sessions +fct_orders" ``` ### Intersections @@ -22,15 +22,15 @@ Run all the common ancestors of snowplow_sessions and fct_orders: ```bash - $ dbt run --select +snowplow_sessions,+fct_orders - ``` +dbt run --select "+snowplow_sessions,+fct_orders" +``` Run all the common descendents of stg_invoices and stg_accounts: ```bash - $ dbt run --select stg_invoices+,stg_accounts+ +dbt run --select "stg_invoices+,stg_accounts+" ``` @@ -38,5 +38,5 @@ Run models that are in the marts/finance subdirectory *and* tagged nightly: ```bash - $ dbt run --select marts.finance,tag:nightly - ``` +dbt run --select "marts.finance,tag:nightly" +``` diff --git a/website/docs/reference/node-selection/syntax.md b/website/docs/reference/node-selection/syntax.md index 7c165b0f4ff..be98d8859fe 100644 --- a/website/docs/reference/node-selection/syntax.md +++ b/website/docs/reference/node-selection/syntax.md @@ -24,6 +24,8 @@ We use the terms " By default, `dbt run` executes _all_ of the models in the dependency graph; `dbt seed` creates all seeds, `dbt snapshot` performs every snapshot. The `--select` flag is used to specify a subset of nodes to execute. +To follow [POSIX standards](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) and make things easier to understand, we recommend CLI users to quote unions/intersections passed to "multi-option" parameters. Not using quotes might not work reliably on all operating systems, terminals, and user interfaces. For example, `dbt run --select "my_dbt_project_name"` runs all models in your project. + ### How does selection work? 1. dbt gathers all the resources that are matched by one or more of the `--select` criteria, in the order of selection methods (e.g. `tag:`), then graph operators (e.g. `+`), then finally set operators ([unions](/reference/node-selection/set-operators#unions), [intersections](/reference/node-selection/set-operators#intersections), [exclusions](/reference/node-selection/exclude)). @@ -51,28 +53,28 @@ Examples: ```bash - $ dbt run --select my_dbt_project_name # runs all models in your project - $ dbt run --select my_dbt_model # runs a specific model - $ dbt run --select path.to.my.models # runs all models in a specific directory - $ dbt run --select my_package.some_model # run a specific model in a specific package - $ dbt run --select tag:nightly # run models with the "nightly" tag - $ dbt run --select path/to/models # run models contained in path/to/models - $ dbt run --select path/to/my_model.sql # run a specific model by its path +dbt run --select "my_dbt_project_name" # runs all models in your project +dbt run --select "my_dbt_model" # runs a specific model +dbt run --select "path.to.my.models" # runs all models in a specific directory +dbt run --select "my_package.some_model" # run a specific model in a specific package +dbt run --select "tag:nightly" # run models with the "nightly" tag +dbt run --select "path/to/models" # run models contained in path/to/models +dbt run --select "path/to/my_model.sql" # run a specific model by its path ``` dbt supports a shorthand language for defining subsets of nodes. This language uses the characters `+`, `@`, `*`, and `,`. ```bash - # multiple arguments can be provided to --select - $ dbt run --select my_first_model my_second_model +# multiple arguments can be provided to --select + dbt run --select "my_first_model my_second_model" - # these arguments can be projects, models, directory paths, tags, or sources - $ dbt run --select tag:nightly my_model finance.base.* +# these arguments can be projects, models, directory paths, tags, or sources +dbt run --select "tag:nightly my_model finance.base.*" - # use methods and intersections for more complex selectors - $ dbt run --select path:marts/finance,tag:nightly,config.materialized:table - ``` +# use methods and intersections for more complex selectors +dbt run --select "path:marts/finance,tag:nightly,config.materialized:table" +``` As your selection logic gets more complex, and becomes unwieldly to type out as command-line arguments, consider using a [yaml selector](/reference/node-selection/yaml-selectors). You can use a predefined definition with the `--selector` flag. @@ -150,7 +152,7 @@ After issuing one of the above commands, you can reference the results by adding ```bash # You can also set the DBT_ARTIFACT_STATE_PATH environment variable instead of the --state flag. -$ dbt run --select result: --defer --state path/to/prod/artifacts +dbt run --select "result: --defer --state path/to/prod/artifacts" ``` The available options depend on the resource (node) type: @@ -169,7 +171,7 @@ The available options depend on the resource (node) type: The state and result selectors can also be combined in a single invocation of dbt to capture errors from a previous run OR any new or modified models. ```bash -$ dbt run --select result:+ state:modified+ --defer --state ./ +dbt run --select "result:+ state:modified+ --defer --state ./" ``` ### Fresh rebuilds @@ -183,7 +185,7 @@ As example: ```bash # Command step order dbt source freshness -dbt build --select source_status:fresher+ +dbt build --select "source_status:fresher+" ``` @@ -202,6 +204,6 @@ After issuing one of the above commands, you can reference the source freshness ```bash # You can also set the DBT_ARTIFACT_STATE_PATH environment variable instead of the --state flag. -$ dbt source freshness # must be run again to compare current to previous state -$ dbt build --select source_status:fresher+ --state path/to/prod/artifacts +dbt source freshness # must be run again to compare current to previous state +dbt build --select "source_status:fresher+" --state path/to/prod/artifacts ``` diff --git a/website/docs/reference/node-selection/test-selection-examples.md b/website/docs/reference/node-selection/test-selection-examples.md index 52439d95d97..17b0f48de1e 100644 --- a/website/docs/reference/node-selection/test-selection-examples.md +++ b/website/docs/reference/node-selection/test-selection-examples.md @@ -19,14 +19,14 @@ Run generic tests only: ```bash - $ dbt test --select test_type:generic + dbt test --select "test_type:generic" ``` Run singular tests only: ```bash - $ dbt test --select test_type:singular + dbt test --select "test_type:singular" ``` In both cases, `test_type` checks a property of the test itself. These are forms of "direct" test selection. @@ -87,8 +87,8 @@ By default, a test will run when ANY parent is selected; we call this "eager" in In this mode, any test that depends on unbuilt resources will raise an error. ```shell -$ dbt test --select orders -$ dbt build --select orders +dbt test --select "orders" +dbt build --select "orders" ``` @@ -102,8 +102,8 @@ It will only include tests whose references are each within the selected nodes. Put another way, it will prevent tests from running if one or more of its parents is unselected. ```shell -$ dbt test --select orders --indirect-selection=cautious -$ dbt build --select orders --indirect-selection=cautious +dbt test --select "orders" --indirect-selection=cautious +dbt build --select "orders" --indirect-selection=cautious ``` @@ -122,8 +122,8 @@ By default, a test will run when ANY parent is selected; we call this "eager" in In this mode, any test that depends on unbuilt resources will raise an error. ```shell -$ dbt test --select orders -$ dbt build --select orders +dbt test --select "orders" +dbt build --select "orders" ``` @@ -137,8 +137,8 @@ It will only include tests whose references are each within the selected nodes. Put another way, it will prevent tests from running if one or more of its parents is unselected. ```shell -$ dbt test --select orders --indirect-selection=cautious -$ dbt build --select orders --indirect-selection=cautious +dbt test --select "orders" --indirect-selection=cautious +dbt build --select "orders" --indirect-selection=cautious ``` @@ -152,8 +152,8 @@ It will only include tests whose references are each within the selected nodes ( This is useful in the same scenarios as "cautious", but also includes when a test depends on a model **and** a direct ancestor of that model (like confirming an aggregation has the same totals as its input). ```shell -$ dbt test --select orders --indirect-selection=buildable -$ dbt build --select orders --indirect-selection=buildable +dbt test --select "orders" --indirect-selection=buildable +dbt build --select "orders" --indirect-selection=buildable ``` @@ -172,8 +172,8 @@ By default, a test will run when ANY parent is selected; we call this "eager" in In this mode, any test that depends on unbuilt resources will raise an error. ```shell -$ dbt test --select orders -$ dbt build --select orders +dbt test --select "orders" +dbt build --select "orders" ``` @@ -187,8 +187,8 @@ It will only include tests whose references are each within the selected nodes. Put another way, it will prevent tests from running if one or more of its parents is unselected. ```shell -$ dbt test --select orders --indirect-selection=cautious -$ dbt build --select orders --indirect-selection=cautious +dbt test --select "orders" --indirect-selection=cautious +dbt build --select "orders" --indirect-selection=cautious ``` @@ -202,8 +202,8 @@ It will only include tests whose references are each within the selected nodes ( This is useful in the same scenarios as "cautious", but also includes when a test depends on a model **and** a direct ancestor of that model (like confirming an aggregation has the same totals as its input). ```shell -$ dbt test --select orders --indirect-selection=buildable -$ dbt build --select orders --indirect-selection=buildable +dbt test --select "orders" --indirect-selection=buildable +dbt build --select "orders" --indirect-selection=buildable ``` @@ -213,8 +213,8 @@ $ dbt build --select orders --indirect-selection=buildable This mode will only include tests whose references are each within the selected nodes and will ignore all tests from attached nodes. ```shell -$ dbt test --select orders --indirect-selection=empty -$ dbt build --select orders --indirect-selection=empty +dbt test --select "orders" --indirect-selection=empty +dbt build --select "orders" --indirect-selection=empty ``` @@ -234,22 +234,22 @@ The following examples should feel somewhat familiar if you're used to executing ```bash # Run tests on a model (indirect selection) - $ dbt test --select customers + dbt test --select "customers" # Run tests on all models in the models/staging/jaffle_shop directory (indirect selection) - $ dbt test --select staging.jaffle_shop + dbt test --select "staging.jaffle_shop" # Run tests downstream of a model (note this will select those tests directly!) - $ dbt test --select stg_customers+ + dbt test --select "stg_customers+" # Run tests upstream of a model (indirect selection) - $ dbt test --select +stg_customers + dbt test --select "+stg_customers" # Run tests on all models with a particular tag (direct + indirect) - $ dbt test --select tag:my_model_tag + dbt test --select "tag:my_model_tag" # Run tests on all models with a particular materialization (indirect selection) - $ dbt test --select config.materialized:table + dbt test --select "config.materialized:table" ``` @@ -258,16 +258,16 @@ The following examples should feel somewhat familiar if you're used to executing ```bash # tests on all sources - $ dbt test --select source:* + dbt test --select "source:*" # tests on one source - $ dbt test --select source:jaffle_shop + dbt test --select "source:jaffle_shop" # tests on one source table - $ dbt test --select source:jaffle_shop.customers + dbt test --select "source:jaffle_shop.customers" # tests on everything _except_ sources - $ dbt test --exclude source:* + dbt test --exclude "source:*" ``` ### More complex selection @@ -276,10 +276,10 @@ Through the combination of direct and indirect selection, there are many ways to ```bash - $ dbt test --select assert_total_payment_amount_is_positive # directly select the test by name - $ dbt test --select payments,test_type:singular # indirect selection, v1.2 - $ dbt test --select payments,test_type:data # indirect selection, v0.18.0 - $ dbt test --select payments --data # indirect selection, earlier versions + dbt test --select "assert_total_payment_amount_is_positive" # directly select the test by name + dbt test --select "payments,test_type:singular" # indirect selection, v1.2 + dbt test --select "payments,test_type:data" # indirect selection, v0.18.0 + dbt test --select "payments" --data # indirect selection, earlier versions ``` @@ -288,13 +288,13 @@ Through the combination of direct and indirect selection, there are many ways to ```bash # Run tests on all models with a particular materialization - $ dbt test --select config.materialized:table + dbt test --select "config.materialized:table" # Run tests on all seeds, which use the 'seed' materialization - $ dbt test --select config.materialized:seed + dbt test --select "config.materialized:seed" # Run tests on all snapshots, which use the 'snapshot' materialization - $ dbt test --select config.materialized:snapshot + dbt test --select "config.materialized:snapshot" ``` Note that this functionality may change in future versions of dbt. @@ -322,7 +322,7 @@ models: ```bash - $ dbt test --select tag:my_column_tag + dbt test --select "tag:my_column_tag" ``` Currently, tests "inherit" tags applied to columns, sources, and source tables. They do _not_ inherit tags applied to models, seeds, or snapshots. In all likelihood, those tests would still be selected indirectly, because the tag selects its parent. This is a subtle distinction, and it may change in future versions of dbt. @@ -350,5 +350,5 @@ models: ```bash - $ dbt test --select tag:my_test_tag + dbt test --select "tag:my_test_tag" ``` From 44a98e723386d1b4a18a28342ec794df8a9675f0 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 29 Sep 2023 13:50:14 +0100 Subject: [PATCH 006/265] issue 4040 --- website/docs/reference/commands/clone.md | 2 +- website/docs/reference/commands/compile.md | 4 +- website/docs/reference/commands/list.md | 3 +- website/docs/reference/commands/seed.md | 2 +- website/docs/reference/commands/show.md | 8 ++-- website/docs/reference/commands/source.md | 4 +- website/docs/reference/commands/test.md | 12 ++--- .../docs/reference/node-selection/defer.md | 16 +++---- .../docs/reference/node-selection/methods.md | 46 +++++++++---------- .../node-selection/putting-it-together.md | 2 +- .../state-comparison-caveats.md | 14 +++--- .../node-selection/yaml-selectors.md | 19 +++++--- 12 files changed, 69 insertions(+), 63 deletions(-) diff --git a/website/docs/reference/commands/clone.md b/website/docs/reference/commands/clone.md index a3c8bb236c7..ea3e570447d 100644 --- a/website/docs/reference/commands/clone.md +++ b/website/docs/reference/commands/clone.md @@ -21,7 +21,7 @@ The `clone` command is useful for: dbt clone --state path/to/artifacts # clone one_specific_model of my models from specified state to my target schema(s) -dbt clone --select one_specific_model --state path/to/artifacts +dbt clone --select "one_specific_model" --state path/to/artifacts # clone all of my models from specified state to my target schema(s) and recreate all pre-existing relations in the current target dbt clone --state path/to/artifacts --full-refresh diff --git a/website/docs/reference/commands/compile.md b/website/docs/reference/commands/compile.md index ed403d2af32..cde65b7c6b6 100644 --- a/website/docs/reference/commands/compile.md +++ b/website/docs/reference/commands/compile.md @@ -29,7 +29,7 @@ This will log the compiled SQL to the terminal, in addition to writing to the `t For example: ```bash -dbt compile --select stg_payments +dbt compile --select "stg_payments" dbt compile --inline "select * from {{ ref('raw_orders') }}" ``` @@ -37,7 +37,7 @@ returns the following: ```bash -dbt compile --select stg_orders +dbt compile --select "stg_orders" 21:17:09 Running with dbt=1.5.0-b5 21:17:09 Found 5 models, 20 tests, 0 snapshots, 0 analyses, 425 macros, 0 operations, 3 seed files, 0 sources, 0 exposures, 0 metrics, 0 groups 21:17:09 diff --git a/website/docs/reference/commands/list.md b/website/docs/reference/commands/list.md index 6084b3dec70..fc2b5d60c57 100644 --- a/website/docs/reference/commands/list.md +++ b/website/docs/reference/commands/list.md @@ -8,6 +8,7 @@ id: "list" The `dbt ls` command lists resources in your dbt project. It accepts selector arguments that are similar to those provided in [dbt run](/reference/commands/run). `dbt list` is an alias for `dbt ls`. While `dbt ls` will read your [connection profile](/docs/core/connect-data-platform/connection-profiles) to resolve [`target`](/reference/dbt-jinja-functions/target)-specific logic, this command will not connect to your database or run any queries. ### Usage + ``` dbt ls [--resource-type {model,source,seed,snapshot,metric,test,exposure,analysis,default,all}] @@ -85,7 +86,7 @@ $ dbt ls --select snowplow.* --output json --output-keys "name resource_type des ``` -$ dbt ls --select snowplow.* --output json --output-keys name resource_type description +$ dbt ls --select snowplow.* --output json --output-keys "name resource_type description" {"name": "snowplow_events", "description": "This is a pretty cool model", ...} {"name": "snowplow_page_views", "description": "This model is even cooler", ...} ... diff --git a/website/docs/reference/commands/seed.md b/website/docs/reference/commands/seed.md index 8a410706842..d0cd199ea12 100644 --- a/website/docs/reference/commands/seed.md +++ b/website/docs/reference/commands/seed.md @@ -12,7 +12,7 @@ The `dbt seed` command will load `csv` files located in the `seed-paths` directo Specific seeds can be run using the `--select` flag to `dbt seed`. Example: ``` -$ dbt seed --select country_codes +$ dbt seed --select "country_codes" Found 2 models, 3 tests, 0 archives, 0 analyses, 53 macros, 0 operations, 2 seed files 14:46:15 | Concurrency: 1 threads (target='dev') diff --git a/website/docs/reference/commands/show.md b/website/docs/reference/commands/show.md index 5bdcfacc1e8..a0e5d68c83f 100644 --- a/website/docs/reference/commands/show.md +++ b/website/docs/reference/commands/show.md @@ -16,7 +16,7 @@ The results of the preview query are not materialized in the data warehouse, or Example: ``` -dbt show --select model_name.sql +dbt show --select "model_name.sql" ``` or ``` @@ -26,7 +26,7 @@ dbt show --inline "select * from {{ ref('model_name') }}" The following is an example of `dbt show` output for a model named `stg_orders`: ```bash -dbt show --select stg_orders +dbt show --select "stg_orders" 21:17:38 Running with dbt=1.5.0-b5 21:17:38 Found 5 models, 20 tests, 0 snapshots, 0 analyses, 425 macros, 0 operations, 3 seed files, 0 sources, 0 exposures, 0 metrics, 0 groups 21:17:38 @@ -46,7 +46,7 @@ dbt show --select stg_orders For example, if you've just built a model that has a failing test, you can quickly preview the test failures right in the terminal, to find values of `id` that are duplicated: ```bash -$ dbt build -s my_model_with_duplicates +$ dbt build -s "my_model_with_duplicates" 13:22:47 Running with dbt=1.5.0 ... 13:22:48 Completed with 1 error and 0 warnings: @@ -58,7 +58,7 @@ $ dbt build -s my_model_with_duplicates 13:22:48 13:22:48 Done. PASS=1 WARN=0 ERROR=1 SKIP=0 TOTAL=2 -$ dbt show -s unique_my_model_with_duplicates_id +$ dbt show -s "unique_my_model_with_duplicates_id" 13:22:53 Running with dbt=1.5.0 13:22:53 Found 4 models, 2 tests, 0 snapshots, 0 analyses, 309 macros, 0 operations, 0 seed files, 0 sources, 0 exposures, 0 metrics, 0 groups 13:22:53 diff --git a/website/docs/reference/commands/source.md b/website/docs/reference/commands/source.md index b29bf7dadc6..697ae2b5fcc 100644 --- a/website/docs/reference/commands/source.md +++ b/website/docs/reference/commands/source.md @@ -20,10 +20,10 @@ By default, `dbt source freshness` will calculate freshness information for all ```bash # Snapshot freshness for all Snowplow tables: -$ dbt source freshness --select source:snowplow +$ dbt source freshness --select "source:snowplow" # Snapshot freshness for a particular source table: -$ dbt source freshness --select source:snowplow.event +$ dbt source freshness --select "source:snowplow.event" ``` ### Configuring source freshness output diff --git a/website/docs/reference/commands/test.md b/website/docs/reference/commands/test.md index a1a63729568..c050d82a0ab 100644 --- a/website/docs/reference/commands/test.md +++ b/website/docs/reference/commands/test.md @@ -10,22 +10,22 @@ The tests to run can be selected using the `--select` flag discussed [here](/ref ```bash # run tests for one_specific_model -dbt test --select one_specific_model +dbt test --select "one_specific_model" # run tests for all models in package -dbt test --select some_package.* +dbt test --select "some_package.*" # run only tests defined singularly -dbt test --select test_type:singular +dbt test --select "test_type:singular" # run only tests defined generically -dbt test --select test_type:generic +dbt test --select "test_type:generic" # run singular tests limited to one_specific_model -dbt test --select one_specific_model,test_type:singular +dbt test --select "one_specific_model,test_type:singular" # run generic tests limited to one_specific_model -dbt test --select one_specific_model,test_type:generic +dbt test --select "one_specific_model,test_type:generic" ``` For more information on writing tests, see the [Testing Documentation](/docs/build/tests). diff --git a/website/docs/reference/node-selection/defer.md b/website/docs/reference/node-selection/defer.md index e13a4f6648a..03c3b2aac12 100644 --- a/website/docs/reference/node-selection/defer.md +++ b/website/docs/reference/node-selection/defer.md @@ -17,16 +17,16 @@ It is possible to use separate state for `state:modified` and `--defer`, by pass ### Usage ```shell -$ dbt run --select [...] --defer --state path/to/artifacts -$ dbt test --select [...] --defer --state path/to/artifacts +dbt run --select [...] --defer --state path/to/artifacts +dbt test --select [...] --defer --state path/to/artifacts ``` ```shell -$ dbt run --models [...] --defer --state path/to/artifacts -$ dbt test --models [...] --defer --state path/to/artifacts +dbt run --models [...] --defer --state path/to/artifacts +dbt test --models [...] --defer --state path/to/artifacts ``` @@ -101,7 +101,7 @@ I want to test my changes. Nothing exists in my development schema, `dev_alice`. ```shell -$ dbt run --select model_b +dbt run --select "model_b" ``` @@ -128,7 +128,7 @@ Unless I had previously run `model_a` into this development environment, `dev_al ```shell -$ dbt run --select model_b --defer --state prod-run-artifacts +dbt run --select "model_b" --defer --state prod-run-artifacts ``` @@ -186,7 +186,7 @@ models: ```shell -dbt test --select model_b +dbt test --select "model_b" ``` @@ -211,7 +211,7 @@ The `relationships` test requires both `model_a` and `model_b`. Because I did no ```shell -dbt test --select model_b --defer --state prod-run-artifacts +dbt test --select "model_b" --defer --state prod-run-artifacts ``` diff --git a/website/docs/reference/node-selection/methods.md b/website/docs/reference/node-selection/methods.md index 6a9c64f3616..b829a11ec79 100644 --- a/website/docs/reference/node-selection/methods.md +++ b/website/docs/reference/node-selection/methods.md @@ -237,18 +237,18 @@ The `exposure` method is used to select parent resources of a specified [exposur ```bash - $ dbt run --select +exposure:weekly_kpis # run all models that feed into the weekly_kpis exposure - $ dbt test --select +exposure:* # test all resources upstream of all exposures - $ dbt ls --select +exposure:* --resource-type source # list all sources upstream of all exposures - ``` +dbt run --select "+exposure:weekly_kpis" # run all models that feed into the weekly_kpis exposure +dbt test --select "+exposure:*" # test all resources upstream of all exposures +dbt ls --select "+exposure:*" --resource-type source # list all sources upstream of all exposures +``` ### The "metric" method The `metric` method is used to select parent resources of a specified [metric](/docs/build/metrics). Use in conjunction with the `+` operator. ```bash -$ dbt build --select +metric:weekly_active_users # build all resources upstream of weekly_active_users metric -$ dbt ls --select +metric:* --resource-type source # list all source tables upstream of all metrics +dbt build --select "+metric:weekly_active_users" # build all resources upstream of weekly_active_users metric +dbt ls --select "+metric:*" --resource-type source # list all source tables upstream of all metrics ``` ### The "result" method @@ -256,10 +256,10 @@ $ dbt ls --select +metric:* --resource-type source # list all source tables The `result` method is related to the `state` method described above and can be used to select resources based on their result status from a prior run. Note that one of the dbt commands [`run`, `test`, `build`, `seed`] must have been performed in order to create the result on which a result selector operates. You can use `result` selectors in conjunction with the `+` operator. ```bash -$ dbt run --select result:error --state path/to/artifacts # run all models that generated errors on the prior invocation of dbt run -$ dbt test --select result:fail --state path/to/artifacts # run all tests that failed on the prior invocation of dbt test -$ dbt build --select 1+result:fail --state path/to/artifacts # run all the models associated with failed tests from the prior invocation of dbt build -$ dbt seed --select result:error --state path/to/artifacts # run all seeds that generated errors on the prior invocation of dbt seed. +dbt run --select "result:error" --state path/to/artifacts # run all models that generated errors on the prior invocation of dbt run +dbt test --select "result:fail" --state path/to/artifacts # run all tests that failed on the prior invocation of dbt test +dbt build --select "1+result:fail" --state path/to/artifacts # run all the models associated with failed tests from the prior invocation of dbt build +dbt seed --select "result:error" --state path/to/artifacts # run all seeds that generated errors on the prior invocation of dbt seed. ``` ### The "source_status" method @@ -277,8 +277,8 @@ After issuing one of the above commands, you can reference the source freshness ```bash # You can also set the DBT_ARTIFACT_STATE_PATH environment variable instead of the --state flag. -$ dbt source freshness # must be run again to compare current to previous state -$ dbt build --select source_status:fresher+ --state path/to/prod/artifacts +dbt source freshness # must be run again to compare current to previous state +dbt build --select "source_status:fresher+" --state path/to/prod/artifacts ``` @@ -287,8 +287,8 @@ $ dbt build --select source_status:fresher+ --state path/to/prod/artifacts ```bash # You can also set the DBT_STATE environment variable instead of the --state flag. -$ dbt source freshness # must be run again to compare current to previous state -$ dbt build --select source_status:fresher+ --state path/to/prod/artifacts +dbt source freshness # must be run again to compare current to previous state +dbt build --select "source_status:fresher+" --state path/to/prod/artifacts ``` @@ -306,9 +306,9 @@ Supported in v1.5 or newer. The `group` method is used to select models defined within a [group](/reference/resource-configs/group). - ```bash - dbt run --select group:finance # run all models that belong to the finance group. - ``` +```bash +dbt run --select "group:finance" # run all models that belong to the finance group. +``` @@ -325,9 +325,9 @@ Supported in v1.5 or newer. The `access` method selects models based on their [access](/reference/resource-properties/access) property. ```bash -dbt list --select access:public # list all public models -dbt list --select access:private # list all private models -dbt list --select access:protected # list all protected models +dbt list --select "access:public" # list all public models +dbt list --select "access:private" # list all private models +dbt list --select "access:protected" # list all protected models ``` @@ -345,11 +345,11 @@ Supported in v1.5 or newer. The `version` method selects [versioned models](/docs/collaborate/govern/model-versions) based on their [version identifier](/reference/resource-properties/versions) and [latest version](/reference/resource-properties/latest_version). ```bash -dbt list --select version:latest # only 'latest' versions -dbt list --select version:prerelease # versions newer than the 'latest' version +dbt list --select "version:latest" # only 'latest' versions +dbt list --select "version:prerelease" # versions newer than the 'latest' version dbt list --select version:old # versions older than the 'latest' version -dbt list --select version:none # models that are *not* versioned +dbt list --select "version:none" # models that are *not* versioned ``` diff --git a/website/docs/reference/node-selection/putting-it-together.md b/website/docs/reference/node-selection/putting-it-together.md index aad4dd703cd..48fc5188b32 100644 --- a/website/docs/reference/node-selection/putting-it-together.md +++ b/website/docs/reference/node-selection/putting-it-together.md @@ -22,7 +22,7 @@ and feed exports, while _excluding_ the biggest incremental models (and one othe ```bash -dbt run --select "@source:snowplow,tag:nightly models/export" --exclude package:snowplow,config.materialized:incremental export_performance_timing +dbt run --select "@source:snowplow,tag:nightly models/export" --exclude "package:snowplow,config.materialized:incremental export_performance_timing" ``` diff --git a/website/docs/reference/node-selection/state-comparison-caveats.md b/website/docs/reference/node-selection/state-comparison-caveats.md index baeeb7e4c75..73947c80a66 100644 --- a/website/docs/reference/node-selection/state-comparison-caveats.md +++ b/website/docs/reference/node-selection/state-comparison-caveats.md @@ -27,8 +27,8 @@ The command `dbt test -s state:modified` will include both: As long as you're adding or changing tests at the same time that you're adding or changing the resources (models, seeds, snapshots) they select from, all should work the way you expect with "simple" state selection: ```shell -$ dbt run -s state:modified -$ dbt test -s state:modified +dbt run -s "state:modified" +dbt test -s "state:modified" ``` This can get complicated, however. If you add a new test without modifying its underlying model, or add a test that selects from a new model and an old unmodified one, you may need to test a model without having first run it. @@ -36,8 +36,8 @@ This can get complicated, however. If you add a new test without modifying its u In v0.18.0, you needed to handle this by building the unmodified models needed for modified tests: ```shell -$ dbt run -s state:modified @state:modified,1+test_type:data -$ dbt test -s state:modified +dbt run -s "state:modified @state:modified,1+test_type:data" +dbt test -s "state:modified" ``` In v0.19.0, dbt added support for deferring upstream references when testing. If a test selects from a model that doesn't exist as a database object in your current environment, dbt will look to the other environment instead—the one defined in your state manifest. This enables you to use "simple" state selection without risk of query failure, but it may have some surprising consequences for tests with multiple parents. For instance, if you have a `relationships` test that depends on one modified model and one unmodified model, the test query will select from data "across" two different environments. If you limit or sample your data in development and CI, it may not make much sense to test for referential integrity, knowing there's a good chance of mismatch. @@ -45,8 +45,8 @@ In v0.19.0, dbt added support for deferring upstream references when testing. If If you're a frequent user of `relationships` tests or data tests, or frequently find yourself adding tests without modifying their underlying models, consider tweaking the selection criteria of your CI job. For instance: ```shell -$ dbt run -s state:modified -$ dbt test -s state:modified --exclude test_name:relationships +dbt run -s "state:modified" +dbt test -s "state:modified" --exclude "test_name:relationships" ``` ### False positives @@ -58,7 +58,7 @@ State comparison works by identifying discrepancies between two manifests. Thos dbt will do its best to capture *only* changes that are the result of modifications made in development. In projects with intricate env-aware logic, dbt will err on the side of running too many models (i.e. false positives). Over the next several versions of dbt, we're working on: - iterative improvements to dbt's built-in detective abilities -- better options for more complex projects, in the form of more-specific subselectors (see [this issue](https://github.com/dbt-labs/dbt-core/issues/2704)) +- better options for more complex projects, in the form of more-specific sub-selectors (see [this issue](https://github.com/dbt-labs/dbt-core/issues/2704)) State comparison is now able to detect env-aware config in `dbt_project.yml`. For instance, this target-based config would register as a modification in v0.18.0, but in v0.19.0 it no longer will: diff --git a/website/docs/reference/node-selection/yaml-selectors.md b/website/docs/reference/node-selection/yaml-selectors.md index 78342e32779..1e3f8d8d1e2 100644 --- a/website/docs/reference/node-selection/yaml-selectors.md +++ b/website/docs/reference/node-selection/yaml-selectors.md @@ -34,6 +34,7 @@ Each `definition` is comprised of one or more arguments, which can be one of the Use the `union` and `intersection` operator-equivalent keywords to organize multiple arguments. ### CLI-style + ```yml definition: 'tag:nightly' @@ -42,6 +43,7 @@ definition: This simple syntax supports use of the `+`, `@`, and `*` [graph](/reference/node-selection/graph-operators) operators, but it does not support [set](/reference/node-selection/set-operators) operators or `exclude`. ### Key-value + ```yml definition: tag: nightly @@ -317,7 +319,7 @@ selectors: Then in our job definition: ```bash -$ dbt run --selector nightly_diet_snowplow +dbt run --selector nightly_diet_snowplow ``` ## Default @@ -325,6 +327,7 @@ $ dbt run --selector nightly_diet_snowplow Selectors may define a boolean `default` property. If a selector has `default: true`, dbt will use this selector's criteria when tasks do not define their own selection criteria. Let's say we define a default selector that only selects resources defined in our root project: + ```yml selectors: - name: root_project_only @@ -338,16 +341,18 @@ selectors: ``` If I run an "unqualified" command, dbt will use the selection criteria defined in `root_project_only`—that is, dbt will only build / freshness check / generate compiled SQL for resources defined in my root project. + ``` -$ dbt build -$ dbt source freshness -$ dbt docs generate +dbt build +dbt source freshness +dbt docs generate ``` If I run a command that defines its own selection criteria (via `--select`, `--exclude`, or `--selector`), dbt will ignore the default selector and use the flag criteria instead. It will not try to combine the two. -``` -$ dbt run --select model_a -$ dbt run --exclude model_a + +```bash +dbt run --select "model_a" +dbt run --exclude model_a ``` Only one selector may set `default: true` for a given invocation; otherwise, dbt will return an error. You may use a Jinja expression to adjust the value of `default` depending on the environment, however: From 25eb6924896cb00644c7c8b5827328319c3f39c4 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 29 Sep 2023 13:56:51 +0100 Subject: [PATCH 007/265] clarify --- website/docs/reference/node-selection/syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/reference/node-selection/syntax.md b/website/docs/reference/node-selection/syntax.md index be98d8859fe..cb8496259d1 100644 --- a/website/docs/reference/node-selection/syntax.md +++ b/website/docs/reference/node-selection/syntax.md @@ -24,7 +24,7 @@ We use the terms " By default, `dbt run` executes _all_ of the models in the dependency graph; `dbt seed` creates all seeds, `dbt snapshot` performs every snapshot. The `--select` flag is used to specify a subset of nodes to execute. -To follow [POSIX standards](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) and make things easier to understand, we recommend CLI users to quote unions/intersections passed to "multi-option" parameters. Not using quotes might not work reliably on all operating systems, terminals, and user interfaces. For example, `dbt run --select "my_dbt_project_name"` runs all models in your project. +To follow [POSIX standards](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) and make things easier to understand, we recommend CLI users use quotes when passing arguments to the `--select` or `--exclude` option (including single or multiple space-delimited, or comma-delimited arguments). Not using quotes might not work reliably on all operating systems, terminals, and user interfaces. For example, `dbt run --select "my_dbt_project_name"` runs all models in your project. ### How does selection work? From ba9c889295be1ee769924ff21f2e980ca117207a Mon Sep 17 00:00:00 2001 From: Greg McKeon Date: Tue, 3 Oct 2023 00:14:25 -0400 Subject: [PATCH 008/265] update cloud cli docs with windows, new instructions --- .../docs/docs/cloud/cloud-cli-installation.md | 148 ++++++++++++------ 1 file changed, 101 insertions(+), 47 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 68a8ef365d6..2d1ee153675 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -1,107 +1,161 @@ --- -title: Installing the dbt Cloud CLI (Alpha) +title: Installing the dbt Cloud CLI (Beta) id: cloud-cli-installation description: "Instructions for installing and configuring dbt Cloud CLI" --- -:::warning Alpha functionality +:::warning Beta functionality -The following installation instructions are for the dbt Cloud CLI, currently in Alpha (actively in development and being tested). - -These instructions are not intended for general audiences at this time. +The following installation instructions are for the dbt Cloud CLI, currently in Beta (actively in development). ::: -## Installing dbt Cloud CLI +## About the Cloud CLI + +The Cloud CLI lets your run dbt commands against your dbt Cloud development environment from your local command line. + +dbt commands are run against dbt Cloud's infrastructure and benefit from: + +* Secure credential storage in the dbt Cloud platform. +* Automatic deferral of build artifacts to your Cloud project's production environment. +* Speedier, lower cost builds. +* Significant platform improvements, to be released over the coming months. + +After installing, you invoke the Cloud CLI the same way you would call dbt Core. For example, to compile a project using dbt Cloud: + +```bash +dbt deps +dbt compile +``` + + +## Installing the dbt Cloud CLI + +:::caution + +For compatibility, both the Cloud CLI and dbt Core are invoked by running `dbt`. This can cause a path conflict, where your OS invokes either the Cloud CLI or dbt Core depending on it's presence in your $PATH environment variable. -### Install and update with Brew on MacOS (recommended) +If you have dbt Core installed locally, ensure that you either deactivate your Python environment or uninstall before proceeding. Alternatively, advanced users can modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both the Cloud CLI and dbt Core together. -1. Install the dbt Cloud CLI: +You can always uninstall the Cloud CLI to return to using dbt Core. +::: + +### Install and update with Brew - MacOS + +1. Verify that there is no conflict with a dbt Core installation on your system. + +```bash +which dbt +# Should return "dbt not found" +``` + +If the dbt help text appears, deactivate your current dbt Core install. + +2. Install the dbt Cloud CLI with Brew: ```bash brew tap dbt-labs/dbt-cli brew install dbt-cloud-cli ``` -2. Verify the installation by requesting your homebrew installation path (not your dbt core installs). If the `which dbt` command returns nothing, then you should modify your PATH in `~.zshrc` or create an alias. +3. Verify the installation. If the help text does not indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and do not have a version of dbt globally installed. ```bash -which dbt dbt --help ``` -### Manually install (Windows and Linux) +#### Updating your dbt Cloud installation - MacOS -1. Download the latest release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). -2. Add the `dbt` executable to your path. -3. Move to a directory with a dbt project, and create a `dbt_cloud.yml` file containing your `project-id` from dbt Cloud. -4. Invoke `dbt --help` from your terminal to see a list of supported commands. +Run `brew upgrade dbt-cloud-cli` to update the Cloud CLI. During the beta period, we recommend updating before filing a bug report, as the API is subject to breaking changes! -#### Updating your dbt Cloud installation (Windows + Linux) -Follow the same process in [Installing dbt Cloud CLI](#manually-install-windows-only) and replace the existing `dbt` executable with the new one. You should not have to go through the security steps again. +### Manually install - Windows -## Setting up the CLI +1. Download the latest Windows release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). -The following instructions are for setting up the dbt Cloud CLI. +2. Extract the `dbt-cloud-cli.exe` file into the same folder as your dbt project. -1. Ensure that you have created a project in [dbt Cloud](https://cloud.getdbt.com/). +:::info -2. Ensure that your personal [development credentials](https://cloud.getdbt.com/settings/profile/credentials) are set on the project. +Advanced users can configure multiple projects to use the same Cloud CLI executeable by placing the executeable in the Program Files folder and [adding the Cloud CLI executeable to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). -3. Navigate to [your profile](https://cloud.getdbt.com/settings/profile) and enable the **Beta** flag under **Experimental Features.** +Note that if you are using VS Code, you'll need to restart your IDE to pick up modified environment variables. +::: -4. Create an environment variable with your [dbt Cloud API key](https://cloud.getdbt.com/settings/profile#api-access): +#### Updating your dbt Cloud installation - Windows -```bash -vi ~/.zshrc +Follow the same process in [Installing dbt Cloud CLI](#manually-install-windows-only) and replace the existing `dbt` executable with the new one. During the beta period, we recommend updating before filing a bug report, as the API is subject to breaking changes! -# dbt Cloud CLI -export DBT_CLOUD_API_KEY="1234" # Replace "1234" with your API key -``` +### Manually install - Linux + +1. Download the latest Linux release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). -5. Load the new environment variable. Note: You may need to reactivate your Python virtual environment after sourcing your shell's dot file. Alternatively, restart your shell instead of sourcing the shell's dot file +2. Extract the `dbt-cloud-cli` binary to the same folder as your dbt project. ```bash -source ~/.zshrc +tar -xf dbt_0.29.9_linux_amd64.tar.gz +dbt --version ``` -6. Navigate to a dbt project +:::info -```bash -cd ~/dbt-projects/jaffle_shop -``` +Advanced users can configure multiple projects to use the same Cloud CLI executeable by adding the Cloud CLI executeable to their PATH environment variable in their shell profile. -7. Create a `dbt_cloud.yml` in the root project directory. The file is required to have a `project-id` field with a valid [project ID](#glossary). Enter the following commands: +::: + +3. Verify the installation. If the help text does not indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and do not have a version of dbt globally installed. ```bash -pwd # Input -/Users/user/dbt-projects/jaffle_shop # Output +dbt --help ``` +## Setting up the CLI - MacOS and Linux + +Once installed, we need to configure the Cloud CLI to connect to a dbt Cloud project. + +1. Ensure that you have created a project in [dbt Cloud](https://cloud.getdbt.com/). + +2. Ensure that your personal [development credentials](https://cloud.getdbt.com/settings/profile/credentials) are set on the project. The Cloud CLI will use these credentials, stored securely in dbt Cloud, to communicate with your data warehouse. + +3. Navigate to [your profile](https://cloud.getdbt.com/settings/profile) and enable the **Beta** flag under **Experimental Features.** + +4. Create an environment variable with your [dbt Cloud API key](https://cloud.getdbt.com/settings/profile#api-access): + +On MacOS, Linux, or Windows add an environment variable: ```bash -echo "project-id: ''" > dbt_cloud.yml # Input +export DBT_CLOUD_API_KEY="1234" # Replace 1234 with your API key ``` +In Powershell, add an environment variable: + +Note that this variable will be reset if you restart your shell. To add an environment variable permanently, add a system environment variable in your platform. + +5. Navigate to a dbt project + ```bash -cat dbt_cloud.yml # Input -project-id: '123456' # Output +cd ~/dbt-projects/jaffle_shop ``` -You can find your project ID by selecting your project and clicking on **Develop** in the navigation bar. Your project ID is the number in the URL: https://cloud.getdbt.com/develop/26228/projects/PROJECT_ID. +6. In your `dbt_project.yml` file, ensure there is a section titled "Cloud". This section is required to have a `project-id` field with a valid [project ID](#glossary). -If `dbt_cloud.yml` already exists, edit the file, and verify the project ID field uses a valid project ID. +```yaml +# dbt_project.yml +name: -#### Upgrade the CLI with Brew +version: +... -```bash -brew update -brew upgrade dbt-cloud-cli +cloud: + project-id: PROJECT_ID ``` +You can find your project ID by navigating to dbt Cloud, selecting your project and clicking on **Develop** in the navigation bar. Your project ID is the number in the URL: https://cloud.getdbt.com/develop/26228/projects/PROJECT_ID. + ## Using dbt Cloud CLI -**Coming soon** +The dbt Cloud CLI is a drop-in replacement for dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. Since this is still invoking dbt under the hood, you'll still need to run `dbt deps`, followed by the same model build commands you typically run. + +Have features you'd like to see in the Cloud CLI? Reach out to us on Slack! ## Glossary From 3effd024677a244a635471e0e339e5e4911fa371 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 3 Oct 2023 11:47:53 +0100 Subject: [PATCH 009/265] address issue 4014 --- website/docs/reference/dbt_project.yml.md | 79 +++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/website/docs/reference/dbt_project.yml.md b/website/docs/reference/dbt_project.yml.md index c706b57a73b..85df9feaab3 100644 --- a/website/docs/reference/dbt_project.yml.md +++ b/website/docs/reference/dbt_project.yml.md @@ -11,6 +11,8 @@ By default, dbt will look for `dbt_project.yml` in your current working director By default, dbt will look for `dbt_project.yml` in your current working directory and its parents, but you can set a different directory using the `--project-dir` flag or the `DBT_PROJECT_DIR` environment variable. +Starting from dbt v1.5 and higher, you can specify your dbt Cloud project ID in the `dbt_project.yml` file using the `dbt-cloud` config, which doesn't require validation or storage in the project config class. To find your project ID, check your dbt Cloud project URL, such as `https://cloud.getdbt.com/11/projects/123456`, where the project ID is `123456`. + The following is a list of all available configurations in the `dbt_project.yml` file. @@ -19,6 +21,9 @@ The following is a list of all available configurations in the `dbt_project.yml` dbt uses YAML in a few different places. If you're new to YAML, it would be worth taking the time to learn how arrays, dictionaries and strings are represented. ::: + + + ```yml @@ -48,6 +53,9 @@ dbt uses YAML in a few different places. If you're new to YAML, it would be wort [require-dbt-version](/reference/project-configs/require-dbt-version): version-range | [version-range] +[dbt-cloud](/docs/cloud/cloud-cli-installation): + project-id: your_project_id + [quoting](/reference/project-configs/quoting): database: true | false schema: true | false @@ -79,6 +87,77 @@ vars: search_order: [packagename] [restrict-access](/docs/collaborate/govern/model-access): true | false + ``` + + + + + + +```yml +[name](/reference/project-configs/name): string + +[config-version](/reference/project-configs/config-version): 2 +[version](/reference/project-configs/version): version + +[profile](/reference/project-configs/profile): profilename + +[model-paths](/reference/project-configs/model-paths): [directorypath] +[seed-paths](/reference/project-configs/seed-paths): [directorypath] +[test-paths](/reference/project-configs/test-paths): [directorypath] +[analysis-paths](/reference/project-configs/analysis-paths): [directorypath] +[macro-paths](/reference/project-configs/macro-paths): [directorypath] +[snapshot-paths](/reference/project-configs/snapshot-paths): [directorypath] +[docs-paths](/reference/project-configs/docs-paths): [directorypath] +[asset-paths](/reference/project-configs/asset-paths): [directorypath] + +[target-path](/reference/project-configs/target-path): directorypath +[log-path](/reference/project-configs/log-path): directorypath +[packages-install-path](/reference/project-configs/packages-install-path): directorypath + +[clean-targets](/reference/project-configs/clean-targets): [directorypath] + +[query-comment](/reference/project-configs/query-comment): string + +[require-dbt-version](/reference/project-configs/require-dbt-version): version-range | [version-range] + +[quoting](/reference/project-configs/quoting): + database: true | false + schema: true | false + identifier: true | false + +models: + [](/reference/model-configs) + +seeds: + [](/reference/seed-configs) + +snapshots: + [](/reference/snapshot-configs) + +sources: + [](source-configs) + +tests: + [](/reference/test-configs) + +vars: + [](/docs/build/project-variables) + +[on-run-start](/reference/project-configs/on-run-start-on-run-end): sql-statement | [sql-statement] +[on-run-end](/reference/project-configs/on-run-start-on-run-end): sql-statement | [sql-statement] + +[dispatch](/reference/project-configs/dispatch-config): + - macro_namespace: packagename + search_order: [packagename] + +[restrict-access](/docs/collaborate/govern/model-access): true | false + +``` + + + + From 000f6879a8a07ed8aad7b9d15b4bc494e56ab029 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 3 Oct 2023 11:48:21 +0100 Subject: [PATCH 010/265] concise --- website/docs/reference/dbt_project.yml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/reference/dbt_project.yml.md b/website/docs/reference/dbt_project.yml.md index 85df9feaab3..b1fa061462c 100644 --- a/website/docs/reference/dbt_project.yml.md +++ b/website/docs/reference/dbt_project.yml.md @@ -54,7 +54,7 @@ dbt uses YAML in a few different places. If you're new to YAML, it would be wort [require-dbt-version](/reference/project-configs/require-dbt-version): version-range | [version-range] [dbt-cloud](/docs/cloud/cloud-cli-installation): - project-id: your_project_id + project-id: project_id [quoting](/reference/project-configs/quoting): database: true | false From f91cc4cf042cddebb581c878c4edd65612a37e52 Mon Sep 17 00:00:00 2001 From: Greg McKeon Date: Tue, 3 Oct 2023 10:09:51 -0400 Subject: [PATCH 011/265] address review feedback --- website/docs/docs/cloud/cloud-cli-installation.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 2d1ee153675..845b05c162a 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -73,18 +73,20 @@ Run `brew upgrade dbt-cloud-cli` to update the Cloud CLI. During the beta perio 1. Download the latest Windows release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). -2. Extract the `dbt-cloud-cli.exe` file into the same folder as your dbt project. +2. Extract the `dbt.exe` executeable into the same folder as your dbt project. :::info Advanced users can configure multiple projects to use the same Cloud CLI executeable by placing the executeable in the Program Files folder and [adding the Cloud CLI executeable to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). -Note that if you are using VS Code, you'll need to restart your IDE to pick up modified environment variables. +Note that if you are using VS Code, you'll need to restart it to pick up modified environment variables. ::: +3. Verify the installation by running `./dbt --help` from the command line. If the help text does not indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and do not have a version of dbt globally installed. + #### Updating your dbt Cloud installation - Windows -Follow the same process in [Installing dbt Cloud CLI](#manually-install-windows-only) and replace the existing `dbt` executable with the new one. During the beta period, we recommend updating before filing a bug report, as the API is subject to breaking changes! +Follow the same process in [Installing dbt Cloud CLI](#manually-install---windows) and replace the existing `dbt.exe` executable with the new one. During the beta period, we recommend updating before filing a bug report, as the API is subject to breaking changes! ### Manually install - Linux @@ -94,7 +96,7 @@ Follow the same process in [Installing dbt Cloud CLI](#manually-install-windows- ```bash tar -xf dbt_0.29.9_linux_amd64.tar.gz -dbt --version +./dbt --version ``` :::info @@ -106,7 +108,7 @@ Advanced users can configure multiple projects to use the same Cloud CLI execute 3. Verify the installation. If the help text does not indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and do not have a version of dbt globally installed. ```bash -dbt --help +./dbt --help ``` ## Setting up the CLI - MacOS and Linux From df5cf97e654de90f4213f7fa06eae66fae421533 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 3 Oct 2023 15:49:18 +0100 Subject: [PATCH 012/265] updates --- .../docs/docs/cloud/cloud-cli-installation.md | 118 ++++++------------ .../docs/docs/cloud/configure-cloud-cli.md | 65 ++++++++++ .../dbt-cloud-ide/develop-in-the-cloud.md | 13 +- website/sidebars.js | 36 ++++-- 4 files changed, 129 insertions(+), 103 deletions(-) create mode 100644 website/docs/docs/cloud/configure-cloud-cli.md diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 2d1ee153675..ed5eb616e84 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -1,18 +1,17 @@ --- -title: Installing the dbt Cloud CLI (Beta) +title: Install dbt Cloud CLI id: cloud-cli-installation description: "Instructions for installing and configuring dbt Cloud CLI" +pagination_next: "docs/cloud/configure-cloud-cli" --- -:::warning Beta functionality +:::info Beta functionality -The following installation instructions are for the dbt Cloud CLI, currently in Beta (actively in development). +The dbt Cloud CLI is currently in [public beta](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). ::: -## About the Cloud CLI - -The Cloud CLI lets your run dbt commands against your dbt Cloud development environment from your local command line. +dbt Cloud natively supports developing using a command line (CLI), empowering team members to contribute with enhanced flexibility and collaboration. The dbt Cloud CLI allows you to run dbt commands against your dbt Cloud development environment from your local command line. dbt commands are run against dbt Cloud's infrastructure and benefit from: @@ -21,55 +20,53 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Speedier, lower cost builds. * Significant platform improvements, to be released over the coming months. -After installing, you invoke the Cloud CLI the same way you would call dbt Core. For example, to compile a project using dbt Cloud: +Note, the dbt Cloud CLI is a separate tool powered by [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud-features). It differs from [dbt Core](https://github.com/dbt-labs/dbt-core), which provides dbt through its open-source command-line tool. + +## Install dbt Cloud CLI + +This document guides you on installing and using the dbt Cloud CLI. After installation, you can use it to run [dbt commands](/reference/dbt-commands) just like with dbt Core. For example, execute the following to compile a project using dbt Cloud: ```bash dbt deps dbt compile ``` - -## Installing the dbt Cloud CLI - :::caution -For compatibility, both the Cloud CLI and dbt Core are invoked by running `dbt`. This can cause a path conflict, where your OS invokes either the Cloud CLI or dbt Core depending on it's presence in your $PATH environment variable. +For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running `dbt`. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). -If you have dbt Core installed locally, ensure that you either deactivate your Python environment or uninstall before proceeding. Alternatively, advanced users can modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both the Cloud CLI and dbt Core together. +If you have dbt Core installed locally, ensure that you deactivate your Python environment or uninstall it using `pip uninstall dbt` before proceeding. Alternatively, advanced users can modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both dbt Cloud CLI and dbt Core together. You can always uninstall the Cloud CLI to return to using dbt Core. ::: -### Install and update with Brew - MacOS +### Install with Homebrew (MacOS) -1. Verify that there is no conflict with a dbt Core installation on your system. +Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in your code editor or command line terminal. +1. Run the following command to verify that there is no conflict with a dbt Core installation on your system: + ```bash which dbt -# Should return "dbt not found" ``` - -If the dbt help text appears, deactivate your current dbt Core install. - -2. Install the dbt Cloud CLI with Brew: + - This should return a `dbt not found`. If the dbt help text appears, use `pip uninstall dbt` to deactivate your dbt Core from your machine. + +2. Install the dbt Cloud CLI with Homebrew: ```bash brew tap dbt-labs/dbt-cli brew install dbt-cloud-cli ``` -3. Verify the installation. If the help text does not indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and do not have a version of dbt globally installed. +3. Run the following command to verify the installation: ```bash dbt --help ``` -#### Updating your dbt Cloud installation - MacOS - -Run `brew upgrade dbt-cloud-cli` to update the Cloud CLI. During the beta period, we recommend updating before filing a bug report, as the API is subject to breaking changes! - - -### Manually install - Windows +- If the help text doesn't show you're using the dbt Cloud CLI, ensure you've deactivated pyenv or venv and don't have a global dbt version installed + +### Install manually (Windows) 1. Download the latest Windows release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). @@ -77,16 +74,12 @@ Run `brew upgrade dbt-cloud-cli` to update the Cloud CLI. During the beta perio :::info -Advanced users can configure multiple projects to use the same Cloud CLI executeable by placing the executeable in the Program Files folder and [adding the Cloud CLI executeable to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). +Advanced users can configure multiple projects to use the same dbt Cloud CLI by placing the executeable in the Program Files folder and [adding it to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). -Note that if you are using VS Code, you'll need to restart your IDE to pick up modified environment variables. +If you're using VS Code, remember to restart your IDE to pick up modified environment variables. ::: -#### Updating your dbt Cloud installation - Windows - -Follow the same process in [Installing dbt Cloud CLI](#manually-install-windows-only) and replace the existing `dbt` executable with the new one. During the beta period, we recommend updating before filing a bug report, as the API is subject to breaking changes! - -### Manually install - Linux +### Install manually (Linux) 1. Download the latest Linux release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). @@ -99,66 +92,25 @@ dbt --version :::info -Advanced users can configure multiple projects to use the same Cloud CLI executeable by adding the Cloud CLI executeable to their PATH environment variable in their shell profile. +Advanced users can configure multiple projects to use the same Cloud CLI executeable by adding it to their PATH environment variable in their shell profile. ::: -3. Verify the installation. If the help text does not indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and do not have a version of dbt globally installed. +3. Run the following command to verify the installation: ```bash dbt --help ``` -## Setting up the CLI - MacOS and Linux - -Once installed, we need to configure the Cloud CLI to connect to a dbt Cloud project. - -1. Ensure that you have created a project in [dbt Cloud](https://cloud.getdbt.com/). - -2. Ensure that your personal [development credentials](https://cloud.getdbt.com/settings/profile/credentials) are set on the project. The Cloud CLI will use these credentials, stored securely in dbt Cloud, to communicate with your data warehouse. - -3. Navigate to [your profile](https://cloud.getdbt.com/settings/profile) and enable the **Beta** flag under **Experimental Features.** - -4. Create an environment variable with your [dbt Cloud API key](https://cloud.getdbt.com/settings/profile#api-access): - -On MacOS, Linux, or Windows add an environment variable: -```bash -export DBT_CLOUD_API_KEY="1234" # Replace 1234 with your API key -``` - -In Powershell, add an environment variable: - -Note that this variable will be reset if you restart your shell. To add an environment variable permanently, add a system environment variable in your platform. - -5. Navigate to a dbt project - -```bash -cd ~/dbt-projects/jaffle_shop -``` - -6. In your `dbt_project.yml` file, ensure there is a section titled "Cloud". This section is required to have a `project-id` field with a valid [project ID](#glossary). - -```yaml -# dbt_project.yml -name: - -version: -... - -cloud: - project-id: PROJECT_ID -``` - -You can find your project ID by navigating to dbt Cloud, selecting your project and clicking on **Develop** in the navigation bar. Your project ID is the number in the URL: https://cloud.getdbt.com/develop/26228/projects/PROJECT_ID. +- If the help text doesn't show you're using the dbt Cloud CLI, ensure you've deactivated pyenv or venv and don't have a global dbt version installed -## Using dbt Cloud CLI +## Update dbt Cloud CLI -The dbt Cloud CLI is a drop-in replacement for dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. Since this is still invoking dbt under the hood, you'll still need to run `dbt deps`, followed by the same model build commands you typically run. +The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the beta period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes -Have features you'd like to see in the Cloud CLI? Reach out to us on Slack! +#### Update with Homebrew (MacOS) -## Glossary +To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. +#### Update manually (Windows) -- **dbt cloud API key:** Your API key found by navigating to the **gear icon**, clicking **Profile Settings**, and scrolling down to **API**. -- **Project ID:** The ID of the dbt project you're working with. Can be retrieved from the dbt Cloud URL after a project has been selected, for example, `https://cloud.getdbt.com/deploy/{accountID}/projects/{projectID}` -- **Development credentials:** Your personal warehouse credentials for the project you’re working with. They can be set by selecting the project and entering them in dbt Cloud. Navigate to the **gear icon**, click **Profile Settings**, and click **Credentials** from the left-side menu. +To update, follow the same process explained in [Install manually (Windows)](#install-manually-windows) and replace the existing `dbt` executable with the new one. diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md new file mode 100644 index 00000000000..73d2a2c3a9b --- /dev/null +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -0,0 +1,65 @@ +--- +title: Configure dbt Cloud CLI +id: configure-cloud-cli +description: "Instructions on how to configure the dbt Cloud CLI" +--- + +:::info Beta functionality + +The dbt Cloud CLI is currently in [public beta](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). + +::: + + +## Prerequisites + +- You must set up a project in dbt Cloud. +- You must have your [personal development credentials](/docs/dbt-cloud-environments#set-developer-credentials) set for that project. The dbt Cloud CLI will use these credentials, stored securely in dbt Cloud, to communicate with your data platform. +- You must [enroll](/docs/dbt-versions/experimental-features) in the dbt Cloud beta features. + - To enroll, navigate to your **Profile Settings** and enable the **Beta** flag under **Experimental Features**. + + +## Configure the dbt Cloud CLI + +Once you install the dbt Cloud CLI, you need to configure the dbt Cloud CLI to connect to a dbt Cloud project. + +1. Ensure you meet the prerequisites above. +2. Create an environment variable with your [dbt Cloud API key](/docs/dbt-cloud-apis/user-tokens): + - On MacOS, Linux, or Windows add an environment variable: + + ```bash + export DBT_CLOUD_API_KEY="1234" # Replace 1234 with your API key + ``` + + - In Powershell, add an environment variable: IS THIS MISSING SOMETHING? + - Note that this variable resets if you restart your shell. To add an environment variable permanently, add a system environment variable in your platform. + +3. Navigate to a dbt project in your terminal: + +```bash +cd ~/dbt-projects/jaffle_shop +``` + +4. In your `dbt_project.yml` file, ensure there is a section titled "Cloud". This section is required to have a `project-id` field with a valid [project ID](#glossary). + +```yaml +# dbt_project.yml +name: + +version: +... + +#IS IT CLOUD OR DBT-CLOUD PER ISSUE https://github.com/dbt-labs/docs.getdbt.com/issues/4014 + +cloud: + project-id: PROJECT_ID +``` + +- To find your project ID, go to **Develop** in the navigation. Select the dbt Cloud project URL, such as `https://cloud.getdbt.com/develop/26228/projects123456`, where the project ID is `123456`. + + +## Using dbt Cloud CLI + +The dbt Cloud CLI is a drop-in replacement for dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. Since this is still invoking dbt under the hood, you'll still need to run `dbt deps`, followed by the same model build commands you typically run. + +Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). diff --git a/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md b/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md index c55e67cf93e..9cf6736562b 100644 --- a/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md +++ b/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md @@ -1,17 +1,16 @@ --- -title: "Develop in the IDE" +title: "About the dbt Cloud IDE" id: develop-in-the-cloud description: "Develop, test, run, and build in the Cloud IDE. With the Cloud IDE, you can compile dbt code into SQL and run it against your database directly" -sidebar_label: Develop in the IDE +sidebar_label: About the IDE tags: [IDE] +pagination_next: "docs/cloud/dbt-cloud-ide/ide-user-interface" --- The dbt Cloud integrated development environment (IDE) is a single interface for building, testing, running, and version-controlling dbt projects from your browser. With the Cloud IDE, you can compile dbt code into SQL and run it against your database directly. ## Prerequisites -To develop in the Cloud IDE, make sure you have the following: - - A [dbt Cloud account](https://cloud.getdbt.com/) and [Developer seat license](/docs/cloud/manage-access/seats-and-users) - A git repository set up and git provider must have `write` access enabled. See [Connecting your GitHub Account](/docs/cloud/git/connect-github) or [Importing a project by git URL](/docs/cloud/git/import-a-project-by-git-url) for detailed setup instructions - A dbt project connected to a [data platform](/docs/cloud/connect-data-platform/about-connections) @@ -24,9 +23,9 @@ To improve your experience using dbt Cloud, we suggest that you turn off ad bloc ::: -## Develop in the Cloud IDE +## Develop in the dbt Cloud IDE -The Cloud IDE is a powerful tool that can help streamline and govern your data platform development process. It offers a range of [editing features](/docs/cloud/dbt-cloud-ide/ide-user-interface#editing-features) that can help make your data platform development process faster and more efficient. Some of the editing features include: +The dbt Cloud IDE is a powerful tool that can help streamline and govern your data platform development process. It offers a range of [editing features](/docs/cloud/dbt-cloud-ide/ide-user-interface#editing-features) that can help make your data platform development process faster and more efficient. Some of the editing features include: - The IDE has syntax highlighting for SQL. This makes it easy to visually distinguish between different parts of your code. This helps prevent syntax errors and improve readability. - Use the IDE built-in auto-completion, which suggests table names, arguments, and column names as you type. This saves time and reduces the likelihood of typos or errors in your code. @@ -38,7 +37,7 @@ All of these [features](#cloud-ide-features) work together to create a powerful -## Cloud IDE features +## dbt Cloud IDE features The dbt Cloud IDE comes with [tips](/docs/cloud/dbt-cloud-ide/dbt-cloud-tips) and [features](/docs/cloud/dbt-cloud-ide/ide-user-interface) that make it easier for you to develop, build, compile, run, and test data models. diff --git a/website/sidebars.js b/website/sidebars.js index 8b162f67af3..84fefe4b6b6 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -117,26 +117,38 @@ const sidebarSettings = { }, // Supported Git providers { type: "category", - label: "Develop in the IDE", - link: { - type: "doc", - id: "docs/cloud/dbt-cloud-ide/develop-in-the-cloud", - }, + label: "Develop in dbt Cloud", items: [ - "docs/cloud/dbt-cloud-ide/ide-user-interface", - "docs/cloud/dbt-cloud-ide/lint-format", - "docs/cloud/dbt-cloud-ide/dbt-cloud-tips", + { + type: "category", + label: "dbt Cloud CLI (beta)", + link: { type: "doc", id: "docs/cloud/cloud-cli-installation" }, + items: [ + "docs/cloud/cloud-cli-installation", + "docs/cloud/configure-cloud-cli", + ], + }, + { + type: "category", + label: "dbt Cloud IDE", + link: { type: "doc", id: "docs/cloud/dbt-cloud-ide/develop-in-the-cloud" }, + items: [ + "docs/cloud/dbt-cloud-ide/develop-in-the-cloud", + "docs/cloud/dbt-cloud-ide/ide-user-interface", + "docs/cloud/dbt-cloud-ide/lint-format", + "docs/cloud/dbt-cloud-ide/dbt-cloud-tips", + ], + }, ], - }, // dbt Cloud IDE directory + }, // dbt Cloud develop directory { type: "category", label: "Secure your tenant", items: [ "docs/cloud/secure/about-privatelink", "docs/cloud/secure/snowflake-privatelink", - "docs/cloud/secure/databricks-privatelink", "docs/cloud/secure/redshift-privatelink", - "docs/cloud/secure/postgres-privatelink", + "docs/cloud/secure/databricks-privatelink", "docs/cloud/secure/ip-restrictions", ], }, // PrivateLink @@ -517,7 +529,6 @@ const sidebarSettings = { link: { type: "doc", id: "docs/dbt-cloud-apis/sl-api-overview" }, items: [ "docs/dbt-cloud-apis/sl-jdbc", - "docs/dbt-cloud-apis/sl-graphql", "docs/dbt-cloud-apis/sl-manifest", ], }, @@ -1205,7 +1216,6 @@ const sidebarSettings = { "community/resources/oss-expectations", "community/resources/oss-projects", "community/resources/contributor-license-agreements", - "community/resources/jobs-terms-and-conditions", "community/resources/speaking-at-a-meetup", ], }, From df951653e081953ab4d2d77a97fba2b1a3d807ee Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 3 Oct 2023 17:16:57 +0100 Subject: [PATCH 013/265] fold in Greg's feedback --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- website/docs/docs/cloud/configure-cloud-cli.md | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 72bd2900eb9..59ff2718794 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -87,7 +87,7 @@ Follow the same process in [Installing dbt Cloud CLI](#manually-install---window ### Manually install - Linux -1. Download the latest Linux release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). +1. Download the latest Linux release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). (Pick the file based on your CPU architecture) 2. Extract the `dbt-cloud-cli` binary to the same folder as your dbt project. diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 73d2a2c3a9b..b13bbf8629d 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -49,8 +49,6 @@ name: version: ... -#IS IT CLOUD OR DBT-CLOUD PER ISSUE https://github.com/dbt-labs/docs.getdbt.com/issues/4014 - cloud: project-id: PROJECT_ID ``` @@ -58,8 +56,8 @@ cloud: - To find your project ID, go to **Develop** in the navigation. Select the dbt Cloud project URL, such as `https://cloud.getdbt.com/develop/26228/projects123456`, where the project ID is `123456`. -## Using dbt Cloud CLI +## Use the dbt Cloud CLI -The dbt Cloud CLI is a drop-in replacement for dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. Since this is still invoking dbt under the hood, you'll still need to run `dbt deps`, followed by the same model build commands you typically run. +The dbt Cloud CLI shares the same set of commands as dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. Since this is still invoking dbt under the hood, you'll still need to run `dbt deps`, followed by the same model build commands you typically run. Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). From 79f153a262e4fc5f339ef811f27d03778375bb49 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 3 Oct 2023 17:42:56 +0100 Subject: [PATCH 014/265] update to dbt-cloud --- website/docs/docs/cloud/configure-cloud-cli.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index b13bbf8629d..714a9cf31d5 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -40,7 +40,7 @@ Once you install the dbt Cloud CLI, you need to configure the dbt Cloud CLI to c cd ~/dbt-projects/jaffle_shop ``` -4. In your `dbt_project.yml` file, ensure there is a section titled "Cloud". This section is required to have a `project-id` field with a valid [project ID](#glossary). +1. In your `dbt_project.yml` file, ensure there is a section titled `dbt-cloud`. This section is required to have a `project-id` field with a valid project ID. ```yaml # dbt_project.yml @@ -49,7 +49,7 @@ name: version: ... -cloud: +dbt-cloud: project-id: PROJECT_ID ``` From 72354fa5795b087d55087d92227be3b4c66b3fac Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 11:08:49 +0100 Subject: [PATCH 015/265] final tweaks --- .../docs/docs/cloud/cloud-cli-installation.md | 40 +++++++------------ .../docs/docs/cloud/configure-cloud-cli.md | 2 +- 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 59ff2718794..54463bf8acb 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -20,11 +20,17 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Speedier, lower cost builds. * Significant platform improvements, to be released over the coming months. -Note, the dbt Cloud CLI is a separate tool powered by [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud-features). It differs from [dbt Core](https://github.com/dbt-labs/dbt-core), which provides dbt through its open-source command-line tool. +The dbt Cloud CLI, powered by [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud-features), is distinct from [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source command-line tool for dbt. Both tools are command lines that use the same dbt commands, but the dbt Cloud CLI is tailored to run specifically on dbt Cloud's infrastructure. ## Install dbt Cloud CLI -This document guides you on installing and using the dbt Cloud CLI. After installation, you can use it to run [dbt commands](/reference/dbt-commands) just like with dbt Core. For example, execute the following to compile a project using dbt Cloud: +You can install the dbt Cloud CLI on the command line by using one of these methods: + +* [Install with Homebrew (MacOS)](#install-with-homebrew-macos)
+* [Install manually (Windows)](#install-manually-windows)
+* [Install manually (Linux)](#install-manually-linux)
+ +After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. For example, you can execute the following commands to compile a project using dbt Cloud: ```bash dbt deps @@ -49,7 +55,7 @@ Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in yo ```bash which dbt ``` - - This should return a `dbt not found`. If the dbt help text appears, use `pip uninstall dbt` to deactivate your dbt Core from your machine. + - This should return a `dbt not found`. If the dbt help text appears, use `pip uninstall dbt` to deactivate dbt Core from your machine. 2. Install the dbt Cloud CLI with Homebrew: @@ -58,13 +64,7 @@ brew tap dbt-labs/dbt-cli brew install dbt-cloud-cli ``` -3. Run the following command to verify the installation: - -```bash -dbt --help -``` - -- If the help text doesn't show you're using the dbt Cloud CLI, ensure you've deactivated pyenv or venv and don't have a global dbt version installed +3. Verify the installation by running `dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. ### Install manually (Windows) @@ -79,13 +79,9 @@ Advanced users can configure multiple projects to use the same dbt Cloud CLI by Note that if you are using VS Code, you'll need to restart it to pick up modified environment variables. ::: -3. Verify the installation by running `./dbt --help` from the command line. If the help text does not indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and do not have a version of dbt globally installed. +3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. -#### Updating your dbt Cloud installation - Windows - -Follow the same process in [Installing dbt Cloud CLI](#manually-install---windows) and replace the existing `dbt.exe` executable with the new one. During the beta period, we recommend updating before filing a bug report, as the API is subject to breaking changes! - -### Manually install - Linux +### Install manually (Linux) 1. Download the latest Linux release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). (Pick the file based on your CPU architecture) @@ -102,21 +98,15 @@ Advanced users can configure multiple projects to use the same Cloud CLI execute ::: -3. Run the following command to verify the installation: - -```bash -./dbt --help -``` - -- If the help text doesn't show you're using the dbt Cloud CLI, ensure you've deactivated pyenv or venv and don't have a global dbt version installed +3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. ## Update dbt Cloud CLI -The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the beta period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes +The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the beta period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. #### Update with Homebrew (MacOS) To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. #### Update manually (Windows) -To update, follow the same process explained in [Install manually (Windows)](#install-manually-windows) and replace the existing `dbt` executable with the new one. +To update, follow the same process explained in [Install manually (Windows)](#install-manually-windows) and replace the existing `dbt.exe` executable with the new one. diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 714a9cf31d5..cc94835f0a0 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -21,7 +21,7 @@ The dbt Cloud CLI is currently in [public beta](/docs/dbt-versions/product-lifec ## Configure the dbt Cloud CLI -Once you install the dbt Cloud CLI, you need to configure the dbt Cloud CLI to connect to a dbt Cloud project. +Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt Cloud project. 1. Ensure you meet the prerequisites above. 2. Create an environment variable with your [dbt Cloud API key](/docs/dbt-cloud-apis/user-tokens): From 67823e5227d18e47a90e72fc0cd214d5f710a69c Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 11:10:56 +0100 Subject: [PATCH 016/265] update numbers --- website/docs/docs/cloud/configure-cloud-cli.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index cc94835f0a0..e1bde59be2e 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -40,7 +40,7 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt cd ~/dbt-projects/jaffle_shop ``` -1. In your `dbt_project.yml` file, ensure there is a section titled `dbt-cloud`. This section is required to have a `project-id` field with a valid project ID. +4. In your `dbt_project.yml` file, ensure there is a section titled `dbt-cloud`. This section is required to have a `project-id` field with a valid project ID. ```yaml # dbt_project.yml @@ -53,7 +53,7 @@ dbt-cloud: project-id: PROJECT_ID ``` -- To find your project ID, go to **Develop** in the navigation. Select the dbt Cloud project URL, such as `https://cloud.getdbt.com/develop/26228/projects123456`, where the project ID is `123456`. +- To find your project ID, go to **Develop** in the navigation menu. Select the dbt Cloud project URL, such as `https://cloud.getdbt.com/develop/26228/projects123456`, where the project ID is `123456`. ## Use the dbt Cloud CLI From 19cc4ce4ca6da19427cf413ce315fec1455abcc9 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 11:16:52 +0100 Subject: [PATCH 017/265] add a next steps --- .../docs/docs/cloud/cloud-cli-installation.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 54463bf8acb..4901d3b381e 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -30,12 +30,6 @@ You can install the dbt Cloud CLI on the command line by using one of these meth * [Install manually (Windows)](#install-manually-windows)
* [Install manually (Linux)](#install-manually-linux)
-After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. For example, you can execute the following commands to compile a project using dbt Cloud: - -```bash -dbt deps -dbt compile -``` :::caution @@ -110,3 +104,13 @@ To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. #### Update manually (Windows) To update, follow the same process explained in [Install manually (Windows)](#install-manually-windows) and replace the existing `dbt.exe` executable with the new one. + + +## Next steps + +After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. For example, you can execute the following commands to compile a project using dbt Cloud: + +```bash +dbt deps +dbt compile +``` From f67d8f25cb95c8f920f1a8f7848e8e23ead91ef6 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 11:22:28 +0100 Subject: [PATCH 018/265] add card --- website/docs/docs/cloud/about-cloud/dbt-cloud-features.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md index f1d8b32cdb1..a900651cec0 100644 --- a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md +++ b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md @@ -15,9 +15,15 @@ dbt Cloud's [flexible plans](https://www.getdbt.com/pricing/) and features make + + Date: Wed, 4 Oct 2023 11:33:59 +0100 Subject: [PATCH 019/265] add overview page --- .../docs/docs/cloud/about-cloud-develop.md | 19 +++++++++++++++++++ website/sidebars.js | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 website/docs/docs/cloud/about-cloud-develop.md diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md new file mode 100644 index 00000000000..88066d4dcd4 --- /dev/null +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -0,0 +1,19 @@ +--- +title: About developing in dbt Cloud +id: about-cloud-develop +description: "Learn how to develop your dbt projects using dbt Cloud." +sidebar_label: "About developing in dbt Cloud" +pagination_next: "docs/cloud/cloud-cli-installation" +--- + +dbt Cloud offers a fast and reliable way to work on your dbt project. You can use it through an integrated development environment (IDE) in your browser or a dbt Cloud-powered command line interface (CLI): + +- **[dbt Cloud CLI](/docs/cloud/cloud-cli-installation)** — Allows you to develop and run dbt commands from your local command line or code editor against your dbt Cloud development environment. + - Note, the dbt Cloud CLI is distinct from [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source command-line tool for dbt. Both tools are command lines that use the same dbt commands, however, the dbt Cloud CLI is tailored to run specifically on dbt Cloud's infrastructure. + +- **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface (UI). + +This documentation section provides detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive setup guide, refer to our [quickstart guides](/quickstarts). + + + diff --git a/website/sidebars.js b/website/sidebars.js index 84fefe4b6b6..d27738c061a 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -118,7 +118,9 @@ const sidebarSettings = { { type: "category", label: "Develop in dbt Cloud", + link: { type: "doc", id: "docs/cloud/about-cloud-develop" }, items: [ + "docs/cloud/about-cloud-develop", { type: "category", label: "dbt Cloud CLI (beta)", From bda6e5d9ff1d9cee0dcb58b45de329781564a885 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 13:51:54 +0100 Subject: [PATCH 020/265] add cloud cli to relevant pages --- website/docs/docs/about-setup.md | 4 +- .../cloud/about-cloud/dbt-cloud-features.md | 53 ++++++++++--------- .../manage-access/cloud-seats-and-users.md | 1 + .../manage-access/self-service-permissions.md | 3 +- website/docs/docs/connect-adapters.md | 4 +- website/docs/docs/dbt-cloud-environments.md | 4 +- website/docs/docs/environments-in-dbt.md | 2 +- website/docs/docs/introduction.md | 5 +- website/docs/docs/supported-data-platforms.md | 4 +- website/docs/docs/trusted-adapters.md | 2 +- website/snippets/_adapters-trusted.md | 2 +- website/snippets/_adapters-verified.md | 25 +++++---- website/snippets/_cloud-environments-info.md | 10 ++-- 13 files changed, 62 insertions(+), 57 deletions(-) diff --git a/website/docs/docs/about-setup.md b/website/docs/docs/about-setup.md index 3fb868b8448..91c4ff05be8 100644 --- a/website/docs/docs/about-setup.md +++ b/website/docs/docs/about-setup.md @@ -7,7 +7,7 @@ sidebar_label: "About dbt setup" dbt compiles and runs your analytics code against your data platform, enabling you and your team to collaborate on a single source of truth for metrics, insights, and business definitions. There are two options for deploying dbt: -**dbt Cloud** runs dbt Core in a hosted (single or multi-tenant) environment with a browser-based interface. The intuitive UI will aid you in setting up the various components. dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring & alerting, and an integrated developer environment (IDE). +**dbt Cloud** runs dbt Core in a hosted (single or multi-tenant) environment with a browser-based interface. The intuitive UI will aid you in setting up the various components. dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring and alerting, an integrated development environment (IDE), and allows you to develop and run dbt commands from your local command line (CLI) or code editor. **dbt Core** is an open-source command line tool that can be installed locally in your environment, and communication with databases is facilitated through adapters. @@ -19,7 +19,7 @@ To begin configuring dbt now, select the option that is right for you. diff --git a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md index a900651cec0..c66f3322f3f 100644 --- a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md +++ b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md @@ -6,90 +6,91 @@ description: "Explore dbt Cloud's features and learn why dbt Cloud is the fastes hide_table_of_contents: true --- -dbt Cloud is the fastest and most reliable way to deploy dbt. Develop, test, schedule, document, and investigate data models all in one browser-based UI. In addition to providing a hosted architecture for running dbt across your organization, dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring & alerting, and an integrated development environment (IDE). +dbt Cloud is the fastest and most reliable way to deploy dbt. Develop, test, schedule, document, and investigate data models all in one browser-based UI. + +In addition to providing a hosted architecture for running dbt across your organization, dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring and alerting, an integrated development environment (IDE), and allows you to develop and run dbt commands from your local command line (CLI) or code editor. dbt Cloud's [flexible plans](https://www.getdbt.com/pricing/) and features make it well-suited for data teams of any size — sign up for your [free 14-day trial](https://www.getdbt.com/signup/)!
+ title="dbt Cloud CLI" + body="Use the dbt Cloud CLI to develop, test, run, and version control dbt projects and commands in your dbt Cloud development environment. Collaborate with team members, directly from the command line." + link="/docs/cloud/cloud-cli-installation" + icon="dbt-bit"/> + link="/docs/cloud/cloud-cli-installation" + icon="dbt-bit"/> + icon="dbt-bit"/> + icon="dbt-bit"/> + icon="dbt-bit"/> + + + icon="dbt-bit"/> + icon="dbt-bit"/> + icon="dbt-bit"/> + icon="dbt-bit"/> + icon="dbt-bit"/> - + icon="dbt-bit"/> - - - + icon="dbt-bit"/>

*These features are available on [selected plans](https://www.getdbt.com/pricing/). diff --git a/website/docs/docs/cloud/manage-access/cloud-seats-and-users.md b/website/docs/docs/cloud/manage-access/cloud-seats-and-users.md index 04dfbe093c3..c8532c3d7d3 100644 --- a/website/docs/docs/cloud/manage-access/cloud-seats-and-users.md +++ b/website/docs/docs/cloud/manage-access/cloud-seats-and-users.md @@ -16,6 +16,7 @@ The user's assigned license determines the specific capabilities they can access | Functionality | Developer User | Read-Only Users | IT Users* | | ------------- | -------------- | --------------- | -------- | | Use the dbt Cloud IDE | ✅ | ❌ | ❌ | +| Use the dbt Cloud CLI | ✅ | ❌ | ❌ | | Use Jobs | ✅ | ❌ | ❌ | | Manage Account | ✅ | ❌ | ✅ | | API Access | ✅ | ❌ | ❌ | diff --git a/website/docs/docs/cloud/manage-access/self-service-permissions.md b/website/docs/docs/cloud/manage-access/self-service-permissions.md index 21cc765b76d..d3c9cf8f5ea 100644 --- a/website/docs/docs/cloud/manage-access/self-service-permissions.md +++ b/website/docs/docs/cloud/manage-access/self-service-permissions.md @@ -12,7 +12,8 @@ The permissions afforded to each role are described below: | ------ | ------ | ----- | | View and edit resources | ✅ | ✅ | | Trigger runs | ✅ | ✅ | -| Access the IDE | ✅ | ✅ | +| Access the dbt Cloud IDE | ✅ | ✅ | +| Access the dbt Cloud CLI | ✅ | ✅ | | Invite Members to the account | ✅ | ✅ | | Manage billing | ❌ | ✅ | | Manage team permissions | ❌ | ✅ | diff --git a/website/docs/docs/connect-adapters.md b/website/docs/docs/connect-adapters.md index f45da732abb..77ead34e51d 100644 --- a/website/docs/docs/connect-adapters.md +++ b/website/docs/docs/connect-adapters.md @@ -11,9 +11,9 @@ This section provides more details on different ways you can connect dbt to an a Explore the fastest and most reliable way to deploy dbt using dbt Cloud, a hosted architecture that runs dbt Core across your organization. dbt Cloud lets you seamlessly [connect](/docs/cloud/about-cloud-setup) with a variety of [verified](/docs/supported-data-platforms) data platform providers directly in the dbt Cloud UI. -### Install using the CLI +### Install with dbt Core -Install dbt Core, which is an open-source tool, locally using the CLI. dbt communicates with a number of different data platforms by using a dedicated adapter plugin for each. When you install dbt Core, you'll also need to install the specific adapter for your database, [connect to dbt Core](/docs/core/about-core-setup), and set up a `profiles.yml` file. +Install dbt Core, an open-source tool, locally using the command line. dbt communicates with a number of different data platforms by using a dedicated adapter plugin for each. When you install dbt Core, you'll also need to install the specific adapter for your database, [connect to dbt Core](/docs/core/about-core-setup), and set up a `profiles.yml` file. With a few exceptions [^1], you can install all [Verified adapters](/docs/supported-data-platforms) from PyPI using `pip install adapter-name`. For example to install Snowflake, use the command `pip install dbt-snowflake`. The installation will include `dbt-core` and any other required dependencies, which may include both other dependencies and even other adapter plugins. Read more about [installing dbt](/docs/core/installation). diff --git a/website/docs/docs/dbt-cloud-environments.md b/website/docs/docs/dbt-cloud-environments.md index f61ec5ef72b..333552a8da6 100644 --- a/website/docs/docs/dbt-cloud-environments.md +++ b/website/docs/docs/dbt-cloud-environments.md @@ -4,7 +4,7 @@ id: "dbt-cloud-environments" description: "Learn about dbt Cloud's development environment to execute your project in the IDE" --- -An environment determines how dbt Cloud will execute your project in both the dbt Cloud IDE (for development) and scheduled jobs (for deployment). +An environment determines how dbt Cloud will execute your project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) (for development) and scheduled jobs (for deployment). Critically, in order to execute dbt, environments define three variables: @@ -34,7 +34,7 @@ To create a new dbt Cloud development environment: ### Set developer credentials -To use the IDE, each developer will need to set up [personal development credentials](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud#access-the-cloud-ide) to your warehouse connection in their **Profile Settings**. This allows you to set separate target information and maintain individual credentials to connect to your warehouse via the dbt Cloud IDE. +To use the dbt Cloud IDE or dbt Cloud CLI, each developer will need to set up [personal development credentials](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud#access-the-cloud-ide) to your warehouse connection in their **Profile Settings**. This allows you to set separate target information and maintain individual credentials to connect to your warehouse. diff --git a/website/docs/docs/environments-in-dbt.md b/website/docs/docs/environments-in-dbt.md index 54eaa68f667..0139975c5ed 100644 --- a/website/docs/docs/environments-in-dbt.md +++ b/website/docs/docs/environments-in-dbt.md @@ -18,7 +18,7 @@ Configure environments to tell dbt Cloud or dbt Core how to build and execute yo diff --git a/website/docs/docs/introduction.md b/website/docs/docs/introduction.md index c4cfd6e45ac..5fb16a0778c 100644 --- a/website/docs/docs/introduction.md +++ b/website/docs/docs/introduction.md @@ -28,6 +28,7 @@ Read more about why we want to enable analysts to work more like software engine You can access dbt using dbt Core or dbt Cloud. dbt Cloud is built around dbt Core, but it also provides: - Web-based UI so it’s more accessible +- dbt Cloud-powered command line (CLI) to develop, test, version control dbt projects, and run dbt commands - Hosted environment so it’s faster to get up and running - Differentiated features, such as metadata, in-app job scheduler, observability, integrations with other tools, integrated development environment (IDE), and more. @@ -35,7 +36,9 @@ You can learn about plans and pricing on [www.getdbt.com](https://www.getdbt.com ### dbt Cloud -dbt Cloud is the fastest and most reliable way to deploy dbt. Develop, test, schedule, and investigate data models all in one web-based UI. Learn more about [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features) and try one of the [dbt Cloud quickstarts](/quickstarts). +dbt Cloud is the fastest and most reliable way to deploy dbt. Develop, test, schedule, and investigate data models all in one web-based UI. dbt Cloud also natively supports developing using a command line to run dbt commands against your dbt Cloud development environment. + +Learn more about [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features) and try one of the [dbt Cloud quickstarts](/quickstarts). ### dbt Core diff --git a/website/docs/docs/supported-data-platforms.md b/website/docs/docs/supported-data-platforms.md index 8ac782991c8..95ef9b5ef88 100644 --- a/website/docs/docs/supported-data-platforms.md +++ b/website/docs/docs/supported-data-platforms.md @@ -8,7 +8,7 @@ hide_table_of_contents: true dbt connects to and runs SQL against your database, warehouse, lake, or query engine. These SQL-speaking platforms are collectively referred to as _data platforms_. dbt connects with data platforms by using a dedicated adapter plugin for each. Plugins are built as Python modules that dbt Core discovers if they are installed on your system. Read [What are Adapters](/guides/dbt-ecosystem/adapter-development/1-what-are-adapters) for more info. -You can [connect](/docs/connect-adapters) to adapters and data platforms either directly in the dbt Cloud user interface (UI) or install them manually using the command line (CLI). +You can [connect](/docs/connect-adapters) to adapters and data platforms natively in dbt Cloud or install them manually using dbt Core. You can also further customize how dbt works with your specific data platform via configuration: see [Configuring Postgres](/reference/resource-configs/postgres-configs) for an example. @@ -36,5 +36,5 @@ import AdaptersTrusted from '/snippets/_adapters-trusted.md'; -
* Install these adapters using the CLI as they're not currently supported in dbt Cloud.
+
* Install these adapters using dbt Core as they're not currently supported in dbt Cloud.
diff --git a/website/docs/docs/trusted-adapters.md b/website/docs/docs/trusted-adapters.md index e19bb40785f..08191e8ea42 100644 --- a/website/docs/docs/trusted-adapters.md +++ b/website/docs/docs/trusted-adapters.md @@ -6,7 +6,7 @@ hide_table_of_contents: true Trusted adapters are adapters not maintained by dbt Labs, that we feel comfortable recommending to users for use in production. -Free and open-source tools for the data professional are increasingly abundant. This is by-and-large a *good thing*, however it requires due dilligence that wasn't required in a paid-license, closed-source software world. As a user, there are questions to answer important before taking a dependency on an open-source project. The trusted adapter designation is meant to streamline this process for end users. +Free and open-source tools for the data professional are increasingly abundant. This is by-and-large a *good thing*, however it requires due diligence that wasn't required in a paid-license, closed-source software world. As a user, there are questions to answer important before taking a dependency on an open-source project. The trusted adapter designation is meant to streamline this process for end users.
Considerations for depending on an open-source project diff --git a/website/snippets/_adapters-trusted.md b/website/snippets/_adapters-trusted.md index 10af0218e22..1d685bd9261 100644 --- a/website/snippets/_adapters-trusted.md +++ b/website/snippets/_adapters-trusted.md @@ -2,7 +2,7 @@ diff --git a/website/snippets/_adapters-verified.md b/website/snippets/_adapters-verified.md index 7caf099b7d1..3cc1e800448 100644 --- a/website/snippets/_adapters-verified.md +++ b/website/snippets/_adapters-verified.md @@ -2,61 +2,60 @@ -* Install these adapters using the CLI as they're not currently supported in dbt Cloud.
diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index 5388379dc34..b0c8e86a2b5 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -3,17 +3,17 @@ In dbt Cloud, there are two types of environments: - Deployment environment — Determines the settings used when jobs created within that environment are executed. -- Development environment — Determines the settings used in the dbt Cloud IDE for that particular dbt Cloud project. +- Development environment — Determines the settings used in the dbt Cloud IDE or dbt Cloud CLI, for that particular project. Each dbt Cloud project can only have a single development environment but can have any number of deployment environments. | | Development Environments | Deployment Environments | | --- | --- | --- | -| Determines settings for | dbt Cloud IDE | dbt Cloud Job runs | +| Determines settings for | dbt Cloud IDE or dbt Cloud CLI | dbt Cloud Job runs | | How many can I have in my project? | 1 | Any number | :::note -For users familiar with development on the CLI, each environment is roughly analogous to an entry in your `profiles.yml` file, with some additional information about your repository to ensure the proper version of code is executed. More info on dbt core environments [here](/docs/core/dbt-core-environments). +For users familiar with development on dbt Core, each environment is roughly analogous to an entry in your `profiles.yml` file, with some additional information about your repository to ensure the proper version of code is executed. More info on dbt core environments [here](/docs/core/dbt-core-environments). ::: ## Common environment settings @@ -38,7 +38,7 @@ Both development and deployment environments have a section called **General Set By default, all environments will use the default branch in your repository (usually the `main` branch) when accessing your dbt code. This is overridable within each dbt Cloud Environment using the **Default to a custom branch** option. This setting have will have slightly different behavior depending on the environment type: -- **Development**: determines which branch in the dbt Cloud IDE developers create branches from and open PRs against +- **Development**: determines which branch in the dbt Cloud IDE or dbt Cloud CLI developers create branches from and open PRs against. - **Deployment:** determines the branch is cloned during job executions for each environment. For more info, check out this [FAQ page on this topic](/faqs/Environments/custom-branch-settings)! @@ -59,7 +59,7 @@ Something to note, Extended Attributes doesn't mask secret values. We recommend
-If you're developing in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or [orchestrating job runs](/docs/deploy/deployments), Extended Attributes parses through the provided YAML and extracts the `profiles.yml` attributes. For each individual attribute: +If you're developing in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud), [dbt Cloud CLI](/docs/cloud/cloud-cli-installation), or [orchestrating job runs](/docs/deploy/deployments), Extended Attributes parses through the provided YAML and extracts the `profiles.yml` attributes. For each individual attribute: - If the attribute exists in another source (such as your project settings), it will replace its value (like environment-level values) in the profile. It also overrides any custom environment variables. From cfd8ea1629a9dd78f2885c892757302d68e56879 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:42:33 +0100 Subject: [PATCH 021/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 4901d3b381e..04d344dc9d8 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -20,7 +20,7 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Speedier, lower cost builds. * Significant platform improvements, to be released over the coming months. -The dbt Cloud CLI, powered by [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud-features), is distinct from [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source command-line tool for dbt. Both tools are command lines that use the same dbt commands, but the dbt Cloud CLI is tailored to run specifically on dbt Cloud's infrastructure. +The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. ## Install dbt Cloud CLI From 95c7015d776224ab9166c2de559a40ae1beae7d7 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 15:23:38 +0100 Subject: [PATCH 022/265] cloud cli updates --- .../docs/docs/cloud/git/authenticate-azure.md | 2 +- .../docs/cloud/git/connect-azure-devops.md | 2 +- website/docs/docs/cloud/git/connect-github.md | 2 +- website/docs/docs/cloud/git/connect-gitlab.md | 8 ++++---- website/docs/docs/cloud/git/setup-azure.md | 2 +- website/docs/docs/introduction.md | 3 +-- .../run-your-dbt-projects.md | 19 +++++++++++++++---- .../running-a-dbt-project/using-threads.md | 2 +- 8 files changed, 25 insertions(+), 15 deletions(-) diff --git a/website/docs/docs/cloud/git/authenticate-azure.md b/website/docs/docs/cloud/git/authenticate-azure.md index 03020ccca73..c8a3138c6c7 100644 --- a/website/docs/docs/cloud/git/authenticate-azure.md +++ b/website/docs/docs/cloud/git/authenticate-azure.md @@ -6,7 +6,7 @@ sidebar_label: "Authenticate with Azure DevOps" --- -If you use the dbt Cloud IDE to collaborate on your team's Azure DevOps dbt repo, you need to [link your dbt Cloud profile to Azure DevOps](#link-your-dbt-cloud-profile-to-azure-devops), which provides an extra layer of authentication. +If you use the dbt Cloud IDE or dbt Cloud CLI to collaborate on your team's Azure DevOps dbt repo, you need to [link your dbt Cloud profile to Azure DevOps](#link-your-dbt-cloud-profile-to-azure-devops), which provides an extra layer of authentication. ## Link your dbt Cloud profile to Azure DevOps diff --git a/website/docs/docs/cloud/git/connect-azure-devops.md b/website/docs/docs/cloud/git/connect-azure-devops.md index bc5bb81dd24..684e837cab6 100644 --- a/website/docs/docs/cloud/git/connect-azure-devops.md +++ b/website/docs/docs/cloud/git/connect-azure-devops.md @@ -13,7 +13,7 @@ Connect your Azure DevOps cloud account in dbt Cloud to unlock new product exper - Import new Azure DevOps repos with a couple clicks during dbt Cloud project setup. - Clone repos using HTTPS rather than SSH - Enforce user authorization with OAuth 2.0. -- Carry Azure DevOps user repository permissions (read / write access) through to dbt Cloud IDE's git actions. +- Carry Azure DevOps user repository permissions (read / write access) through to dbt Cloud IDE or dbt Cloud CLI's git actions. - Trigger Continuous integration (CI) builds when pull requests are opened in Azure DevOps. diff --git a/website/docs/docs/cloud/git/connect-github.md b/website/docs/docs/cloud/git/connect-github.md index 771e4286ef6..ff0f2fff18f 100644 --- a/website/docs/docs/cloud/git/connect-github.md +++ b/website/docs/docs/cloud/git/connect-github.md @@ -74,7 +74,7 @@ To connect a personal GitHub account: 4. Once you approve authorization, you will be redirected to dbt Cloud, and you should now see your connected account. -The next time you log into dbt Cloud, you will be able to do so via OAuth through GitHub, and if you're on the Enterprise plan, you're ready to use the dbt Cloud IDE. +The next time you log into dbt Cloud, you will be able to do so via OAuth through GitHub, and if you're on the Enterprise plan, you're ready to use the dbt Cloud IDE or dbt Cloud CLI. ## FAQs diff --git a/website/docs/docs/cloud/git/connect-gitlab.md b/website/docs/docs/cloud/git/connect-gitlab.md index 53fde5f4878..e55552e2d86 100644 --- a/website/docs/docs/cloud/git/connect-gitlab.md +++ b/website/docs/docs/cloud/git/connect-gitlab.md @@ -8,7 +8,7 @@ id: "connect-gitlab" Connecting your GitLab account to dbt Cloud provides convenience and another layer of security to dbt Cloud: - Import new GitLab repos with a couple clicks during dbt Cloud project setup. - Clone repos using HTTPS rather than SSH. -- Carry GitLab user permissions through to dbt Cloud IDE's git actions. +- Carry GitLab user permissions through to dbt Cloud or dbt Cloud CLI's git actions. - Trigger [Continuous integration](/docs/deploy/continuous-integration) builds when merge requests are opened in GitLab. The steps to integrate GitLab in dbt Cloud depend on your plan. If you are on: @@ -35,7 +35,7 @@ Once you've accepted, you should be redirected back to dbt Cloud, and you'll see dbt Cloud enterprise customers have the added benefit of bringing their own GitLab OAuth application to dbt Cloud. This tier benefits from extra security, as dbt Cloud will: - Enforce user authorization with OAuth. -- Carry GitLab's user repository permissions (read / write access) through to dbt Cloud IDE's git actions. +- Carry GitLab's user repository permissions (read / write access) through to dbt Cloud or dbt Cloud CLI's git actions. In order to connect GitLab in dbt Cloud, a GitLab account admin must: 1. [Set up a GitLab OAuth application](#setting-up-a-gitlab-oauth-application). @@ -97,7 +97,7 @@ You will then be redirected to GitLab and prompted to sign into your account. Gi Once you've accepted, you should be redirected back to dbt Cloud, and your integration is ready for developers on your team to [personally authenticate with](#personally-authenticating-with-gitlab). ### Personally authenticating with GitLab -dbt Cloud developers on the Enterprise plan must each connect their GitLab profiles to dbt Cloud, as every developer's read / write access for the dbt repo is checked in the dbt Cloud IDE. +dbt Cloud developers on the Enterprise plan must each connect their GitLab profiles to dbt Cloud, as every developer's read / write access for the dbt repo is checked in the dbt Cloud IDE or dbt Cloud CLI. To connect a personal GitLab account, dbt Cloud developers should navigate to Your Profile settings by clicking the gear icon in the top right, then select **Linked Accounts** in the left menu. @@ -105,7 +105,7 @@ If your GitLab account is not connected, you’ll see "No connected account". Se -Once you approve authorization, you will be redirected to dbt Cloud, and you should see your connected account. You're now ready to start developing in the dbt Cloud IDE. +Once you approve authorization, you will be redirected to dbt Cloud, and you should see your connected account. You're now ready to start developing in the dbt Cloud IDE or dbt Cloud CLI. ## Troubleshooting diff --git a/website/docs/docs/cloud/git/setup-azure.md b/website/docs/docs/cloud/git/setup-azure.md index 9eca77d7014..843371be6ea 100644 --- a/website/docs/docs/cloud/git/setup-azure.md +++ b/website/docs/docs/cloud/git/setup-azure.md @@ -93,7 +93,7 @@ Once you connect your Azure AD app and Azure DevOps, you need to provide dbt Clo - **Directory(tenant) ID:** Found in the Azure AD App. -Your Azure AD app should now be added to your dbt Cloud Account. People on your team who want to develop in dbt Cloud's IDE can now personally [authorize Azure DevOps from their profiles](/docs/cloud/git/authenticate-azure). +Your Azure AD app should now be added to your dbt Cloud Account. People on your team who want to develop in the dbt Cloud IDE or dbt Cloud CLI can now personally [authorize Azure DevOps from their profiles](/docs/cloud/git/authenticate-azure). ## Connect a service user diff --git a/website/docs/docs/introduction.md b/website/docs/docs/introduction.md index 5fb16a0778c..454fbc2248a 100644 --- a/website/docs/docs/introduction.md +++ b/website/docs/docs/introduction.md @@ -36,8 +36,7 @@ You can learn about plans and pricing on [www.getdbt.com](https://www.getdbt.com ### dbt Cloud -dbt Cloud is the fastest and most reliable way to deploy dbt. Develop, test, schedule, and investigate data models all in one web-based UI. dbt Cloud also natively supports developing using a command line to run dbt commands against your dbt Cloud development environment. - +dbt Cloud is the fastest and most reliable way to deploy dbt. Develop, test, schedule, and investigate data models all in one web-based UI. It also natively supports developing using a command line with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). Learn more about [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features) and try one of the [dbt Cloud quickstarts](/quickstarts). ### dbt Core diff --git a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md index 9bd57e0b280..59f20d89f1e 100644 --- a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md +++ b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md @@ -2,13 +2,23 @@ title: "Run your dbt projects" id: "run-your-dbt-projects" --- -You can run your dbt projects with [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud-features) and [dbt Core](https://github.com/dbt-labs/dbt-core). dbt Cloud is a hosted application where you can develop directly from a web browser. dbt Core is an open source project where you can develop from the command line. +You can run your dbt projects with [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud-features) or [dbt Core](https://github.com/dbt-labs/dbt-core): -Among other features, dbt Cloud provides a development environment to help you build, test, run, and [version control](/docs/collaborate/git-version-control) your project faster. It also includes an easier way to share your [dbt project's documentation](/docs/collaborate/build-and-view-your-docs) with your team. These development tasks are directly built into dbt Cloud for an _integrated development environment_ (IDE). Refer to [Develop in the Cloud](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) for more details. +- **dbt Cloud**: A hosted application where you can develop directly from a web browser using the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud). It also natively supports developing using a command line, [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). Among other features, dbt Cloud provides: -With dbt Core, you can run your dbt projects from the command line. The command line interface (CLI) is available from your computer's terminal application such as Terminal and iTerm. When using the command line, you can run commands and do other work from the current working directory on your computer. Before running the dbt project from the command line, make sure you are working in your dbt project directory. Learning terminal commands such as `cd` (change directory), `ls` (list directory contents), and `pwd` (present working directory) can help you navigate the directory structure on your system. + - Development environment to help you build, test, run, and [version control](/docs/collaborate/git-version-control) your project faster. + - Share your [dbt project's documentation](/docs/collaborate/build-and-view-your-docs) with your team. + - Integrates with the dbt Cloud IDE, allowing you to run development tasks and environment in the dbt Cloud UI for a seamless experience. + - Use the dbt Cloud CLI to develop and run dbt commands against your dbt Cloud development environment from your local command line. + - For more details, refer to [Develop in the Cloud](/docs/cloud/about-cloud-develop). -When running your project from dbt Core or dbt Cloud, the commands you commonly use are: +- **dbt Core**: An open source project where you can develop from the command line. + +The dbt Cloud CLI and dbt Core are both command line tools that allow you to run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. + +The command line is available from your computer's terminal application such as Terminal and iTerm. With the command line, you can run commands and do other work from the current working directory on your computer. Before running the dbt project from the command line, make sure you are working in your dbt project directory. Learning terminal commands such as `cd` (change directory), `ls` (list directory contents), and `pwd` (present working directory) can help you navigate the directory structure on your system. + +In dbt Cloud or dbt Cloud, the commands you commonly use are: - [dbt run](/reference/commands/run) — Runs the models you defined in your project - [dbt build](/reference/commands/build) — Builds and tests your selected resources such as models, seeds, snapshots, and tests @@ -20,6 +30,7 @@ For information on all dbt commands and their arguments (flags), see the [dbt co - [How we set up our computers for working on dbt projects](https://discourse.getdbt.com/t/how-we-set-up-our-computers-for-working-on-dbt-projects/243) - [Model selection syntax](/reference/node-selection/syntax) +- [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) - [Cloud IDE features](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud#ide-features) - [Does dbt offer extract and load functionality?](/faqs/Project/transformation-tool) - [Why does dbt compile need a data platform connection](/faqs/Warehouse/db-connection-dbt-compile) diff --git a/website/docs/docs/running-a-dbt-project/using-threads.md b/website/docs/docs/running-a-dbt-project/using-threads.md index 519ce8aab81..11a1a72e655 100644 --- a/website/docs/docs/running-a-dbt-project/using-threads.md +++ b/website/docs/docs/running-a-dbt-project/using-threads.md @@ -18,7 +18,7 @@ Generally the optimal number of threads depends on your data warehouse and its c You can use a different number of threads than the value defined in your target by using the `--threads` option when executing a dbt command. -You will define the number of threads in your `profiles.yml` file (for CLI-users only), dbt Cloud job definition, and dbt Cloud development credentials under your profile. +You will define the number of threads in your `profiles.yml` file (for dbt Core users only), dbt Cloud job definition, and dbt Cloud development credentials under your profile. ## Related docs From c42989606c1d780f38c0104097b9c08cb30670da Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 17:03:21 +0100 Subject: [PATCH 023/265] update command page --- .../running-a-dbt-project/run-your-dbt-projects.md | 2 +- website/docs/reference/dbt-commands.md | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md index 59f20d89f1e..9cf9002ecc2 100644 --- a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md +++ b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md @@ -18,7 +18,7 @@ The dbt Cloud CLI and dbt Core are both command line tools that allow you to run The command line is available from your computer's terminal application such as Terminal and iTerm. With the command line, you can run commands and do other work from the current working directory on your computer. Before running the dbt project from the command line, make sure you are working in your dbt project directory. Learning terminal commands such as `cd` (change directory), `ls` (list directory contents), and `pwd` (present working directory) can help you navigate the directory structure on your system. -In dbt Cloud or dbt Cloud, the commands you commonly use are: +In dbt Cloud or dbt Core, the commands you commonly use are: - [dbt run](/reference/commands/run) — Runs the models you defined in your project - [dbt build](/reference/commands/build) — Builds and tests your selected resources such as models, seeds, snapshots, and tests diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index 862829ef809..83556d5d0fa 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -2,10 +2,12 @@ title: "dbt Command reference" --- -dbt is typically run one of two ways: +dbt is typically run using the following ways: -* In [dbt Cloud](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) -* On the [command line interface](/docs/core/about-the-cli) (CLI) +* In dbt Cloud using the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) +* On the command line using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or open-sourced [dbt Core](https://github.com/dbt-labs/dbt-core) + +The dbt Cloud CLI and dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. The following sections outline the commands supported by dbt and their relevant flags. For information about selecting models on the command line, consult the docs on [Model selection syntax](/reference/node-selection/syntax). @@ -13,7 +15,7 @@ The following sections outline the commands supported by dbt and their relevant -Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or [CLI](/docs/core/about-the-cli). Use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. +Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or command line. Use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. | Command | Description | Version | | ------- | ----------- | ------- | @@ -34,7 +36,7 @@ Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/ | [snapshot](/reference/commands/snapshot) | Executes "snapshot" jobs defined in a project | All [supported versions](/docs/dbt-versions/core) | | [source](/reference/commands/source) | Provides tools for working with source data (including validating that
sources are "fresh") | All [supported versions](/docs/dbt-versions/core) | | [test](/reference/commands/test) | Executes tests defined in a project | All [supported versions](/docs/dbt-versions/core) | -| [init](/reference/commands/init) | Initializes a new dbt project (CLI only) | All [supported versions](/docs/dbt-versions/core) | +| [init](/reference/commands/init) | Initializes a new dbt project (dbt Core only) | All [supported versions](/docs/dbt-versions/core) |
From 123437f84f4ac391c803c741552af20965a563dd Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 17:20:35 +0100 Subject: [PATCH 024/265] clarify language --- website/docs/docs/cloud/about-cloud-setup.md | 2 ++ website/docs/docs/core/about-the-cli.md | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/website/docs/docs/cloud/about-cloud-setup.md b/website/docs/docs/cloud/about-cloud-setup.md index baa2465472e..33c25c10ade 100644 --- a/website/docs/docs/cloud/about-cloud-setup.md +++ b/website/docs/docs/cloud/about-cloud-setup.md @@ -11,6 +11,8 @@ dbt Cloud is the fastest and most reliable way to deploy your dbt jobs. It conta - Configuring access to [GitHub](/docs/cloud/git/connect-github), [GitLab](/docs/cloud/git/connect-gitlab), or your own [git repo URL](/docs/cloud/git/import-a-project-by-git-url). - [Managing users and licenses](/docs/cloud/manage-access/seats-and-users) - [Configuring secure access](/docs/cloud/manage-access/about-user-access) +- Configuring the [dbt Cloud IDE](/docs/cloud/about-cloud-develop) +- Installing and configuring the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) These settings are intended for dbt Cloud administrators. If you need a more detailed first-time setup guide for specific data platforms, read our [quickstart guides](/quickstarts). diff --git a/website/docs/docs/core/about-the-cli.md b/website/docs/docs/core/about-the-cli.md index d05fb514dfa..75e4a5705a2 100644 --- a/website/docs/docs/core/about-the-cli.md +++ b/website/docs/docs/core/about-the-cli.md @@ -1,22 +1,25 @@ --- -title: "About the CLI" +title: "About dbt Core" id: "about-the-cli" -sidebar_label: "About the CLI" +sidebar_label: "About dbt Core" --- -dbt ships with a command line interface (CLI) for running your dbt project. This way of running dbt and a dbt project is free and open source. +[dbt Core](https://github.com/dbt-labs/dbt-core) is an open sourced project where you can develop from the command line and run your dbt project. + +To use dbt Core, your workflow generally looks like: -To use the CLI, your workflow generally looks like: 1. **Build your dbt project in a code editor —** popular choices include VSCode and Atom. -1. **Run your project from the command line —** macOS ships with a default Terminal program, however you can also use iTerm or the command line prompt within a code editor to execute dbt commands. +2. **Run your project from the command line —** macOS ships with a default Terminal program, however you can also use iTerm or the command line prompt within a code editor to execute dbt commands. :::info How we set up our computers for working on dbt projects -We've written a [guide](https://discourse.getdbt.com/t/how-we-set-up-our-computers-for-working-on-dbt-projects/243) for our recommended setup when running dbt projects using the CLI. +We've written a [guide](https://discourse.getdbt.com/t/how-we-set-up-our-computers-for-working-on-dbt-projects/243) for our recommended setup when running dbt projects using dbt Core. ::: -If you're using the CLI, we recommend learning some basics of your terminal to help you work more effectively. In particular, it's important to understand `cd`, `ls` and `pwd` to be able to navigate through the directory structure of your computer easily. +If you're using the command line, we recommend learning some basics of your terminal to help you work more effectively. In particular, it's important to understand `cd`, `ls` and `pwd` to be able to navigate through the directory structure of your computer easily. + +You can find more information on installing and setting up the dbt Core [here](/docs/core/installation). -You can find more information on installing and setting up the dbt CLI [here](/dbt-cli/cli-overview). +dbt also supports a [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and both dbt Core and the dbt Cloud CLI are command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. From 169f5e0b80201b3a838e909737a7f632ae906dc5 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 4 Oct 2023 17:33:52 +0100 Subject: [PATCH 025/265] tweak language --- website/docs/docs/cloud/about-cloud-develop.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 88066d4dcd4..5a217d73442 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -9,11 +9,9 @@ pagination_next: "docs/cloud/cloud-cli-installation" dbt Cloud offers a fast and reliable way to work on your dbt project. You can use it through an integrated development environment (IDE) in your browser or a dbt Cloud-powered command line interface (CLI): - **[dbt Cloud CLI](/docs/cloud/cloud-cli-installation)** — Allows you to develop and run dbt commands from your local command line or code editor against your dbt Cloud development environment. - - Note, the dbt Cloud CLI is distinct from [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source command-line tool for dbt. Both tools are command lines that use the same dbt commands, however, the dbt Cloud CLI is tailored to run specifically on dbt Cloud's infrastructure. - **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface (UI). This documentation section provides detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive setup guide, refer to our [quickstart guides](/quickstarts). - - +Something to note is that the dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. From 50035f2ff32a31f6470c9b30050df2dd95f6e8fa Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 5 Oct 2023 11:23:07 +0100 Subject: [PATCH 026/265] add linux --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 04d344dc9d8..e181197efbc 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -101,7 +101,7 @@ The following instructions explain how to update the dbt CLoud CLI to the latest #### Update with Homebrew (MacOS) To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. -#### Update manually (Windows) +#### Update manually (Windows and Linux) To update, follow the same process explained in [Install manually (Windows)](#install-manually-windows) and replace the existing `dbt.exe` executable with the new one. From 1a9cc3becb5e1ac907501f092dbfa783abb0c0e3 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 5 Oct 2023 14:13:10 +0100 Subject: [PATCH 027/265] sl updates --- .../docs/docs/build/build-metrics-intro.md | 4 +- website/docs/docs/build/metricflow-cli.md | 3 ++ website/docs/docs/build/sl-getting-started.md | 38 +++++-------------- .../docs/dbt-cloud-apis/sl-api-overview.md | 4 +- .../release-notes/03-Oct-2023/sl-ga.md | 31 +++++++++++++++ .../avail-sl-integrations.md | 4 -- .../docs/use-dbt-semantic-layer/dbt-sl.md | 5 --- .../use-dbt-semantic-layer/quickstart-sl.md | 28 ++++---------- .../docs/use-dbt-semantic-layer/setup-sl.md | 3 -- .../use-dbt-semantic-layer/sl-architecture.md | 4 -- .../sl-partner-integration-guide.md | 5 --- website/docs/guides/migration/sl-migration.md | 17 ++++++--- website/snippets/_new-sl-setup.md | 4 +- website/snippets/_sl-connect-and-query-api.md | 10 +++++ website/snippets/_sl-define-metrics.md | 2 +- website/snippets/_sl-plan-info.md | 2 +- website/snippets/_sl-run-prod-job.md | 7 ++++ .../snippets/_sl-test-and-query-metrics.md | 2 +- website/snippets/_v2-sl-prerequisites.md | 6 +-- 19 files changed, 89 insertions(+), 90 deletions(-) create mode 100644 website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md create mode 100644 website/snippets/_sl-connect-and-query-api.md create mode 100644 website/snippets/_sl-run-prod-job.md diff --git a/website/docs/docs/build/build-metrics-intro.md b/website/docs/docs/build/build-metrics-intro.md index a6fab61d576..d32a396fc5a 100644 --- a/website/docs/docs/build/build-metrics-intro.md +++ b/website/docs/docs/build/build-metrics-intro.md @@ -12,7 +12,7 @@ Use MetricFlow in dbt to centrally define your metrics. As a key component of th Use familiar constructs like semantic models and metrics to avoid duplicative coding, optimize your development workflow, ensure data governance for company metrics, and guarantee consistency for data consumers. :::info -MetricFlow is currently available on dbt v1.6 or higher and allows users to define metrics in their dbt project whether in dbt Cloud or dbt Core. dbt Core users can use the MetricFlow CLI to define metrics in their local dbt Core project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. +MetricFlow is currently available on dbt v1.6 or higher and allows users to define metrics in their dbt project whether in dbt Cloud or dbt Core. [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. ::: @@ -20,7 +20,7 @@ Before you start, consider the following guidelines: - Define metrics in YAML and query them using these [new metric specifications](https://github.com/dbt-labs/dbt-core/discussions/7456). - You must be on dbt v1.6 or higher to use MetricFlow. [Upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to get started. -- Use MetricFlow with Snowflake, BigQuery, Databricks, Postgres (CLI only), or Redshift. (dbt Cloud Postgres support coming soon) +- Use MetricFlow with Snowflake, BigQuery, Databricks, Postgres (dbt Core only), or Redshift. - Unlock insights and query your metrics using the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and its diverse range of [available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations). diff --git a/website/docs/docs/build/metricflow-cli.md b/website/docs/docs/build/metricflow-cli.md index 2650b2215ae..2653b922179 100644 --- a/website/docs/docs/build/metricflow-cli.md +++ b/website/docs/docs/build/metricflow-cli.md @@ -8,6 +8,9 @@ tags: [Metrics, Semantic Layer] Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow command line (CLI). +:::info +[dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. +::: # Installation You can install the [MetricFlow CLI](https://github.com/dbt-labs/metricflow#getting-started) from [PyPI](https://pypi.org/project/dbt-metricflow/). You need to use `pip` to install the MetricFlow CLI on Windows or Linux operating systems: diff --git a/website/docs/docs/build/sl-getting-started.md b/website/docs/docs/build/sl-getting-started.md index c0bf59ae0c2..5ab730c88e0 100644 --- a/website/docs/docs/build/sl-getting-started.md +++ b/website/docs/docs/build/sl-getting-started.md @@ -13,8 +13,10 @@ import CreateModel from '/snippets/_sl-create-semanticmodel.md'; import DefineMetrics from '/snippets/_sl-define-metrics.md'; import ConfigMetric from '/snippets/_sl-configure-metricflow.md'; import TestQuery from '/snippets/_sl-test-and-query-metrics.md'; +import ConnectQueryAPI from '/snippets/_sl-connect-and-query-api.md'; +import RunProdJob from '/snippets/_sl-run-prod-job.md'; -This getting started page presents a sample workflow to help you create your first metrics in dbt Cloud or the command-line interface (CLI). It uses the [Jaffle shop example project](https://github.com/dbt-labs/jaffle-sl-template) as the project data source and is available for you to use. +This getting started page presents a sample workflow to help you create your first metrics in dbt Cloud or command-line. It uses the [Jaffle shop example project](https://github.com/dbt-labs/jaffle-sl-template) as the project data source and is available for you to use. If you prefer, you can create semantic models and metrics for your own dbt project. This page will guide you on how to: @@ -26,20 +28,15 @@ If you prefer, you can create semantic models and metrics for your own dbt proje - [Connect to and query the API](#connect-and-query-api) with dbt Cloud -MetricFlow allows users to define metrics in their dbt project whether in dbt Cloud or in dbt Core. dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local dbt Core project. +MetricFlow allows users to define metrics in their dbt project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or command line. [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. ## Prerequisites -- Have an understanding of key concepts in [MetricFlow](/docs/build/about-metricflow), which powers the revamped dbt Semantic Layer. -- Have both your production and development environments running dbt version 1.6 or higher. Refer to [upgrade in dbt Cloud](/docs/dbt-versions/upgrade-core-in-cloud) for more info. -- Use Snowflake, BigQuery, Databricks, Redshift, or Postgres (Postgres available in the CLI only, dbt Cloud support coming soon). -- Create a successful run in the environment where you configure the Semantic Layer. - - **Note:** Semantic Layer currently supports the Deployment environment for querying. (_development querying experience coming soon_) -- Set up the [Semantic Layer API](/docs/dbt-cloud-apis/sl-api-overview) in the integrated tool to import metric definitions. - - **Note:** To access the API and query metrics in downstream tools, you must have a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. dbt Core or Developer accounts can define metrics using [MetricFlow CLI](/docs/build/metricflow-cli) or the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud).
-- Understand [MetricFlow's](/docs/build/about-metricflow) key concepts, which powers the revamped dbt Semantic Layer. +import SetUp from '/snippets/_v2-sl-prerequisites.md'; + + :::tip New to dbt or metrics? Try our [Jaffle shop example project](https://github.com/dbt-labs/jaffle-sl-template) to help you get started! @@ -63,15 +60,7 @@ New to dbt or metrics? Try our [Jaffle shop example project](https://github.com/ ## Run a production job -Before you begin, you must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment, hosted in North America (cloud.getdbt.com login URL). - -Once you’ve defined metrics in your dbt project, you can perform a job run in your dbt Cloud deployment environment to materialize your metrics. Only the deployment environment is supported for the dbt Semantic Layer at this moment. - -1. Go to **Deploy** in the menu bar -2. Select **Jobs** to re-run the job with the most recent code in the deployment environment. -3. Your metric should appear as a red node in the dbt Cloud IDE and dbt directed acyclic graphs (DAG). - - + ## Set up dbt Semantic Layer @@ -81,16 +70,7 @@ import SlSetUp from '/snippets/_new-sl-setup.md'; ## Connect and query API -You can query your metrics in a JDBC-enabled tool or use existing first-class integrations with the dbt Semantic Layer. - -You must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment, hosted in North America. (Additional region support coming soon) - -- To learn how to use the JDBC or GraphQL API and what tools you can query it with, refer to the
{frontMatter.meta.api_name}.
- - * To authenticate, you need to [generate a service token](/docs/dbt-cloud-apis/service-tokens) with Semantic Layer Only and Metadata Only permissions. - * Refer to the [SQL query syntax](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. - -- To learn more about the sophisticated integrations that connect to the dbt Semantic Layer, refer to [Available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) for more info. + ## FAQs diff --git a/website/docs/docs/dbt-cloud-apis/sl-api-overview.md b/website/docs/docs/dbt-cloud-apis/sl-api-overview.md index 42416765904..55d4a2acb33 100644 --- a/website/docs/docs/dbt-cloud-apis/sl-api-overview.md +++ b/website/docs/docs/dbt-cloud-apis/sl-api-overview.md @@ -31,10 +31,8 @@ You can use the dbt Semantic Layer for a variety of tools and applications of da import Features from '/snippets/_sl-plan-info.md'
diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md new file mode 100644 index 00000000000..5428609ef9a --- /dev/null +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -0,0 +1,31 @@ +--- +title: "Update: dbt Cloud Semantic Layer is Generally Available" +description: "October 2023: dbt Cloud Semantic Layer is Generally Available for all users" +sidebar_label: "Update: dbt Cloud Semantic Layer is GA" +sidebar_position: 10 +date: 2023-10-17 +tags: [Oct-2023] +--- + +:::important +If you're using the legacy Semantic Layer, we **highly** recommend you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt v1.6 or higher and [migrate](/guides/migration/sl-migration) to the re-released Semantic Layer. +::: + +dbt Labs is thrilled to announce that the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) is now generally available to the public. It offers consistent data organization, improved governance, reduced costs, enhanced efficiency, and accessible data for better decision-making and collaboration across organizations. + +It aims to bring the best of modeling and semantics to downstream applications by introducing: + +- Brand new integrations with Tableau, Google Sheets, Hex, Mode, and Lightdash. +- New [Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) using GraphQL and JDBC to query metrics and build integrations. +- dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North American, EMEA, and APAC (Single-Tenant support coming soon). +- Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. (Support for scheduling exports as part of your dbt job is coming on db v1.7 or higher.) +- Info on pricing/commercial availability????? or link to billing + +The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. dbt Cloud Developer plans and dbt Core users can use the dbt Cloud IDE or MetricFlow CLI to define metrics, but won't be able to query them with integrated tools. + + + + + +For more info on what this means and how to get started, read link to blog -- link to blog + diff --git a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md index b084dedc305..48ea1449ef2 100644 --- a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md +++ b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md @@ -10,10 +10,6 @@ meta: -import NewSLChanges from '/snippets/_new-sl-changes.md'; - - - There are a number of data applications that seamlessly integrate with the dbt Semantic Layer, powered by MetricFlow, from business intelligence tools to notebooks, spreadsheets, data catalogs, and more. These integrations allow you to query and unlock valuable insights from your data ecosystem. diff --git a/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md b/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md index 76753b41ffa..ecb6b51a87b 100644 --- a/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md @@ -9,9 +9,6 @@ hide_table_of_contents: true -import NewSLChanges from '/snippets/_new-sl-changes.md'; - - The dbt Semantic Layer, powered by [MetricFlow](/docs/build/about-metricflow), simplifies the process of defining and using critical business metrics, like `revenue` in the modeling layer (your dbt project). By centralizing metric definitions, data teams can ensure consistent self-service access to these metrics in downstream data tools and applications. The dbt Semantic Layer eliminates duplicate coding by allowing data teams to define metrics on top of existing models and automatically handles data joins. @@ -26,10 +23,8 @@ Refer to the [Why we need a universal semantic layer](https://www.getdbt.com/blo import Features from '/snippets/_sl-plan-info.md'
diff --git a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md index 3bbc11cea3f..5214cc2285d 100644 --- a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md @@ -10,17 +10,16 @@ meta: -import NewSLChanges from '/snippets/_new-sl-changes.md'; + import InstallMetricFlow from '/snippets/_sl-install-metricflow.md'; import CreateModel from '/snippets/_sl-create-semanticmodel.md'; import DefineMetrics from '/snippets/_sl-define-metrics.md'; import ConfigMetric from '/snippets/_sl-configure-metricflow.md'; import TestQuery from '/snippets/_sl-test-and-query-metrics.md'; +import ConnectQueryAPI from '/snippets/_sl-connect-and-query-api.md'; +import RunProdJob from '/snippets/_sl-run-prod-job.md'; - - - The dbt Semantic Layer, powered by [MetricFlow](/docs/build/about-metricflow), simplifies defining and using critical business metrics. It centralizes metric definitions, eliminates duplicate coding, and ensures consistent self-service access to metrics in downstream tools. MetricFlow, a powerful component of the dbt Semantic Layer, simplifies the creation and management of company metrics. It offers flexible abstractions, SQL query generation, and enables fast retrieval of metric datasets from a data platform. @@ -35,9 +34,10 @@ Use this guide to fully experience the power of the universal dbt Semantic Layer - [Connect and query API](#connect-and-query-api) with dbt Cloud -MetricFlow allows users to define metrics in their dbt project whether in dbt Cloud or in dbt Core. dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local dbt Core project. +MetricFlow allows users to define metrics in their dbt project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or command line. [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. + ## Prerequisites import SetUp from '/snippets/_v2-sl-prerequisites.md'; @@ -62,13 +62,8 @@ New to dbt or metrics? Try our [Jaffle shop example project](https://github.com/ ## Run a production job -Once you’ve defined metrics in your dbt project, you can perform a job run in your deployment environment in dbt Cloud to materialize your metrics. The deployment environment is only supported for the dbt Semantic Layer at this moment. - -1. Go to **Deploy** in the navigation header -2. Select **Jobs** to re-run the job with the most recent code in the deployment environment. -3. Your metric should appear as a red node in the dbt Cloud IDE and dbt directed acyclic graphs (DAG). - +
@@ -88,16 +83,7 @@ import SlSetUp from '/snippets/_new-sl-setup.md'; ## Connect and query API -You can query your metrics in a JDBC-enabled tool or use existing first-class integrations with the dbt Semantic Layer. - -You must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment, hosted in North America (Additional region support coming soon). - -- To learn how to use the JDBC or GraphQL API and what tools you can query it with, refer to the {frontMatter.meta.api_name}.
- - * To authenticate, you need to [generate a service token](/docs/dbt-cloud-apis/service-tokens) with Semantic Layer Only and Metadata Only permissions. - * Refer to the [SQL query syntax](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the APIs. - -- To learn more about the sophisticated integrations that connect to the dbt Semantic Layer, refer to [Available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) for more info. + ## FAQs diff --git a/website/docs/docs/use-dbt-semantic-layer/setup-sl.md b/website/docs/docs/use-dbt-semantic-layer/setup-sl.md index a2395d367e7..4c88ee50b25 100644 --- a/website/docs/docs/use-dbt-semantic-layer/setup-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/setup-sl.md @@ -8,9 +8,6 @@ tags: [Semantic Layer] -import NewSLChanges from '/snippets/_new-sl-changes.md'; - - With the dbt Semantic Layer, you can centrally define business metrics, reduce code duplication and inconsistency, create self-service in downstream tools, and more. Configure the dbt Semantic Layer in dbt Cloud to connect with your integrated partner tool. diff --git a/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md b/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md index 89cd9bc6ddc..7fe851074b0 100644 --- a/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md +++ b/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md @@ -6,10 +6,6 @@ sidebar_label: "Architecture" tags: [Semantic Layer] --- -import NewSLChanges from '/snippets/_new-sl-changes.md'; - - - diff --git a/website/docs/guides/dbt-ecosystem/sl-partner-integration-guide.md b/website/docs/guides/dbt-ecosystem/sl-partner-integration-guide.md index 68037bfd0cd..cffa13a4e1b 100644 --- a/website/docs/guides/dbt-ecosystem/sl-partner-integration-guide.md +++ b/website/docs/guides/dbt-ecosystem/sl-partner-integration-guide.md @@ -4,11 +4,6 @@ id: "sl-partner-integration-guide" description: Learn about partner integration guidelines, roadmap, and connectivity. --- - -import NewChanges from '/snippets/_new-sl-changes.md'; - - - To fit your tool within the world of the Semantic Layer, dbt Labs offers some best practice recommendations for how to expose metrics and allow users to interact with them seamlessly. :::note diff --git a/website/docs/guides/migration/sl-migration.md b/website/docs/guides/migration/sl-migration.md index c9def4537a3..c30ba91a8e5 100644 --- a/website/docs/guides/migration/sl-migration.md +++ b/website/docs/guides/migration/sl-migration.md @@ -12,7 +12,7 @@ The legacy Semantic Layer will be deprecated in H2 2023. Additionally, the `dbt_ The metrics specification in dbt Core is changed in v1.6 to support the integration of MetricFlow. It's strongly recommended that you refer to [Build your metrics](/docs/build/build-metrics-intro) and before getting started so you understand the core concepts of the Semantic Layer. -dbt Labs recommends completing these steps in a local dev environment instead of the IDE: +dbt Labs recommends completing these steps in a local dev environment (such as the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation)) instead of the dbt Cloud IDE: 1. Create new Semantic Model configs as YAML files in your dbt project.* 1. Upgrade the metrics configs in your project to the new spec.* @@ -63,11 +63,18 @@ You might need to audit metric values during the migration to ensure that the hi This step is only relevant to users who want the legacy and new semantic layer to run in parallel for a short time. This will let you recreate content in downstream tools like Hex and Mode with minimal downtime. If you do not need to recreate assets in these tools skip to step 5. 1. Create a new deployment environment in dbt Cloud and set the dbt version to 1.6 or higher. -2. Choose `Only run on a custom branch` and point to the branch that has the updated metric definition + +2. Select **Only run on a custom branch** and point to the branch that has the updated metric definition + 3. Set the deployment schema to a temporary migration schema, such as `tmp_sl_migration`. Optional, you can create a new database for the migration. + 4. Create a job to parse your project, such as `dbt parse`, and run it. Make sure this job succeeds, There needs to be a successful job in your environment in order to set up the semantic layer -5. In Account Settings > Projects > Project details click `Configure the Semantic Layer`. Under **Environment**select the deployment environment you created in the previous step. Save your configuration. -6. In the Project details page, click `Generate service token` and grant it `Semantic Layer Only` and `Metadata Only` permissions. Save this token securely - you will need it to connect to the semantic layer. + +5. In **Account Settings** -> **Projects** -> **Project details**, click **Configure the Semantic Layer**. + +6. Under **Environment**, select the deployment environment you created in the previous step. Save your configuration. + +7. In the **Project details** page, click **Generate service token** and grant it **Semantic Layer Only** and **Metadata Only** permissions. Save this token securely - you will need it to connect to the semantic layer. At this point, both the new semantic layer and the old semantic layer will be running. The new semantic layer will be pointing at your migration branch with the updated metrics definitions. @@ -106,7 +113,7 @@ To learn more about integrating with Hex, check out their [documentation](https: If you created a new environment in [Step 3](#step-3-setup-the-semantic-layer-in-a-new-environment): -3. Update your Environment in Account Settings > Project Details > Edit Semantic Layer Configuration to point to your production environment +3. Update your Environment in **Account Settings** -> **Project Details** -> **Edit Semantic Layer Configuration** to point to your production environment 4. Delete your migration environment. Be sure to update your connection details in any downstream tools to account for the environment change. diff --git a/website/snippets/_new-sl-setup.md b/website/snippets/_new-sl-setup.md index b802db9c5ae..07b579c420f 100644 --- a/website/snippets/_new-sl-setup.md +++ b/website/snippets/_new-sl-setup.md @@ -1,13 +1,13 @@ You can set up the dbt Semantic Layer in dbt Cloud at the environment and project level. Before you begin: -- You must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment, hosted in North America. +- Have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. (Single-Tenant coming soon) - You must be part of the Owner group, and have the correct [license](/docs/cloud/manage-access/seats-and-users) and [permissions](/docs/cloud/manage-access/self-service-permissions) to configure the Semantic Layer: * Enterprise plan — Developer license with Account Admin permissions. Or Owner with a Developer license, assigned Project Creator, Database Admin, or Admin permissions. * Team plan — Owner with a Developer license. - You must have a successful run in your new environment. :::tip -If you're using the legacy Semantic Layer, we **highly** recommend you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt v1.6 or higher to use the new dbt Semantic Layer. Refer to the dedicated [migration guide](/guides/migration/sl-migration) for more info. +If you're using the legacy Semantic Layer, we **highly** recommend you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt v1.6 or higher to use the re-released dbt Semantic Layer. Refer to the dedicated [migration guide](/guides/migration/sl-migration) for more info. ::: 1. In dbt Cloud, create a new [deployment environment](/docs/deploy/deploy-environments#create-a-deployment-environment) or use an existing environment on dbt 1.6 or higher. diff --git a/website/snippets/_sl-connect-and-query-api.md b/website/snippets/_sl-connect-and-query-api.md new file mode 100644 index 00000000000..41452e587c2 --- /dev/null +++ b/website/snippets/_sl-connect-and-query-api.md @@ -0,0 +1,10 @@ +You can query your metrics in a JDBC-enabled tool or use existing first-class integrations with the dbt Semantic Layer. + +You must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment (Single-Tenant coming soon) + +- To learn how to use the JDBC or GraphQL API and what tools you can query it with, refer to [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview). + + * To authenticate, you need to [generate a service token](/docs/dbt-cloud-apis/service-tokens) with Semantic Layer Only and Metadata Only permissions. + * Refer to the [SQL query syntax](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. + +- To learn more about the sophisticated integrations that connect to the dbt Semantic Layer, refer to [Available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) for more info. diff --git a/website/snippets/_sl-define-metrics.md b/website/snippets/_sl-define-metrics.md index 29af3f5b7c3..3734e819c1b 100644 --- a/website/snippets/_sl-define-metrics.md +++ b/website/snippets/_sl-define-metrics.md @@ -1,4 +1,4 @@ -Now that you've created your first semantic model, it's time to define your first metric! You can define metrics with the dbt Cloud IDE or CLI. +Now that you've created your first semantic model, it's time to define your first metric! You can define metrics with the dbt Cloud IDE or command line. MetricFlow supports different metric types like [simple](/docs/build/simple), [ratio](/docs/build/ratio), [cumulative](/docs/build/cumulative), and [derived](/docs/build/derived). It's recommended that you read the [metrics overview docs](/docs/build/metrics-overview) before getting started. diff --git a/website/snippets/_sl-plan-info.md b/website/snippets/_sl-plan-info.md index 5fba18de6bb..26fb7df7ae5 100644 --- a/website/snippets/_sl-plan-info.md +++ b/website/snippets/_sl-plan-info.md @@ -1,2 +1,2 @@ -To define and query metrics with the {props.product}, you must be on a {props.plan} multi-tenant plan, {props.instance} (Additional region support coming soon).

The re-released dbt Semantic Layer is available on dbt v1.6 or higher. dbt Core users can use the MetricFlow CLI to define metrics in their local project, but won't be able to dynamically query them with integrated tools.


+To define and query metrics with the {props.product}, you must be on a {props.plan} multi-tenant plan .

The re-released dbt Semantic Layer is available on dbt v1.6 or higher. dbt Core users can use the MetricFlow CLI to define metrics in their local project, but won't be able to dynamically query them with integrated tools.


diff --git a/website/snippets/_sl-run-prod-job.md b/website/snippets/_sl-run-prod-job.md new file mode 100644 index 00000000000..31db07cfb86 --- /dev/null +++ b/website/snippets/_sl-run-prod-job.md @@ -0,0 +1,7 @@ +Once you’ve defined metrics in your dbt project, you can perform a job run in your deployment environment in dbt Cloud to materialize your metrics. The deployment environment is only supported for the dbt Semantic Layer at this moment. + +1. Go to **Deploy** in the navigation header +2. Select **Jobs** to re-run the job with the most recent code in the deployment environment. +3. Your metric should appear as a red node in the dbt Cloud IDE and dbt directed acyclic graphs (DAG). + + diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index b250fac4f31..d6f178098e0 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -1,6 +1,6 @@ :::important Testing and querying metrics in the dbt Cloud IDE not yet supported -Support for testing or querying metrics in the dbt Cloud IDE is not available in the current beta but is coming soon. +Support for testing or querying metrics in the dbt Cloud IDE is not available but is coming soon. You can use the **Preview** or **Compile** buttons in the IDE to run semantic validations and make sure your metrics are defined. You can [dynamically query metrics](#connect-and-query-api) with integrated tools on a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) plan using the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview). diff --git a/website/snippets/_v2-sl-prerequisites.md b/website/snippets/_v2-sl-prerequisites.md index 9fdc3b53143..f365abc1dc7 100644 --- a/website/snippets/_v2-sl-prerequisites.md +++ b/website/snippets/_v2-sl-prerequisites.md @@ -1,11 +1,9 @@ -To use the Semantic Layer, you must: - -- Have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment, hosted in North America. +- Have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. (Single-Tenant coming soon) - Have both your production and development environments running dbt version 1.6 or higher. Refer to [upgrade in dbt Cloud](/docs/dbt-versions/upgrade-core-in-cloud) for more info. -- Use Snowflake, BigQuery, Databricks, or Redshift (dbt Cloud Postgres support coming soon). +- Use Snowflake, BigQuery, Databricks, or Redshift - Create a successful run in the environment where you configure the Semantic Layer. - **Note:** Semantic Layer currently supports the Deployment environment for querying. (_development querying experience coming soon_) - Set up the [Semantic Layer API](/docs/dbt-cloud-apis/sl-api-overview) in the integrated tool to import metric definitions. From bbf3af05ee9146efa162fcb686d0134cbc2aae8c Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 5 Oct 2023 14:23:04 +0100 Subject: [PATCH 028/265] add tableau --- .../docs/use-dbt-semantic-layer/tableau.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 website/docs/docs/use-dbt-semantic-layer/tableau.md diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md new file mode 100644 index 00000000000..7bb49f2e46f --- /dev/null +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -0,0 +1,52 @@ +--- +title: "Tableau (beta)" +description: "Use Tableau worksheets to query the dbt Semantic Layer and produce dashboards with trusted date." +tags: [Semantic Layer] +sidebar_label: "Tableau (beta)" +--- + +The Tableau integration is a live connection into the dbt Semantic Layer using Tableau Desktop. It allows you to use worksheets to query the Semantic Layer directly and produce your dashboards with trusted data. + +## Prerequisites + +1. Tableau Desktop Installed and either an account with Tableau Server or Tableau Cloud that you can authenticate with +2. A JDBC URL, or a dbt Cloud environment Id and a Service Token to authenticate with from a dbt Cloud account that has the Semantic Layer configured. + + +## Installing + +1. Install this file () locally +2. Install this jdbc driver (same exact link we have in jdbc docs) to the folder based on your operating system + `Windows: C:\Program Files\Tableau\Drivers` + `Mac: ~/Library/Tableau/Drivers` + `Linux: /opt/tableau/tableau_driver/jdbc` +3. Open Tableau Desktop and find in the lefthand side the "dbt Semantic Layer by dbt Labs" +4. Connect with your JDBC connection information that's provided to you in your dbt Cloud Semantic Layer configuration + + +## Using the integration + +Once you authenticate, navigate to the left hand side and choose the database "DBT_SEMANTIC_LAYER" to see a data source with all the metrics and dimensions configured in your Semantic Layer. + +From there, you can go directly to a worksheet in the bottom left hand corner, and you'll find all the metrics and dimensions that are available to query on the left hand side of your window. + +You can visit the Tableau documentation (link out) to learn more about how to use Tableau worksheets and dashboards. + +## Things to note + +1. You will notice that the aggregation type for all of your metrics is "SUM" and it cannot be changed. The dbt Semantic Layer controls aggregation type and it is deliberately immutable. Note that the underlying aggregation in the dbt Semantic Layer may not be "SUM". +2. We surface all metrics and dimensions from the dbt Semantic Layer in the left hand side, but it should be noted that not all of them can be combined with one another. You will recieve an error message if a particular dimension cannot be sliced with a metric (or vice versa) +3. Certain Table calculations like "Totals" and "Percent Of" may not be accurate when using metrics aggregated in a non-additive way (e.g., count distinct) + +## Unsupported functionality + +Note that we may support this functionality in a future release + +1. Updating the data source page +2. Using Extract Mode +3. Unioning Tables +4. Writing Custom SQL +5. Table Extensions +6. Cross Database Joins +7. All functions in Analysis --> Create Calculated Field +8. Filters on Metric values From 68283d5531b9464ab0d808cc6ef77c39257e4a17 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 5 Oct 2023 14:28:47 +0100 Subject: [PATCH 029/265] cloud cli rn --- .../03-Oct-2023/cloud-cli-beta.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-beta.md diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-beta.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-beta.md new file mode 100644 index 00000000000..67fcd0a7f71 --- /dev/null +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-beta.md @@ -0,0 +1,29 @@ +--- +title: "New: Develop with the dbt Cloud CLI" +description: "October 2023: Learn about the new beta CLI development experience, powered by dbt Cloud." +sidebar_position: 6 +sidebar_label: "New: Develop with the dbt Cloud CLI" +tags: [Oct-2023, CLI, dbt Cloud] +date: 2023-10-17 +--- + +We are excited to announce a **unified command line for dbt.** It’s a local development experience, powered by dbt Cloud. It’s easy to get started: `brew install dbt` and you’re ready to go. + +We will continue to invest in the dbt Cloud IDE as the easiest and most accessible way to get started using dbt, especially for data analysts who have never developed software using the CLI before. We will keep improving the speed, stability, and feature richness of the IDE, as we have been all year long [https://www.getdbt.com/blog/improvements-to-the-dbt-cloud-ide/]. + +We also know that many people developing in dbt have a preference for local development, where they can use their favorite terminal, text editor, keybindings, color scheme, and so on. This includes people with data engineering backgrounds, as well as those analytics engineers who started writing code in the dbt Cloud IDE and have expanded their skillset. + +The new dbt Cloud CLI offers the best of both worlds, including: + +- The power of developing against the dbt Cloud platform +- The flexibility of your own local setup. + +Run whichever community-developed plugins, pre-commit hooks, or other arbitrary scripts you like. + +Some of the unique capabilities to this dbt Cloud CLI includes: + +- Auto-deferral, +- Support for dbt Mesh (cross-project `ref`), +- Development workflow for dbt Semantic Layer + +For more info, check out the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) page. From f9709be5a9a0c09efa6b7e723f9ffa4d53c316aa Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 5 Oct 2023 16:13:44 +0100 Subject: [PATCH 030/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index e181197efbc..8854a5000b1 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -18,6 +18,7 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Secure credential storage in the dbt Cloud platform. * Automatic deferral of build artifacts to your Cloud project's production environment. * Speedier, lower cost builds. +* Support for dbt Mesh (cross-project `ref`), * Significant platform improvements, to be released over the coming months. The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. From d988d33ac514e757273312acf6a71ac1e3a47f16 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 5 Oct 2023 16:14:34 +0100 Subject: [PATCH 031/265] update to pp --- .../{cloud-cli-beta.md => cloud-cli-pp.md} | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) rename website/docs/docs/dbt-versions/release-notes/03-Oct-2023/{cloud-cli-beta.md => cloud-cli-pp.md} (59%) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-beta.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md similarity index 59% rename from website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-beta.md rename to website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md index 67fcd0a7f71..0549f8b2591 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-beta.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md @@ -1,29 +1,31 @@ --- title: "New: Develop with the dbt Cloud CLI" -description: "October 2023: Learn about the new beta CLI development experience, powered by dbt Cloud." +description: "October 2023: Learn about the new dbt Cloud CLI development experience, now in public preview," sidebar_position: 6 sidebar_label: "New: Develop with the dbt Cloud CLI" tags: [Oct-2023, CLI, dbt Cloud] date: 2023-10-17 --- -We are excited to announce a **unified command line for dbt.** It’s a local development experience, powered by dbt Cloud. It’s easy to get started: `brew install dbt` and you’re ready to go. +We are excited to announce the dbt Cloud CLI, **unified command line for dbt**, is available in public preview. It’s a local development experience, powered by dbt Cloud. It’s easy to get started: `brew install dbt-cloud-cli` and you’re ready to go. -We will continue to invest in the dbt Cloud IDE as the easiest and most accessible way to get started using dbt, especially for data analysts who have never developed software using the CLI before. We will keep improving the speed, stability, and feature richness of the IDE, as we have been all year long [https://www.getdbt.com/blog/improvements-to-the-dbt-cloud-ide/]. +We will continue to invest in the dbt Cloud IDE as the easiest and most accessible way to get started using dbt, especially for data analysts who have never developed software using the command line before. We will keep improving the speed, stability, and feature richness of the IDE, as we have been all year long [https://www.getdbt.com/blog/improvements-to-the-dbt-cloud-ide/]. We also know that many people developing in dbt have a preference for local development, where they can use their favorite terminal, text editor, keybindings, color scheme, and so on. This includes people with data engineering backgrounds, as well as those analytics engineers who started writing code in the dbt Cloud IDE and have expanded their skillset. The new dbt Cloud CLI offers the best of both worlds, including: - The power of developing against the dbt Cloud platform -- The flexibility of your own local setup. +- The flexibility of your own local setup + Run whichever community-developed plugins, pre-commit hooks, or other arbitrary scripts you like. Some of the unique capabilities to this dbt Cloud CLI includes: -- Auto-deferral, +- Automatic deferral of build artifacts to your Cloud project's production environment - Support for dbt Mesh (cross-project `ref`), - Development workflow for dbt Semantic Layer +- Speedier, lower cost builds For more info, check out the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) page. From 96907de43db0eed3b96c4d4ee30a6f690ee2ad38 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 5 Oct 2023 16:45:38 +0100 Subject: [PATCH 032/265] update to pp --- website/docs/docs/cloud/cloud-cli-installation.md | 6 +++--- website/docs/docs/cloud/configure-cloud-cli.md | 4 ++-- website/sidebars.js | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index e181197efbc..f50529e942f 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -5,9 +5,9 @@ description: "Instructions for installing and configuring dbt Cloud CLI" pagination_next: "docs/cloud/configure-cloud-cli" --- -:::info Beta functionality +:::info Public preview functionality -The dbt Cloud CLI is currently in [public beta](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). +The dbt Cloud CLI is currently in [public preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). ::: @@ -96,7 +96,7 @@ Advanced users can configure multiple projects to use the same Cloud CLI execute ## Update dbt Cloud CLI -The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the beta period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. +The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the public preview period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. #### Update with Homebrew (MacOS) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index e1bde59be2e..12349d6ef99 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -4,9 +4,9 @@ id: configure-cloud-cli description: "Instructions on how to configure the dbt Cloud CLI" --- -:::info Beta functionality +:::info Public preview functionality -The dbt Cloud CLI is currently in [public beta](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). +The dbt Cloud CLI is currently in [public preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). ::: diff --git a/website/sidebars.js b/website/sidebars.js index d27738c061a..1de66502556 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -123,7 +123,7 @@ const sidebarSettings = { "docs/cloud/about-cloud-develop", { type: "category", - label: "dbt Cloud CLI (beta)", + label: "dbt Cloud CLI (public preview)", link: { type: "doc", id: "docs/cloud/cloud-cli-installation" }, items: [ "docs/cloud/cloud-cli-installation", From b55c0fb0733c16f89790682bc4af1debcb341de5 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 5 Oct 2023 18:01:45 +0100 Subject: [PATCH 033/265] turn into tabs --- .../docs/docs/cloud/cloud-cli-installation.md | 84 +++++++++++++++++-- 1 file changed, 76 insertions(+), 8 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index b009294e962..cf60d3c6851 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -27,20 +27,76 @@ The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open- You can install the dbt Cloud CLI on the command line by using one of these methods: -* [Install with Homebrew (MacOS)](#install-with-homebrew-macos)
-* [Install manually (Windows)](#install-manually-windows)
-* [Install manually (Linux)](#install-manually-linux)
+ -:::caution + -For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running `dbt`. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). +Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in your code editor or command line terminal. If your operating system runs into path conflicts, refer to the [FAQs](#faqs). -If you have dbt Core installed locally, ensure that you deactivate your Python environment or uninstall it using `pip uninstall dbt` before proceeding. Alternatively, advanced users can modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both dbt Cloud CLI and dbt Core together. +1. Run the following command to verify that there is no conflict with a dbt Core installation on your system: + +```bash +which dbt +``` + - This should return a `dbt not found`. If the dbt help text appears, use `pip uninstall dbt` to deactivate dbt Core from your machine. + +2. Install the dbt Cloud CLI with Homebrew: + +```bash +brew tap dbt-labs/dbt-cli +brew install dbt-cloud-cli +``` + +3. Verify the installation by running `dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. + + + + + +If your operating system runs into path conflicts, refer to the [FAQs](#faqs). + +1. Download the latest Windows release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). + +2. Extract the `dbt.exe` executeable into the same folder as your dbt project. + +:::info + +Advanced users can configure multiple projects to use the same dbt Cloud CLI by placing the executeable in the Program Files folder and [adding it to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). + +Note that if you are using VS Code, you'll need to restart it to pick up modified environment variables. +::: + +3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. + + + + + +If your operating system runs into path conflicts, refer to the [FAQs](#faqs). + +1. Download the latest Linux release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). (Pick the file based on your CPU architecture) + +2. Extract the `dbt-cloud-cli` binary to the same folder as your dbt project. + +```bash +tar -xf dbt_0.29.9_linux_amd64.tar.gz +./dbt --version +``` + +:::info + +Advanced users can configure multiple projects to use the same Cloud CLI executeable by adding it to their PATH environment variable in their shell profile. -You can always uninstall the Cloud CLI to return to using dbt Core. ::: +3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed."> + + + + + + ## Update dbt Cloud CLI The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the public preview period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. @@ -115,3 +171,15 @@ After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt dbt deps dbt compile ``` + +## FAQs + +
+ +How do I solve for path conflicts +For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running `dbt`. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). + +If you have dbt Core installed locally, ensure that you deactivate your Python environment or uninstall it using `pip uninstall dbt` before proceeding. Alternatively, advanced users can modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both dbt Cloud CLI and dbt Core together. + +You can always uninstall the Cloud CLI to return to using dbt Core. +
From 4f895d5eb209c548591a0641dc9fe5ce65fff9cc Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Thu, 5 Oct 2023 13:33:31 -0500 Subject: [PATCH 034/265] add defer page to cloud develop docs --- .../docs/cloud/about-cloud-develop-defer.md | 42 +++++++++++++++++++ .../docs/docs/cloud/about-cloud-develop.md | 2 +- website/sidebars.js | 1 + 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 website/docs/docs/cloud/about-cloud-develop-defer.md diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md new file mode 100644 index 00000000000..34e2c1728cc --- /dev/null +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -0,0 +1,42 @@ +--- +title: Using defer in dbt Cloud +id: about-cloud-develop-defer +description: "Learn how to leverage defer to prod when developing with dbt Cloud." +sidebar_label: "Using defer in dbt Cloud" +pagination_next: "docs/cloud/cloud-cli-installation" +--- + + +[Defer](/reference/node-selection/defer) is a powerful feature that allows developers to only build and run and test models they've edited without having to first run and build these models' upstream parents. This is powered by having a production manifest to compare to, and dbt will resolve the `{{ ref() }}` function with upstream production artifacts. + +Both the dbt Cloud IDE and the dbt Cloud CLI allow users to natively defer to production metadata directly in their development workflows, dramatically reducing development time and warehouse spend by preventing unecessary model builds. + +## Required setup + +Set your production environment using the [production environment checkbox](/docs/deploy/deploy-environments#set-as-production-environment-beta) in the environment settings page. This can be set for one deployment environment per dbt Cloud project. When using defer, the artifacts from the latest successful, non-CI job execution in the production environment will be compared to. + +### Defer in the IDE + +Defer in the IDE is as simple as toggling the `Defer to production` switch on the command bar! When enabled, dbt Cloud will: + +1. Pull down the most recent manifest from the Production environment for comparison +2. Pass the `--defer` flag to the command (for any command that accepts the flag) + +For example, if you were to start developing with on a new branch with [nothing in your development schema](/reference/node-selection/defer#usage), make an edit to a single model, and run `dbt build -s state:modified` you would see *just* that model run, with any ` {{ ref() }}` functions resolve to the production location of the reffed models! + +### Defer in dbt Cloud CLI + +One key difference between using `--defer` in the Cloud CLI vs the IDE is that defer is *automatically on by default for all invocations*, using artifacts from your production evironment to compare. You can pass the `--no-defer` flag to your dbt command to disable this behavior. This flag is unique to the dbt Cloud CLI only. + +Cloud CLI offers additional flexibility for declaring which environment is used as the source of deferral artifacts. You can set a `defer-env-id` key in either your `dbt_project.yml` file or your `dbt_cloud.yml` file. + +```yml +# in dbt_cloud.yml +dever-env-id: '123456' +``` + +```yml +# in dbt_project.yml +dbt_cloud: + dever-env-id: '123456' +``` diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 88066d4dcd4..ce41318764f 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -3,7 +3,7 @@ title: About developing in dbt Cloud id: about-cloud-develop description: "Learn how to develop your dbt projects using dbt Cloud." sidebar_label: "About developing in dbt Cloud" -pagination_next: "docs/cloud/cloud-cli-installation" +pagination_next: "docs/cloud/about-cloud-develop-defer" --- dbt Cloud offers a fast and reliable way to work on your dbt project. You can use it through an integrated development environment (IDE) in your browser or a dbt Cloud-powered command line interface (CLI): diff --git a/website/sidebars.js b/website/sidebars.js index d27738c061a..23052cfd8e9 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -121,6 +121,7 @@ const sidebarSettings = { link: { type: "doc", id: "docs/cloud/about-cloud-develop" }, items: [ "docs/cloud/about-cloud-develop", + "docs/cloud/about-cloud-develop-defer", { type: "category", label: "dbt Cloud CLI (beta)", From f3fedc79c2883fc003de9f109c08e2de464c32f1 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 6 Oct 2023 10:09:07 +0100 Subject: [PATCH 035/265] Update website/docs/docs/cloud/about-cloud-develop.md --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 5a217d73442..5d9aef955b6 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -14,4 +14,4 @@ dbt Cloud offers a fast and reliable way to work on your dbt project. You can us This documentation section provides detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive setup guide, refer to our [quickstart guides](/quickstarts). -Something to note is that the dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. +Something to note is that the dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). From 81c11a870cf8f53f11abf7a86ffb0622b5d5b0e2 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 6 Oct 2023 10:09:24 +0100 Subject: [PATCH 036/265] Update website/docs/docs/cloud/about-cloud-develop.md --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 88066d4dcd4..6890942029b 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -9,7 +9,7 @@ pagination_next: "docs/cloud/cloud-cli-installation" dbt Cloud offers a fast and reliable way to work on your dbt project. You can use it through an integrated development environment (IDE) in your browser or a dbt Cloud-powered command line interface (CLI): - **[dbt Cloud CLI](/docs/cloud/cloud-cli-installation)** — Allows you to develop and run dbt commands from your local command line or code editor against your dbt Cloud development environment. - - Note, the dbt Cloud CLI is distinct from [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source command-line tool for dbt. Both tools are command lines that use the same dbt commands, however, the dbt Cloud CLI is tailored to run specifically on dbt Cloud's infrastructure. + - The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). - **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface (UI). From f36bed168603b9016b024184606e7daf6ae5dde7 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 6 Oct 2023 10:13:48 +0100 Subject: [PATCH 037/265] Update about-cloud-develop.md --- website/docs/docs/cloud/about-cloud-develop.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 6890942029b..a20ecc331e5 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -9,7 +9,8 @@ pagination_next: "docs/cloud/cloud-cli-installation" dbt Cloud offers a fast and reliable way to work on your dbt project. You can use it through an integrated development environment (IDE) in your browser or a dbt Cloud-powered command line interface (CLI): - **[dbt Cloud CLI](/docs/cloud/cloud-cli-installation)** — Allows you to develop and run dbt commands from your local command line or code editor against your dbt Cloud development environment. - - The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). + + - Something to note is that the dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). - **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface (UI). From e28e84b5ec6f146d5fbddba9f0bce7ded5d231cc Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 6 Oct 2023 12:13:24 +0100 Subject: [PATCH 038/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index cf60d3c6851..f1a235d8b34 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -21,7 +21,7 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Support for dbt Mesh (cross-project `ref`), * Significant platform improvements, to be released over the coming months. -The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. +The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). ## Install dbt Cloud CLI From 2c287c4372d53f4e6387bc7b0d5d2f725d71b999 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 6 Oct 2023 13:19:04 +0100 Subject: [PATCH 039/265] update commands --- .../docs/docs/cloud/about-cloud-develop.md | 20 ++++-- .../docs/docs/cloud/cloud-cli-installation.md | 67 +++---------------- .../docs/docs/cloud/configure-cloud-cli.md | 1 + website/docs/reference/dbt-commands.md | 61 +++++++++-------- website/sidebars.js | 2 +- 5 files changed, 62 insertions(+), 89 deletions(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 4ea2172775d..3a3d1a3d83f 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -4,15 +4,27 @@ id: about-cloud-develop description: "Learn how to develop your dbt projects using dbt Cloud." sidebar_label: "About developing in dbt Cloud" pagination_next: "docs/cloud/cloud-cli-installation" +hide_table_of_contents: true --- -dbt Cloud offers a fast and reliable way to work on your dbt project. You can use it through an integrated development environment (IDE) in your browser or a dbt Cloud-powered command line interface (CLI): +dbt Cloud offers a fast and reliable way to work on your dbt project. It runs dbt Core in a hosted (single or multi-tenant) environment with a browser-based integrated development environment (IDE) or a dbt Cloud-powered command line interface (CLI)[^1]. This allows you to seamlessly develop, test, and run dbt commands in the dbt Cloud IDE or through the dbt Cloud CLI. -- **[dbt Cloud CLI](/docs/cloud/cloud-cli-installation)** — Allows you to develop and run dbt commands from your local command line or code editor against your dbt Cloud development environment. +
- - Something to note is that the dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). + -- **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface (UI). + + +

This documentation section provides detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive setup guide, refer to our [quickstart guides](/quickstarts). +[^1]: The dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index cf60d3c6851..43052086f32 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -1,10 +1,12 @@ --- title: Install dbt Cloud CLI +sidebar_label: "Install dbt Cloud CLI" id: cloud-cli-installation description: "Instructions for installing and configuring dbt Cloud CLI" pagination_next: "docs/cloud/configure-cloud-cli" --- + :::info Public preview functionality The dbt Cloud CLI is currently in [public preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). @@ -21,8 +23,6 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Support for dbt Mesh (cross-project `ref`), * Significant platform improvements, to be released over the coming months. -The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. - ## Install dbt Cloud CLI You can install the dbt Cloud CLI on the command line by using one of these methods: @@ -96,61 +96,7 @@ Advanced users can configure multiple projects to use the same Cloud CLI execute - ## Update dbt Cloud CLI The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the public preview period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. @@ -176,6 +122,11 @@ dbt compile
+What's the difference between the dbt Cloud CLI and dbt Core? +The dbt Cloud CLI and dbt Core, an open-source project, are both command line tools that enable you to run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its features. +
+ +
How do I solve for path conflicts For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running `dbt`. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). @@ -183,3 +134,7 @@ If you have dbt Core installed locally, ensure that you deactivate your Python e You can always uninstall the Cloud CLI to return to using dbt Core.
+ + + + diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 12349d6ef99..a03b0470295 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -2,6 +2,7 @@ title: Configure dbt Cloud CLI id: configure-cloud-cli description: "Instructions on how to configure the dbt Cloud CLI" +sidebar_label: "Configure dbt Cloud CLI" --- :::info Public preview functionality diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index 83556d5d0fa..cf970129169 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -2,42 +2,47 @@ title: "dbt Command reference" --- -dbt is typically run using the following ways: +so debug is for cli (dbt core) and dbt cancel and dbt reattach are for the cloud cli and NOT dbt core? or dbt core? (sorry i’m trying to be super clear here) -* In dbt Cloud using the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) -* On the command line using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or open-sourced [dbt Core](https://github.com/dbt-labs/dbt-core) +You can run dbt using the following tools: -The dbt Cloud CLI and dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. +- In dbt Cloud using the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) +- On the command line interface using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or open-source [dbt Core](https://github.com/dbt-labs/dbt-core), both of which enable you to execute dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). The following sections outline the commands supported by dbt and their relevant flags. For information about selecting models on the command line, consult the docs on [Model selection syntax](/reference/node-selection/syntax). ### Available commands - -Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or command line. Use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. - -| Command | Description | Version | -| ------- | ----------- | ------- | -| [build](/reference/commands/build) | Build and test all selected resources (models, seeds, snapshots, tests) | All [supported versions](/docs/dbt-versions/core) | -| [clean](/reference/commands/clean) | Deletes artifacts present in the dbt project | All [supported versions](/docs/dbt-versions/core) | -| [clone](/reference/commands/clone) | Clone selected models from the specified state | Requires [dbt v1.6 or higher](/docs/dbt-versions/core) | -| [compile](/reference/commands/compile) | Compiles (but does not run) the models in a project | All [supported versions](/docs/dbt-versions/core) | -| [debug](/reference/commands/debug) | Debugs dbt connections and projects | All [supported versions](/docs/dbt-versions/core) | -| [deps](/reference/commands/deps) | Downloads dependencies for a project | All [supported versions](/docs/dbt-versions/core) | -| [docs](/reference/commands/cmd-docs) | Generates documentation for a project | All [supported versions](/docs/dbt-versions/core) | -| [list](/reference/commands/list) | Lists resources defined in a dbt project | All [supported versions](/docs/dbt-versions/core) | -| [parse](/reference/commands/parse) | Parses a project and writes detailed timing info | All [supported versions](/docs/dbt-versions/core) | -| [retry](/reference/commands/retry) | Retry the last run `dbt` command from the point of failure | Requires [dbt v1.6 or higher](/docs/dbt-versions/core) | -| [run](/reference/commands/run) | Runs the models in a project | All [supported versions](/docs/dbt-versions/core) | -| [run-operation](/reference/commands/run-operation) | Invoke a macro, including running arbitrary maintenance SQL against
the database | All [supported versions](/docs/dbt-versions/core) | -| [seed](/reference/commands/seed) | Loads CSV files into the database | All [supported versions](/docs/dbt-versions/core) | -| [show](/reference/commands/show) | Preview table rows post-transformation | All [supported versions](/docs/dbt-versions/core) | -| [snapshot](/reference/commands/snapshot) | Executes "snapshot" jobs defined in a project | All [supported versions](/docs/dbt-versions/core) | -| [source](/reference/commands/source) | Provides tools for working with source data (including validating that
sources are "fresh") | All [supported versions](/docs/dbt-versions/core) | -| [test](/reference/commands/test) | Executes tests defined in a project | All [supported versions](/docs/dbt-versions/core) | -| [init](/reference/commands/init) | Initializes a new dbt project (dbt Core only) | All [supported versions](/docs/dbt-versions/core) | + +All commands in the table are compatible with either the dbt Cloud IDE, dbt Cloud CLI, or dbt Core. + +You can run dbt commands in your specific tool by prefixing them with `dbt`. For example, to run the `test` command, type `dbt test`. + +| Command | Description | Compatible tools | Version | +| ------- | ----------- | ---------------- | ------- | +| [build](/reference/commands/build) | Build and test all selected resources (models, seeds, snapshots, tests) | All | All [supported versions](/docs/dbt-versions/core) | +| cancel | Cancels the most recent invocation.| dbt Cloud CLI | Requires [dbt v1.6 or higher](/docs/dbt-versions/core) | +| [clean](/reference/commands/clean) | Deletes artifacts present in the dbt project | All | All [supported versions](/docs/dbt-versions/core) | +| [clone](/reference/commands/clone) | Clone selected models from the specified state | dbt Cloud CLI
dbt Core | Requires [dbt v1.6 or higher](/docs/dbt-versions/core) | +| [compile](/reference/commands/compile) | Compiles (but does not run) the models in a project | All | All [supported versions](/docs/dbt-versions/core) | +| [debug](/reference/commands/debug) | Debugs dbt connections and projects | dbt Core | All [supported versions](/docs/dbt-versions/core) | +| [deps](/reference/commands/deps) | Downloads dependencies for a project | All | All [supported versions](/docs/dbt-versions/core) | +| [docs](/reference/commands/cmd-docs) | Generates documentation for a project | All | All [supported versions](/docs/dbt-versions/core) | +| help | Displays help information for any command | dbt Core
dbt Cloud CLI | All [supported versions](/docs/dbt-versions/core) | +| [list](/reference/commands/list) | Lists resources defined in a dbt project | All | All [supported versions](/docs/dbt-versions/core) | +| [parse](/reference/commands/parse) | Parses a project and writes detailed timing info | All | All [supported versions](/docs/dbt-versions/core) | +| reattach | Reattaches to the most recent invocation to retrieve logs and artifacts. | dbt Cloud CLI | Requires [dbt v1.6 or higher](/docs/dbt-versions/core) | +| [retry](/reference/commands/retry) | Retry the last run `dbt` command from the point of failure | All | Requires [dbt v1.6 or higher](/docs/dbt-versions/core) | +| [run](/reference/commands/run) | Runs the models in a project | All | All [supported versions](/docs/dbt-versions/core) | +| [run-operation](/reference/commands/run-operation) | Invoke a macro, including running arbitrary maintenance SQL against the database | All | All [supported versions](/docs/dbt-versions/core) | +| [seed](/reference/commands/seed) | Loads CSV files into the database | All | All [supported versions](/docs/dbt-versions/core) | +| [show](/reference/commands/show) | Preview table rows post-transformation | All | All [supported versions](/docs/dbt-versions/core) | +| [snapshot](/reference/commands/snapshot) | Executes "snapshot" jobs defined in a project | All | All [supported versions](/docs/dbt-versions/core) | +| [source](/reference/commands/source) | Provides tools for working with source data (including validating that sources are "fresh") | All | All [supported versions](/docs/dbt-versions/core) | +| [test](/reference/commands/test) | Executes tests defined in a project | All | All [supported versions](/docs/dbt-versions/core) | +| [init](/reference/commands/init) | Initializes a new dbt project | dbt Core | All [supported versions](/docs/dbt-versions/core) |
@@ -66,7 +71,7 @@ Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/ - + Use the following dbt commands in the [CLI](/docs/core/about-the-cli) and use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. diff --git a/website/sidebars.js b/website/sidebars.js index 1de66502556..66cbff70945 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -123,7 +123,7 @@ const sidebarSettings = { "docs/cloud/about-cloud-develop", { type: "category", - label: "dbt Cloud CLI (public preview)", + label: "dbt Cloud CLI", link: { type: "doc", id: "docs/cloud/cloud-cli-installation" }, items: [ "docs/cloud/cloud-cli-installation", From abd67fa7a499ffab348a8a87c4b491e2890b3025 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 6 Oct 2023 14:00:09 +0100 Subject: [PATCH 040/265] address issue 4041 --- .../global-configs/command-line-flags.md | 59 ++++++++++++++----- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/website/docs/reference/global-configs/command-line-flags.md b/website/docs/reference/global-configs/command-line-flags.md index 6496c92da6d..ce34ba85b41 100644 --- a/website/docs/reference/global-configs/command-line-flags.md +++ b/website/docs/reference/global-configs/command-line-flags.md @@ -4,60 +4,91 @@ id: "command-line-flags" sidebar: "Command line flags" --- -Command line (CLI) flags immediately follow `dbt` and precede your subcommand. When set, CLI flags override environment variables and profile configs. +For consistency, command line (CLI) flags should come right after the `dbt` prefix and its subcommands. This includes "global" flags (supported for all commands). When set, CLI flags override environment variables and profile configs. -Use this non-boolean config structure, replacing `` with the config you are enabling or disabling, `` with the new setting for the config, and `` with the command this config applies to: +For example, instead of using: + +```bash +dbt --no-populate-cache run +``` + +You should use: + +```bash +dbt run --no-populate-cache +``` + +Historically, passing flags (such as "global flags") _before_ the subcommand is a legacy functionality that dbt Labs can remove at any time. We do not support using the same flag before and after the subcommand. + + + + + +Use this non-boolean config structure: +- Replacing `` with the command this config applies to. +- `` with the config you are enabling or disabling, and +- `` with the new setting for the config. ```text -$ --= + --= ``` -Non-boolean config examples: +### Example ```text -dbt --printer-width=80 run -dbt --indirect-selection=eager test +dbt run --printer-width=80 +dbt test --indirect-selection=eager ``` -To turn on boolean configs, you would use the `--` CLI flag, and a `--no-` CLI flag to turn off boolean configs, replacing `` with the config you are enabling or disabling and `` with the command this config applies to. + + + + +To enable or disable boolean configs: +- Use `` this config applies to. +- Followed by `--` to turn it on, or `--no-` to turn it off. +- Replace `` with the config you are enabling or disabling -Boolean config structure: ```text -dbt -- -dbt --no- +dbt -- +dbt --no- ``` -Boolean config example: +### Example ```text -dbt --version-check run -dbt --no-version-check run +dbt run --version-check +dbt run --no-version-check ``` - \ No newline at end of file + + + + + From 533f1d6cec5bd310568d86e6f928ba2d9b5f4a43 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 6 Oct 2023 14:26:41 +0100 Subject: [PATCH 041/265] Update website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md --- .../docs/docs/running-a-dbt-project/run-your-dbt-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md index 9cf9002ecc2..436ec6def1c 100644 --- a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md +++ b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md @@ -14,7 +14,7 @@ You can run your dbt projects with [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud - **dbt Core**: An open source project where you can develop from the command line. -The dbt Cloud CLI and dbt Core are both command line tools that allow you to run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. +The dbt Cloud CLI and dbt Core are both command line tools that enable you to run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). The command line is available from your computer's terminal application such as Terminal and iTerm. With the command line, you can run commands and do other work from the current working directory on your computer. Before running the dbt project from the command line, make sure you are working in your dbt project directory. Learning terminal commands such as `cd` (change directory), `ls` (list directory contents), and `pwd` (present working directory) can help you navigate the directory structure on your system. From 0d5b0f7085a1ff20a3e89c5083f8ab97a4d3e0dd Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 6 Oct 2023 14:27:18 +0100 Subject: [PATCH 042/265] Update website/docs/docs/core/about-the-cli.md --- website/docs/docs/core/about-the-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/core/about-the-cli.md b/website/docs/docs/core/about-the-cli.md index 75e4a5705a2..48777ed7703 100644 --- a/website/docs/docs/core/about-the-cli.md +++ b/website/docs/docs/core/about-the-cli.md @@ -22,4 +22,4 @@ If you're using the command line, we recommend learning some basics of your term You can find more information on installing and setting up the dbt Core [here](/docs/core/installation). -dbt also supports a [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and both dbt Core and the dbt Cloud CLI are command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure. +dbt also supports a dbt Cloud CLI and dbt Core, both command line tools that enable you to run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). From 7de8890bbcebcaceddafe3a9898d555d6123b1c6 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 6 Oct 2023 16:33:34 +0100 Subject: [PATCH 043/265] add dbt mesh --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- website/docs/docs/cloud/configure-cloud-cli.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index f1a235d8b34..fbc614a887a 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -18,7 +18,7 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Secure credential storage in the dbt Cloud platform. * Automatic deferral of build artifacts to your Cloud project's production environment. * Speedier, lower cost builds. -* Support for dbt Mesh (cross-project `ref`), +* Support for dbt Mesh ([cross-project `ref`)](/docs/collaborate/govern/project-dependencies)), * Significant platform improvements, to be released over the coming months. The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 12349d6ef99..5e33716beef 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -60,4 +60,6 @@ dbt-cloud: The dbt Cloud CLI shares the same set of commands as dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. Since this is still invoking dbt under the hood, you'll still need to run `dbt deps`, followed by the same model build commands you typically run. +The dbt Cloud CLI supports [project dependencies](/docs/collaborate/govern/project-dependencies), which is an exciting way to depend on another project using the metadata service in dbt Cloud. It instantly resolves references (or `ref`) to public models defined in other projects. You don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. + Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). From 2074866c780f584a815e14e43c865c391940f9e0 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 6 Oct 2023 16:38:01 +0100 Subject: [PATCH 044/265] improve ux --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 3a3d1a3d83f..920ea1d57ba 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -9,7 +9,7 @@ hide_table_of_contents: true dbt Cloud offers a fast and reliable way to work on your dbt project. It runs dbt Core in a hosted (single or multi-tenant) environment with a browser-based integrated development environment (IDE) or a dbt Cloud-powered command line interface (CLI)[^1]. This allows you to seamlessly develop, test, and run dbt commands in the dbt Cloud IDE or through the dbt Cloud CLI. -
+
Date: Fri, 6 Oct 2023 16:02:13 -0400 Subject: [PATCH 045/265] Update website/docs/docs/cloud/cloud-cli-installation.md Co-authored-by: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> --- website/docs/docs/cloud/cloud-cli-installation.md | 1 - 1 file changed, 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index fbc614a887a..5470a0c7c4a 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -168,7 +168,6 @@ To update, follow the same process explained in [Install manually (Windows)](#in After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. For example, you can execute the following commands to compile a project using dbt Cloud: ```bash -dbt deps dbt compile ``` From 2da6f8029dc9fd428740e032e0dc50a9d1b90af0 Mon Sep 17 00:00:00 2001 From: Greg McKeon Date: Fri, 6 Oct 2023 16:03:00 -0400 Subject: [PATCH 046/265] Update website/docs/docs/cloud/configure-cloud-cli.md Co-authored-by: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 5e33716beef..2df176fbdd7 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -58,7 +58,7 @@ dbt-cloud: ## Use the dbt Cloud CLI -The dbt Cloud CLI shares the same set of commands as dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. Since this is still invoking dbt under the hood, you'll still need to run `dbt deps`, followed by the same model build commands you typically run. +The dbt Cloud CLI shares the same set of commands as dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. The dbt Cloud CLI supports [project dependencies](/docs/collaborate/govern/project-dependencies), which is an exciting way to depend on another project using the metadata service in dbt Cloud. It instantly resolves references (or `ref`) to public models defined in other projects. You don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. From 84524cecea7bcf6e3a22a6197e70c0a0985fbf9a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 9 Oct 2023 11:12:31 +0100 Subject: [PATCH 047/265] Update cloud-cli-installation.md --- .../docs/docs/cloud/cloud-cli-installation.md | 96 +++++-------------- 1 file changed, 26 insertions(+), 70 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 5470a0c7c4a..fc51a9aa94b 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -17,22 +17,19 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Secure credential storage in the dbt Cloud platform. * Automatic deferral of build artifacts to your Cloud project's production environment. -* Speedier, lower cost builds. -* Support for dbt Mesh ([cross-project `ref`)](/docs/collaborate/govern/project-dependencies)), +* Speedier, lower-cost builds. +* Support for dbt Mesh ([cross-project `ref`](/docs/collaborate/govern/project-dependencies)), * Significant platform improvements, to be released over the coming months. -The dbt Cloud CLI and [dbt Core](https://github.com/dbt-labs/dbt-core), an open-source project, are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). - ## Install dbt Cloud CLI You can install the dbt Cloud CLI on the command line by using one of these methods: - - + -Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in your code editor or command line terminal. If your operating system runs into path conflicts, refer to the [FAQs](#faqs). +Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in your code editor or command line terminal. Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. 1. Run the following command to verify that there is no conflict with a dbt Core installation on your system: @@ -54,7 +51,7 @@ brew install dbt-cloud-cli -If your operating system runs into path conflicts, refer to the [FAQs](#faqs). +Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. 1. Download the latest Windows release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). @@ -62,9 +59,9 @@ If your operating system runs into path conflicts, refer to the [FAQs](#faqs). :::info -Advanced users can configure multiple projects to use the same dbt Cloud CLI by placing the executeable in the Program Files folder and [adding it to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). +Advanced users can configure multiple projects to use the same dbt Cloud CLI by placing the executable in the Program Files folder and [adding it to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). -Note that if you are using VS Code, you'll need to restart it to pick up modified environment variables. +Note that if you are using VS Code, you must restart it to pick up modified environment variables. ::: 3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. @@ -73,7 +70,7 @@ Note that if you are using VS Code, you'll need to restart it to pick up modifie -If your operating system runs into path conflicts, refer to the [FAQs](#faqs). +Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. 1. Download the latest Linux release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). (Pick the file based on your CPU architecture) @@ -86,7 +83,7 @@ tar -xf dbt_0.29.9_linux_amd64.tar.gz :::info -Advanced users can configure multiple projects to use the same Cloud CLI executeable by adding it to their PATH environment variable in their shell profile. +Advanced users can configure multiple projects to use the same Cloud CLI executable by adding it to their PATH environment variable in their shell profile. ::: @@ -96,71 +93,24 @@ Advanced users can configure multiple projects to use the same Cloud CLI execute - ## Update dbt Cloud CLI The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the public preview period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. -#### Update with Homebrew (MacOS) + + + To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. -#### Update manually (Windows and Linux) -To update, follow the same process explained in [Install manually (Windows)](#install-manually-windows) and replace the existing `dbt.exe` executable with the new one. + + + +To update, follow the same process explained in [Install manually (Windows)](/docs/cloud/cloud-cli-installation?install=windows#install-dbt-cloud-cli) and replace the existing `dbt.exe` executable with the new one. + + + + ## Next steps @@ -175,6 +125,12 @@ dbt compile
+What's the difference between the dbt Cloud CLI and dbt Core? +The dbt Cloud CLI and dbt Core, an open-source project, are both command line tools that enable you to run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its features. + +
+ +
How do I solve for path conflicts For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running `dbt`. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). From fc0a3aae5303de6916988bec7443a5d5830f33d6 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 9 Oct 2023 12:00:34 +0100 Subject: [PATCH 048/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index fc51a9aa94b..36ba1370ffb 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -55,7 +55,7 @@ Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. 1. Download the latest Windows release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). -2. Extract the `dbt.exe` executeable into the same folder as your dbt project. +2. Extract the `dbt.exe` executable into the same folder as your dbt project. :::info From 18b2b4a1f838a79d89d2fd1a5074670b6d7702d3 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 9 Oct 2023 16:07:50 +0100 Subject: [PATCH 049/265] update cards and review tableau --- .../docs/use-dbt-semantic-layer/gsheets.md | 3 +- .../docs/use-dbt-semantic-layer/tableau.md | 14 +- website/sidebars.js | 3 +- website/snippets/_sl-partner-links.md | 71 ++++++-- website/src/css/custom.css | 12 ++ .../img/icons/google-sheets-logo-icon.svg | 1 + website/static/img/icons/hex.svg | 5 + website/static/img/icons/mode.svg | 165 ++++++++++++++++++ website/static/img/icons/tableau-software.svg | 1 + .../icons/white/google-sheets-logo-icon.svg | 1 + website/static/img/icons/white/hex.svg | 5 + website/static/img/icons/white/mode.svg | 165 ++++++++++++++++++ .../img/icons/white/tableau-software.svg | 1 + 13 files changed, 431 insertions(+), 16 deletions(-) create mode 100644 website/static/img/icons/google-sheets-logo-icon.svg create mode 100755 website/static/img/icons/hex.svg create mode 100644 website/static/img/icons/mode.svg create mode 100644 website/static/img/icons/tableau-software.svg create mode 100644 website/static/img/icons/white/google-sheets-logo-icon.svg create mode 100644 website/static/img/icons/white/hex.svg create mode 100644 website/static/img/icons/white/mode.svg create mode 100644 website/static/img/icons/white/tableau-software.svg diff --git a/website/docs/docs/use-dbt-semantic-layer/gsheets.md b/website/docs/docs/use-dbt-semantic-layer/gsheets.md index 8ddaae0364c..d301e43fde9 100644 --- a/website/docs/docs/use-dbt-semantic-layer/gsheets.md +++ b/website/docs/docs/use-dbt-semantic-layer/gsheets.md @@ -6,8 +6,9 @@ sidebar_label: "Google Sheets (beta)" --- :::info Beta functionality -Google Sheets integration with the dbt Semantic Layer is a [beta feature](https://docs.getdbt.com/docs/dbt-versions/product-lifecycles#dbt-cloud) and is subject to change without notification. +Google Sheets integration is a [beta](https://docs.getdbt.com/docs/dbt-versions/product-lifecycles#dbt-cloud) feature that will be available in beta by the end of October. ::: + The dbt Semantic Layer offers a seamless integration with Google Sheets through a custom menu. This add-on allows you to build dbt Semantic Layer queries and return data on your metrics directly within Google Sheet. ## Prerequisites diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index 7bb49f2e46f..4c791057955 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -5,18 +5,24 @@ tags: [Semantic Layer] sidebar_label: "Tableau (beta)" --- -The Tableau integration is a live connection into the dbt Semantic Layer using Tableau Desktop. It allows you to use worksheets to query the Semantic Layer directly and produce your dashboards with trusted data. +:::info Beta functionality +The Tableau integration with the dbt Semantic Layer is a [beta feature](https://docs.getdbt.com/docs/dbt-versions/product-lifecycles#dbt-cloud) and is subject to change without notification. +::: + + +The Tableau integration allows you to use worksheets to query the Semantic Layer directly and produce your dashboards with trusted data. This integration provides a live connection to the dbt Semantic Layer through Tableau Desktop. ## Prerequisites -1. Tableau Desktop Installed and either an account with Tableau Server or Tableau Cloud that you can authenticate with -2. A JDBC URL, or a dbt Cloud environment Id and a Service Token to authenticate with from a dbt Cloud account that has the Semantic Layer configured. +1. You must have [Tableau Desktop](https://www.tableau.com/en-gb/products/desktop) installed +2. Authenticate with either Tableau Server or Tableau Cloud +3. You need either a [JDBC URL](/docs/dbt-cloud-apis/sl-jdbc#connection-parameters) or a dbt Cloud account's [Environment ID](/docs/use-dbt-semantic-layer/setup-sl#set-up-dbt-semantic-layer) and [service token](/docs/dbt-cloud-apis/service-tokens) to log in. This account should be set up with the dbt Semantic Layer. ## Installing 1. Install this file () locally -2. Install this jdbc driver (same exact link we have in jdbc docs) to the folder based on your operating system +2. Install this [JDBC driver](/docs/dbt-cloud-apis/sl-jdbc) to the folder based on your operating system `Windows: C:\Program Files\Tableau\Drivers` `Mac: ~/Library/Tableau/Drivers` `Linux: /opt/tableau/tableau_driver/jdbc` diff --git a/website/sidebars.js b/website/sidebars.js index 220f32130da..e39edbc6201 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -417,7 +417,8 @@ const sidebarSettings = { link: { type: "doc", id: "docs/use-dbt-semantic-layer/avail-sl-integrations" }, items: [ "docs/use-dbt-semantic-layer/avail-sl-integrations", - //"docs/use-dbt-semantic-layer/gsheets", + "docs/use-dbt-semantic-layer/gsheets", + "docs/use-dbt-semantic-layer/tableau", ], }, ], diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index fa8146c6418..dc57e5f88d5 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -1,27 +1,78 @@ The following tools integrate with the dbt Semantic Layer: + +
+ + + + + + +
+ + + + +
+ +
+ + + + +
+

+ + Before you connect to these tools, you'll need to first [set up the dbt Semantic Layer](/docs/use-dbt-semantic-layer/setup-sl) and [generate a service token](/docs/dbt-cloud-apis/service-tokens) to create **Semantic Layer Only** and **Metadata Only** permissions. diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 3181738406d..944ec02d2f8 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -1975,6 +1975,18 @@ html[data-theme="dark"] .theme-doc-sidebar-container>div>button.button:hover { display: none; } +.card-container { + position: relative; +} + +.external-link { + position: absolute; + top: 0; + right: 0; + margin: 10px; + color: #818589; /* You can adjust the color as needed */ +} + @media (max-width: 996px) { .quickstart-container { flex-direction: column; diff --git a/website/static/img/icons/google-sheets-logo-icon.svg b/website/static/img/icons/google-sheets-logo-icon.svg new file mode 100644 index 00000000000..d080c1dd53d --- /dev/null +++ b/website/static/img/icons/google-sheets-logo-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/icons/hex.svg b/website/static/img/icons/hex.svg new file mode 100755 index 00000000000..00431ffe299 --- /dev/null +++ b/website/static/img/icons/hex.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/website/static/img/icons/mode.svg b/website/static/img/icons/mode.svg new file mode 100644 index 00000000000..269c182cd8b --- /dev/null +++ b/website/static/img/icons/mode.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/website/static/img/icons/tableau-software.svg b/website/static/img/icons/tableau-software.svg new file mode 100644 index 00000000000..28996f1dadd --- /dev/null +++ b/website/static/img/icons/tableau-software.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/icons/white/google-sheets-logo-icon.svg b/website/static/img/icons/white/google-sheets-logo-icon.svg new file mode 100644 index 00000000000..d080c1dd53d --- /dev/null +++ b/website/static/img/icons/white/google-sheets-logo-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/icons/white/hex.svg b/website/static/img/icons/white/hex.svg new file mode 100644 index 00000000000..00431ffe299 --- /dev/null +++ b/website/static/img/icons/white/hex.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/website/static/img/icons/white/mode.svg b/website/static/img/icons/white/mode.svg new file mode 100644 index 00000000000..269c182cd8b --- /dev/null +++ b/website/static/img/icons/white/mode.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/website/static/img/icons/white/tableau-software.svg b/website/static/img/icons/white/tableau-software.svg new file mode 100644 index 00000000000..28996f1dadd --- /dev/null +++ b/website/static/img/icons/white/tableau-software.svg @@ -0,0 +1 @@ + \ No newline at end of file From 9a399cb6e66c8076fbb2161d1ec1ad9a04803e89 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 9 Oct 2023 16:12:58 +0100 Subject: [PATCH 050/265] update intro --- website/docs/reference/dbt-commands.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index cf970129169..d62e3a678bc 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -2,11 +2,9 @@ title: "dbt Command reference" --- -so debug is for cli (dbt core) and dbt cancel and dbt reattach are for the cloud cli and NOT dbt core? or dbt core? (sorry i’m trying to be super clear here) - You can run dbt using the following tools: -- In dbt Cloud using the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) +- In you browser with the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) - On the command line interface using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or open-source [dbt Core](https://github.com/dbt-labs/dbt-core), both of which enable you to execute dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). The following sections outline the commands supported by dbt and their relevant flags. For information about selecting models on the command line, consult the docs on [Model selection syntax](/reference/node-selection/syntax). From c5f98e8bb085fe531c41cd279042d5e026489be3 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 9 Oct 2023 16:50:17 +0100 Subject: [PATCH 051/265] Update cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index ccc39cd99a4..e095ac41124 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -19,7 +19,7 @@ dbt Cloud natively supports developing using a command line (CLI), empowering te dbt commands are run against dbt Cloud's infrastructure and benefit from: * Secure credential storage in the dbt Cloud platform. -* Automatic deferral of build artifacts to your Cloud project's production environment. +* [Automatic deferral](/docs/cloud/about-cloud-develop-defer) of build artifacts to your Cloud project's production environment. * Speedier, lower-cost builds. * Support for dbt Mesh ([cross-project `ref`](/docs/collaborate/govern/project-dependencies)), * Significant platform improvements, to be released over the coming months. From 277b4eaff613d7026429e612545431b9cc61c5b1 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 9 Oct 2023 17:20:56 +0100 Subject: [PATCH 052/265] add links to partner page --- website/snippets/_sl-partner-links.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index dc57e5f88d5..74426b59499 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -4,12 +4,14 @@ The following tools integrate with the dbt Semantic Layer:
@@ -17,6 +19,7 @@ The following tools integrate with the dbt Semantic Layer:
Date: Mon, 9 Oct 2023 17:21:45 +0100 Subject: [PATCH 053/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index e095ac41124..ccc39cd99a4 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -19,7 +19,7 @@ dbt Cloud natively supports developing using a command line (CLI), empowering te dbt commands are run against dbt Cloud's infrastructure and benefit from: * Secure credential storage in the dbt Cloud platform. -* [Automatic deferral](/docs/cloud/about-cloud-develop-defer) of build artifacts to your Cloud project's production environment. +* Automatic deferral of build artifacts to your Cloud project's production environment. * Speedier, lower-cost builds. * Support for dbt Mesh ([cross-project `ref`](/docs/collaborate/govern/project-dependencies)), * Significant platform improvements, to be released over the coming months. From 3d28be8487c7ebb48c24882e56d070a396910e33 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:22:39 +0100 Subject: [PATCH 054/265] Update cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index ccc39cd99a4..e095ac41124 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -19,7 +19,7 @@ dbt Cloud natively supports developing using a command line (CLI), empowering te dbt commands are run against dbt Cloud's infrastructure and benefit from: * Secure credential storage in the dbt Cloud platform. -* Automatic deferral of build artifacts to your Cloud project's production environment. +* [Automatic deferral](/docs/cloud/about-cloud-develop-defer) of build artifacts to your Cloud project's production environment. * Speedier, lower-cost builds. * Support for dbt Mesh ([cross-project `ref`](/docs/collaborate/govern/project-dependencies)), * Significant platform improvements, to be released over the coming months. From 651a003143e02caf4626c47b9af1b2f2bc7ff32b Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:53:44 +0100 Subject: [PATCH 055/265] Update avail-sl-integrations.md adding other integrations --- .../docs/use-dbt-semantic-layer/avail-sl-integrations.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md index 6a1fa7fbd4c..f718414ca2b 100644 --- a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md +++ b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md @@ -20,7 +20,13 @@ import AvailIntegrations from '/snippets/_sl-partner-links.md'; -## Custom integration +## Other integrations + +You can integrate the following tools with the dbt Semantic Layer: +- Tool 1 + link +- Tool 2 + link + +### Custom integration - You can create custom integrations using different languages and tools. We support connecting with JDBC, ADBC, and a GraphQL APIs. For more info, check out [our examples on GitHub](https://github.com/dbt-labs/example-semantic-layer-clients/). - You can also connect to tools that allow you to write SQL. These tools must meet one of the two criteria: From 049eac7eabf76120ac51d8c488f1abc5d9f9e233 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 9 Oct 2023 17:55:32 +0100 Subject: [PATCH 056/265] removing commented lines out --- website/snippets/_sl-partner-links.md | 32 --------------------------- 1 file changed, 32 deletions(-) diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index 74426b59499..7e2234b4980 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -45,37 +45,5 @@ The following tools integrate with the dbt Semantic Layer:

- Before you connect to these tools, you'll need to first [set up the dbt Semantic Layer](/docs/use-dbt-semantic-layer/setup-sl) and [generate a service token](/docs/dbt-cloud-apis/service-tokens) to create **Semantic Layer Only** and **Metadata Only** permissions. - - From cee109d9d81f186bc42d17f9962947f9594853c5 Mon Sep 17 00:00:00 2001 From: rpourzand Date: Mon, 9 Oct 2023 11:10:34 -0700 Subject: [PATCH 057/265] Update avail-sl-integrations.md adding other integrations here --- .../docs/use-dbt-semantic-layer/avail-sl-integrations.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md index f718414ca2b..a1ee8b5298d 100644 --- a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md +++ b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md @@ -22,9 +22,10 @@ import AvailIntegrations from '/snippets/_sl-partner-links.md'; ## Other integrations -You can integrate the following tools with the dbt Semantic Layer: -- Tool 1 + link -- Tool 2 + link +You can also integrate the following tools with the dbt Semantic Layer: +- [Push.ai](https://docs.push.ai/semantic-layer-integrations/dbt-semantic-layer) +- [Delphi](delphihq.com) +- KlipFolio Power Metrics - waiting on docs ### Custom integration From 187b38f139f0a1715b6a9bed73e7397f4162bf95 Mon Sep 17 00:00:00 2001 From: Greg McKeon Date: Mon, 9 Oct 2023 17:22:34 -0400 Subject: [PATCH 058/265] add install feedback --- .../docs/docs/cloud/cloud-cli-installation.md | 62 ++++++++++++++++--- 1 file changed, 54 insertions(+), 8 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 2560471a897..bd43b016435 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -28,8 +28,44 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: You can install the dbt Cloud CLI on the command line by using one of these methods: + + + +:::warning Use native packages or a virtual environment to avoid overriding dbt Core + +One of the benefits of the dbt Cloud CLI is that there is no need to manage Python environments. We provide this Python package for users who are using the Cloud CLI in place of dbt Core for easy compatibility with existing environments. + +Installing this package will override any dbt Core installation in the current Python environment. Avoid this by using the native install experience and configuring your PATH, or by creating a new virtual environment. + +To revert back to dbt Core, follow the install instructions for dbt Core. + +::: + +This guide is for users who already have a Python environment configured. + +1. Ensure you have Python installed and your local venv or pyenv activated. + +2. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later. + +```bash +dbt --version +``` + +3. Run the following command to install the Cloud CLI + +```bash +pip3 install dbt +``` + +4. (Optional) To revert back to dbt core, first uninstall both the Cloud CLI and Core, then reinstall dbt-core, using the version from above. + +```bash +pip3 uninstall dbt-core dbt +pip3 install dbt-core==VERSION +``` + - + Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in your code editor or command line terminal. If your operating system runs into path conflicts, refer to the [FAQs](#faqs). @@ -45,7 +81,7 @@ which dbt ```bash brew tap dbt-labs/dbt-cli -brew install dbt-cloud-cli +brew install dbt ``` 3. Verify the installation by running `dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. @@ -53,7 +89,7 @@ brew install dbt-cloud-cli - + If your operating system runs into path conflicts, refer to the [FAQs](#faqs). @@ -73,7 +109,7 @@ Note that if you are using VS Code, you'll need to restart it to pick up modifie - + Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. @@ -105,13 +141,17 @@ The following instructions explain how to update the dbt CLoud CLI to the latest + + + +To update, run `pip install --upgrade dbt`. - + To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. - + To update, follow the same process explained in [Install manually (Windows)](/docs/cloud/cloud-cli-installation?install=windows#install-dbt-cloud-cli) and replace the existing `dbt.exe` executable with the new one. @@ -139,10 +179,16 @@ The dbt Cloud CLI and
dbt Core
-How do I solve for path conflicts +How do I run both the Cloud CLI and dbt Core? For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running `dbt`. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). -If you have dbt Core installed locally, ensure that you deactivate your Python environment or uninstall it using `pip uninstall dbt` before proceeding. Alternatively, advanced users can modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both dbt Cloud CLI and dbt Core together. +If you have dbt Core installed locally, either: + +1. Install using [pip](/docs/cloud/cloud-cli-installation?install=pip#install-dbt-cloud-cli). + +2. Install natively, but ensure that you deactivate your Python environment or uninstall it using `pip uninstall dbt` before proceeding. + +3. (Advanced users) Install natively, but modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both dbt Cloud CLI and dbt Core together. You can always uninstall the Cloud CLI to return to using dbt Core.
From c55d27b687604aa80d173170f86f1f89d6c2e80d Mon Sep 17 00:00:00 2001 From: Greg McKeon Date: Mon, 9 Oct 2023 17:37:46 -0400 Subject: [PATCH 059/265] add credential file --- website/docs/docs/cloud/configure-cloud-cli.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 2df176fbdd7..a90453c7846 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -24,15 +24,8 @@ The dbt Cloud CLI is currently in [public preview](/docs/dbt-versions/product-li Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt Cloud project. 1. Ensure you meet the prerequisites above. -2. Create an environment variable with your [dbt Cloud API key](/docs/dbt-cloud-apis/user-tokens): - - On MacOS, Linux, or Windows add an environment variable: - ```bash - export DBT_CLOUD_API_KEY="1234" # Replace 1234 with your API key - ``` - - - In Powershell, add an environment variable: IS THIS MISSING SOMETHING? - - Note that this variable resets if you restart your shell. To add an environment variable permanently, add a system environment variable in your platform. +2. Download your credentials from dbt Cloud. Find the "Try the Cloud CLI" banner on the dbt homepage and click on it. Follow the instructions, downloading the config file to `~/.dbt/dbt_cloud.yml`. 3. Navigate to a dbt project in your terminal: @@ -40,7 +33,7 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt cd ~/dbt-projects/jaffle_shop ``` -4. In your `dbt_project.yml` file, ensure there is a section titled `dbt-cloud`. This section is required to have a `project-id` field with a valid project ID. +4. In your `dbt_project.yml` file, ensure there is a section titled `dbt-cloud`. This section is required to have a `project-id` field with the dbt-cloud project ID that you'd like to use. ```yaml # dbt_project.yml From 96a6ff198ef07b995243ebbc9491689c346473fc Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:23:15 +0100 Subject: [PATCH 060/265] Update website/docs/docs/about-setup.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/about-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/about-setup.md b/website/docs/docs/about-setup.md index 91c4ff05be8..53005bc6cef 100644 --- a/website/docs/docs/about-setup.md +++ b/website/docs/docs/about-setup.md @@ -7,7 +7,7 @@ sidebar_label: "About dbt setup" dbt compiles and runs your analytics code against your data platform, enabling you and your team to collaborate on a single source of truth for metrics, insights, and business definitions. There are two options for deploying dbt: -**dbt Cloud** runs dbt Core in a hosted (single or multi-tenant) environment with a browser-based interface. The intuitive UI will aid you in setting up the various components. dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring and alerting, an integrated development environment (IDE), and allows you to develop and run dbt commands from your local command line (CLI) or code editor. +**dbt Cloud** runs dbt Core in a hosted (single or multi-tenant) environment with a browser-based interface. The intuitive user interface aids you in setting up the various components. dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring, and alerting. It also offers an integrated development environment (IDE) and allows you to develop and run dbt commands from your local command line (CLI) or code editor. **dbt Core** is an open-source command line tool that can be installed locally in your environment, and communication with databases is facilitated through adapters. From f9a1cf13bcd40c1e0de208b803708704ac4cacb6 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:23:30 +0100 Subject: [PATCH 061/265] Update website/docs/docs/cloud/about-cloud-develop.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 920ea1d57ba..fd62675a550 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -19,7 +19,7 @@ dbt Cloud offers a fast and reliable way to work on your dbt project. It runs db From 814ac405d915e7399d0f8a4b5a035118064ed20d Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:24:06 +0100 Subject: [PATCH 062/265] Update website/docs/docs/cloud/about-cloud-develop.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index fd62675a550..180c1901624 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -25,6 +25,6 @@ dbt Cloud offers a fast and reliable way to work on your dbt project. It runs db

-This documentation section provides detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive setup guide, refer to our [quickstart guides](/quickstarts). +The following sections provide detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive guide about developing in dbt, refer to our [quickstart guides](/quickstarts). [^1]: The dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). From c123877808425e2cb5bb93fdd13bbf6686d9390c Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:24:33 +0100 Subject: [PATCH 063/265] Update website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../docs/docs/running-a-dbt-project/run-your-dbt-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md index 436ec6def1c..e98046acd79 100644 --- a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md +++ b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md @@ -4,7 +4,7 @@ id: "run-your-dbt-projects" --- You can run your dbt projects with [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud-features) or [dbt Core](https://github.com/dbt-labs/dbt-core): -- **dbt Cloud**: A hosted application where you can develop directly from a web browser using the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud). It also natively supports developing using a command line, [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). Among other features, dbt Cloud provides: +- **dbt Cloud**: A hosted application where you can develop directly from a web browser using the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud). It also natively supports developing using a command line interface, [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). Among other features, dbt Cloud provides: - Development environment to help you build, test, run, and [version control](/docs/collaborate/git-version-control) your project faster. - Share your [dbt project's documentation](/docs/collaborate/build-and-view-your-docs) with your team. From 66c20e7510bcf79361c3d9e21eef3e962fff3382 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:25:05 +0100 Subject: [PATCH 064/265] Update website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../docs/docs/running-a-dbt-project/run-your-dbt-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md index e98046acd79..4e768083e1b 100644 --- a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md +++ b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md @@ -9,7 +9,7 @@ You can run your dbt projects with [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud - Development environment to help you build, test, run, and [version control](/docs/collaborate/git-version-control) your project faster. - Share your [dbt project's documentation](/docs/collaborate/build-and-view-your-docs) with your team. - Integrates with the dbt Cloud IDE, allowing you to run development tasks and environment in the dbt Cloud UI for a seamless experience. - - Use the dbt Cloud CLI to develop and run dbt commands against your dbt Cloud development environment from your local command line. + - The dbt Cloud CLI to develop and run dbt commands against your dbt Cloud development environment from your local command line. - For more details, refer to [Develop in the Cloud](/docs/cloud/about-cloud-develop). - **dbt Core**: An open source project where you can develop from the command line. From 4acf634c5b7ed96d3190e9e84c61e9889387fabe Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:33:33 +0100 Subject: [PATCH 065/265] Update website/docs/docs/cloud/about-cloud-develop.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index a20ecc331e5..547099d4edd 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -14,7 +14,7 @@ dbt Cloud offers a fast and reliable way to work on your dbt project. You can us - **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface (UI). -This documentation section provides detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive setup guide, refer to our [quickstart guides](/quickstarts). +The following sections provide detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive guide about developing in dbt, refer to our [quickstart guides](/quickstarts). From fc876782b0a662846ef73420982d44b22022de56 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:33:50 +0100 Subject: [PATCH 066/265] Update website/docs/docs/cloud/about-cloud-develop.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 547099d4edd..6e1616790d5 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -6,7 +6,7 @@ sidebar_label: "About developing in dbt Cloud" pagination_next: "docs/cloud/cloud-cli-installation" --- -dbt Cloud offers a fast and reliable way to work on your dbt project. You can use it through an integrated development environment (IDE) in your browser or a dbt Cloud-powered command line interface (CLI): +dbt Cloud offers a fast and reliable way to work on your dbt project. You can develop in your browser using an integrated development environment (IDE) or in a dbt Cloud-powered command line interface (CLI): - **[dbt Cloud CLI](/docs/cloud/cloud-cli-installation)** — Allows you to develop and run dbt commands from your local command line or code editor against your dbt Cloud development environment. From 14f0e4fd67deb0e98a6c296b889409f80e323da1 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:34:11 +0100 Subject: [PATCH 067/265] Update website/docs/docs/cloud/configure-cloud-cli.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index a90453c7846..057cc099037 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -46,7 +46,7 @@ dbt-cloud: project-id: PROJECT_ID ``` -- To find your project ID, go to **Develop** in the navigation menu. Select the dbt Cloud project URL, such as `https://cloud.getdbt.com/develop/26228/projects123456`, where the project ID is `123456`. +- To find your project ID, select **Develop** in the dbt Cloud navigation menu. You can use this URL to find the project ID. For example, in `https://cloud.getdbt.com/develop/26228/projects123456`, the project ID is `123456`. ## Use the dbt Cloud CLI From c430b184bacb84397719bf5231440d2899b77e68 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:34:21 +0100 Subject: [PATCH 068/265] Update website/docs/docs/cloud/about-cloud-develop.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/about-cloud-develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 6e1616790d5..23154efd7b0 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -12,7 +12,7 @@ dbt Cloud offers a fast and reliable way to work on your dbt project. You can de - Something to note is that the dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). -- **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface (UI). +- **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface. The following sections provide detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive guide about developing in dbt, refer to our [quickstart guides](/quickstarts). From 34c1442cce6a4b4ec9c74d6362dcc2f3e77159a1 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:39:28 +0100 Subject: [PATCH 069/265] Update about-cloud-develop.md --- .../docs/docs/cloud/about-cloud-develop.md | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 23154efd7b0..2ed85e769b6 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -4,17 +4,27 @@ id: about-cloud-develop description: "Learn how to develop your dbt projects using dbt Cloud." sidebar_label: "About developing in dbt Cloud" pagination_next: "docs/cloud/cloud-cli-installation" +hide_table_of_contents: true --- -dbt Cloud offers a fast and reliable way to work on your dbt project. You can develop in your browser using an integrated development environment (IDE) or in a dbt Cloud-powered command line interface (CLI): +dbt Cloud offers a fast and reliable way to work on your dbt project. It runs dbt Core in a hosted (single or multi-tenant) environment. You can develop in your browser using an integrated development environment (IDE) or in a dbt Cloud-powered command line interface (CLI): -- **[dbt Cloud CLI](/docs/cloud/cloud-cli-installation)** — Allows you to develop and run dbt commands from your local command line or code editor against your dbt Cloud development environment. +
- - Something to note is that the dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run your dbt projects and use the same dbt commands. The key difference is that the dbt Cloud CLI is designed to work specifically with dbt Cloud's infrastructure and integrates those builds with all [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-features). + -- **[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud)** — Develop directly in your browser, making dbt project development efficient by compiling code into SQL and managing project changes seamlessly using an intuitive user interface. - -The following sections provide detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive guide about developing in dbt, refer to our [quickstart guides](/quickstarts). + +

+The following sections provide detailed instructions on setting up the dbt Cloud CLI and dbt Cloud IDE. To get started with dbt development, you'll need a [developer](/docs/cloud/manage-access/seats-and-users) account. For a more comprehensive guide about developing in dbt, refer to our [quickstart guides](/quickstarts). +[^1]: The dbt Cloud CLI and the open-sourced dbt Core are both command line tools that let you run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). From 62c9f6f50bbc5449f4450653bb407b87cde5e6e3 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:42:37 +0100 Subject: [PATCH 070/265] Update website/docs/docs/cloud/configure-cloud-cli.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 057cc099037..a54a66d08bf 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -51,7 +51,7 @@ dbt-cloud: ## Use the dbt Cloud CLI -The dbt Cloud CLI shares the same set of commands as dbt Core. When you invoke a dbt command, that command is sent to dbt Cloud for processing. +The dbt Cloud CLI shares the same set of commands as dbt Core. dbt Cloud processes the dbt commands you invoke. The dbt Cloud CLI supports [project dependencies](/docs/collaborate/govern/project-dependencies), which is an exciting way to depend on another project using the metadata service in dbt Cloud. It instantly resolves references (or `ref`) to public models defined in other projects. You don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. From ac4ae6d80ec16085350b0fcb6ca3af725e271d36 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:48:25 +0100 Subject: [PATCH 071/265] Update cloud-cli-installation.md --- .../docs/docs/cloud/cloud-cli-installation.md | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 87e1a03da89..3c7243aba4c 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -35,7 +35,7 @@ You can install the dbt Cloud CLI on the command line by using one of these meth :::warning Use native packages or a virtual environment to avoid overriding dbt Core -One of the benefits of the dbt Cloud CLI is that there is no need to manage Python environments. We provide this Python package for users who are using the Cloud CLI in place of dbt Core for easy compatibility with existing environments. +One of the benefits of the dbt Cloud CLI is that there is no need to manage Python environments. We provide this Python package for users who are using the dbt Cloud CLI in place of dbt Core for easy compatibility with existing environments. Installing this package will override any dbt Core installation in the current Python environment. Avoid this by using the native install experience and configuring your PATH, or by creating a new virtual environment. @@ -47,29 +47,31 @@ This guide is for users who already have a Python environment configured. 1. Ensure you have Python installed and your local venv or pyenv activated. -2. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later. +2. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: ```bash dbt --version ``` -3. Run the following command to install the Cloud CLI +3. Run the following command to install the dbt Cloud CLI ```bash pip3 install dbt ``` -4. (Optional) To revert back to dbt core, first uninstall both the Cloud CLI and Core, then reinstall dbt-core, using the version from above. +4. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core +5. Then reinstall dbt Core using the version from Step 2. ```bash pip3 uninstall dbt-core dbt pip3 install dbt-core==VERSION ``` + -Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in your code editor or command line terminal. If your operating system runs into path conflicts, refer to the [FAQs](#faqs). +Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in your code editor or command line terminal. Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. 1. Run the following command to verify that there is no conflict with a dbt Core installation on your system: @@ -91,19 +93,19 @@ brew install dbt - + -If your operating system runs into path conflicts, refer to the [FAQs](#faqs). +Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. 1. Download the latest Windows release for your platform from [GitHub](https://github.com/dbt-labs/dbt-cli/releases). -2. Extract the `dbt.exe` executeable into the same folder as your dbt project. +2. Extract the `dbt.exe` executable into the same folder as your dbt project. :::info Advanced users can configure multiple projects to use the same dbt Cloud CLI by placing the executable in the Program Files folder and [adding it to their Windows PATH environment variable](https://medium.com/@kevinmarkvi/how-to-add-executables-to-your-path-in-windows-5ffa4ce61a53). -Note that if you are using VS Code, you'll need to restart it to pick up modified environment variables. +Note that if you are using VS Code, you must restart it to pick up modified environment variables. ::: 3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. @@ -111,7 +113,7 @@ Note that if you are using VS Code, you'll need to restart it to pick up modifie - + Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. @@ -154,7 +156,7 @@ To update, run `pip install --upgrade dbt`. To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. - + To update, follow the same process explained in [Install manually (Windows)](/docs/cloud/cloud-cli-installation?install=windows#install-dbt-cloud-cli) and replace the existing `dbt.exe` executable with the new one. From 4a1a75db3c1ec755eebf7c80b76c437c499fdbae Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:49:51 +0100 Subject: [PATCH 072/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index bd43b016435..eace9463b7d 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -151,7 +151,7 @@ To update, run `pip install --upgrade dbt`. To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. - + To update, follow the same process explained in [Install manually (Windows)](/docs/cloud/cloud-cli-installation?install=windows#install-dbt-cloud-cli) and replace the existing `dbt.exe` executable with the new one. From a3753bb36197b6c5aab806dba003fa8b7cbc1064 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:51:55 +0100 Subject: [PATCH 073/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index eace9463b7d..6cdbeac6f52 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -109,7 +109,7 @@ Note that if you are using VS Code, you'll need to restart it to pick up modifie - + Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. From e89e2d529bba0c394f7761c392418300265e4c33 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:59:48 +0100 Subject: [PATCH 074/265] Update website/docs/docs/cloud/configure-cloud-cli.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index a54a66d08bf..1551cd33cde 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -53,6 +53,6 @@ dbt-cloud: The dbt Cloud CLI shares the same set of commands as dbt Core. dbt Cloud processes the dbt commands you invoke. -The dbt Cloud CLI supports [project dependencies](/docs/collaborate/govern/project-dependencies), which is an exciting way to depend on another project using the metadata service in dbt Cloud. It instantly resolves references (or `ref`) to public models defined in other projects. You don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. +The dbt Cloud CLI supports [project dependencies](/docs/collaborate/govern/project-dependencies), which enables you to depend on another project using the metadata service in dbt Cloud. Project dependencies instantly resolves references (or `ref`) to public models defined in other projects. You don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). From 27b57e37760c72990783f2b912ea010e48f0d5b1 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 12:00:16 +0100 Subject: [PATCH 075/265] Update website/docs/docs/cloud/configure-cloud-cli.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 1551cd33cde..f1523f1ec6e 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -55,4 +55,4 @@ The dbt Cloud CLI shares the same set of commands as dbt Core. dbt Cloud process The dbt Cloud CLI supports [project dependencies](/docs/collaborate/govern/project-dependencies), which enables you to depend on another project using the metadata service in dbt Cloud. Project dependencies instantly resolves references (or `ref`) to public models defined in other projects. You don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. -Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). +Share feedback or request features you'd like to see in the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). From 21b1db8d758259252efb718c40ac924dbfd7cbfa Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 13:00:15 +0100 Subject: [PATCH 076/265] updates --- .../docs/docs/cloud/about-cloud-develop.md | 5 +- .../docs/docs/cloud/cloud-cli-installation.md | 83 +++++++++---------- .../docs/docs/cloud/configure-cloud-cli.md | 64 +++++++++----- website/docs/reference/dbt-commands.md | 2 +- website/snippets/_cloud-cli-flag.md | 5 ++ 5 files changed, 91 insertions(+), 68 deletions(-) create mode 100644 website/snippets/_cloud-cli-flag.md diff --git a/website/docs/docs/cloud/about-cloud-develop.md b/website/docs/docs/cloud/about-cloud-develop.md index 2ed85e769b6..3c3d8387999 100644 --- a/website/docs/docs/cloud/about-cloud-develop.md +++ b/website/docs/docs/cloud/about-cloud-develop.md @@ -9,7 +9,7 @@ hide_table_of_contents: true dbt Cloud offers a fast and reliable way to work on your dbt project. It runs dbt Core in a hosted (single or multi-tenant) environment. You can develop in your browser using an integrated development environment (IDE) or in a dbt Cloud-powered command line interface (CLI): -
+
dbt Cloud natively supports developing using a command line (CLI), empowering team members to contribute with enhanced flexibility and collaboration. The dbt Cloud CLI allows you to run dbt commands against your dbt Cloud development environment from your local command line. @@ -43,31 +40,31 @@ To revert back to dbt Core, follow the install instructions for dbt Core. ::: -This guide is for users who already have a Python environment configured. +This tab is for users who already have a Python environment configured. 1. Ensure you have Python installed and your local venv or pyenv activated. 2. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: -```bash -dbt --version -``` + ```bash + dbt --version + ``` 3. Run the following command to install the dbt Cloud CLI -```bash -pip3 install dbt -``` + ```bash + pip3 install dbt + ``` 4. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core 5. Then reinstall dbt Core using the version from Step 2. -```bash -pip3 uninstall dbt-core dbt -pip3 install dbt-core==VERSION -``` - + ```bash + pip3 uninstall dbt-core dbt + pip3 install dbt-core==VERSION + ``` + @@ -76,20 +73,20 @@ Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in yo 1. Run the following command to verify that there is no conflict with a dbt Core installation on your system: -```bash -which dbt -``` + ```bash + which dbt + ``` - This should return a `dbt not found`. If the dbt help text appears, use `pip uninstall dbt` to deactivate dbt Core from your machine. 2. Install the dbt Cloud CLI with Homebrew: -```bash -brew tap dbt-labs/dbt-cli -brew install dbt -``` + ```bash + brew tap dbt-labs/dbt-cli + brew install dbt + ``` 3. Verify the installation by running `dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. - * You no longer need to use the `dbt deps` command. Previously, you had to run that command. + * You don't have to run the `dbt deps` command when your environment starts. Previously, you had to do it during initialization. However, you'll still need to run `dbt deps` if you make changes to your `packages.yml` file. @@ -109,7 +106,7 @@ Note that if you are using VS Code, you must restart it to pick up modified envi ::: 3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. - * You no longer need to use the `dbt deps` command. Previously, you had to run that command. + * You don't have to run the `dbt deps` command when your environment starts. Previously, you had to do it during initialization. However, you'll still need to run `dbt deps` if you make changes to your `packages.yml` file. @@ -121,10 +118,10 @@ Refer to the [FAQs](#faqs) if your operating system runs into path conflicts. 2. Extract the `dbt-cloud-cli` binary to the same folder as your dbt project. -```bash -tar -xf dbt_0.29.9_linux_amd64.tar.gz -./dbt --version -``` + ```bash + tar -xf dbt_0.29.9_linux_amd64.tar.gz + ./dbt --version + ``` :::info @@ -133,7 +130,7 @@ Advanced users can configure multiple projects to use the same Cloud CLI executa ::: 3. Verify the installation by running `./dbt --help` from the command line. If the help text doesn't indicate that you're using the dbt Cloud CLI, make sure you've deactivated your pyenv or venv and don't have a version of dbt globally installed. - * You no longer need to use the `dbt deps` command. Previously, you had to run that command. + * You don't have to run the `dbt deps` command when your environment starts. Previously, you had to do it during initialization. However, you'll still need to run `dbt deps` if you make changes to your `packages.yml` file. @@ -142,15 +139,18 @@ Advanced users can configure multiple projects to use the same Cloud CLI executa ## Update dbt Cloud CLI -The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. During the public preview period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. +The following instructions explain how to update the dbt CLoud CLI to the latest version depending on your operating system. +During the public preview period, we recommend updating before filing a bug report. This is because the API is subject to breaking changes. - + To update, run `pip install --upgrade dbt`. + + To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. @@ -159,7 +159,7 @@ To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. -To update, follow the same process explained in [Install manually (Windows)](/docs/cloud/cloud-cli-installation?install=windows#install-dbt-cloud-cli) and replace the existing `dbt.exe` executable with the new one. +To update, follow the same process explained in [Windows](/docs/cloud/cloud-cli-installation?install=windows#install-dbt-cloud-cli) and replace the existing `dbt.exe` executable with the new one. @@ -170,10 +170,9 @@ To update, follow the same process explained in [Install manually (Windows)](/do After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. For example, you can execute the following commands to compile a project using dbt Cloud: - -```bash -dbt compile -``` + ```bash + dbt compile + ``` ## FAQs @@ -185,8 +184,8 @@ The dbt Cloud CLI and dbt Core
-How do I run both the Cloud CLI and dbt Core? -For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running `dbt`. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). +How do I run both the dbt Cloud CLI and dbt Core? +For compatibility, both the dbt Cloud CLI and dbt Core are invoked by running dbt. This can create path conflicts if your operating system selects one over the other based on your $PATH environment variable (settings). If you have dbt Core installed locally, either: @@ -196,7 +195,5 @@ If you have dbt Core installed locally, either: 3. (Advanced users) Install natively, but modify the $PATH environment variable to correctly point to the dbt Cloud CLI binary to use both dbt Cloud CLI and dbt Core together. -You can always uninstall the Cloud CLI to return to using dbt Core. +You can always uninstall the dbt Cloud CLI to return to using dbt Core.
- - diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 0c53c150f95..c9da455a7d1 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -3,13 +3,12 @@ title: Configure dbt Cloud CLI id: configure-cloud-cli description: "Instructions on how to configure the dbt Cloud CLI" sidebar_label: "Configure dbt Cloud CLI" +pagination_next: null --- -:::info Public preview functionality +import CloudCLIFlag from '/snippets/_cloud-cli-flag.md'; -The dbt Cloud CLI is currently in [public preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). - -::: + ## Prerequisites @@ -26,34 +25,55 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt 1. Ensure you meet the prerequisites above. -2. Download your credentials from dbt Cloud. Find the "Try the Cloud CLI" banner on the dbt homepage and click on it. Follow the instructions, downloading the config file to `~/.dbt/dbt_cloud.yml`. +2. Download your credentials from dbt Cloud by clicking on the **Try the dbt Cloud CLI** banner on the dbt Cloud homepage. +3. Follow the banner instructions and download the config file to `~/.dbt/dbt_cloud.yml`. The config file looks like: + + ```yaml + version: "1" + context: + active-project: "" + active-host: "" + defer-env-id: "" + projects: + - project-id: "" + account-host: "" + api-key: "" + + - project-id: "" + account-host: "" + api-key: "" -3. Navigate to a dbt project in your terminal: + ``` -```bash -cd ~/dbt-projects/jaffle_shop -``` +4. After downloading the config file, navigate to a dbt project in your terminal: -4. In your `dbt_project.yml` file, ensure there is a section titled `dbt-cloud`. This section is required to have a `project-id` field with the dbt-cloud project ID that you'd like to use. + ```bash + cd ~/dbt-projects/jaffle_shop + ``` -```yaml -# dbt_project.yml -name: +5. In your `dbt_project.yml` file, ensure you have or include a `dbt-cloud` section with a `project-id` field. The `project-id` field contains the dbt Cloud project ID you want to use. -version: -... + ```yaml + # dbt_project.yml + name: -dbt-cloud: - project-id: PROJECT_ID -``` + version: + ... -- To find your project ID, select **Develop** in the dbt Cloud navigation menu. You can use this URL to find the project ID. For example, in `https://cloud.getdbt.com/develop/26228/projects123456`, the project ID is `123456`. + dbt-cloud: + project-id: PROJECT_ID + ``` + - To find your project ID, select **Develop** in the dbt Cloud navigation menu. You can use the URL to find the project ID. For example, in `https://cloud.getdbt.com/develop/26228/projects/123456`, the project ID is `123456`. ## Use the dbt Cloud CLI -The dbt Cloud CLI shares the same set of commands as dbt Core. dbt Cloud processes the dbt commands you invoke. +- The dbt Cloud CLI shares the same set of commands as dbt Core and processes the dbt commands you invoke. +- It allows you to use automatic deferral of build artifacts to your Cloud project's production environment. +- It also supports [project dependencies](/docs/collaborate/govern/project-dependencies), which allows you to depend on another project using the metadata service in dbt Cloud. + - Project dependencies instantly connects to and references (or `ref`) public models defined in other projects. This means you don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. -The dbt Cloud CLI supports [project dependencies](/docs/collaborate/govern/project-dependencies), which is an exciting way to depend on another project using the metadata service in dbt Cloud. It instantly resolves references (or `ref`) to public models defined in other projects. You don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. -Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). +:::infoShare feedback +Share feedback or request features you'd like to see in the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). +::: diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index d62e3a678bc..731f615925b 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -4,7 +4,7 @@ title: "dbt Command reference" You can run dbt using the following tools: -- In you browser with the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) +- In your browser with the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) - On the command line interface using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or open-source [dbt Core](https://github.com/dbt-labs/dbt-core), both of which enable you to execute dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). The following sections outline the commands supported by dbt and their relevant flags. For information about selecting models on the command line, consult the docs on [Model selection syntax](/reference/node-selection/syntax). diff --git a/website/snippets/_cloud-cli-flag.md b/website/snippets/_cloud-cli-flag.md new file mode 100644 index 00000000000..523591a438c --- /dev/null +++ b/website/snippets/_cloud-cli-flag.md @@ -0,0 +1,5 @@ +:::info Public preview functionality + +The dbt Cloud CLI is currently in [public preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). Share feedback or request features you'd like to see on the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). + +::: From e2abba0751be8138e5fbef6f93455d949ea26efa Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 13:52:27 +0100 Subject: [PATCH 077/265] update pages and add redirect --- .../docs/cloud/about-cloud/about-cloud-ide.md | 31 ---------- .../cloud/about-cloud/dbt-cloud-features.md | 2 +- .../dbt-cloud-ide/develop-in-the-cloud.md | 58 ++++++++++--------- website/sidebars.js | 1 - website/snippets/_adapters-trusted.md | 4 +- website/vercel.json | 5 ++ 6 files changed, 40 insertions(+), 61 deletions(-) delete mode 100644 website/docs/docs/cloud/about-cloud/about-cloud-ide.md diff --git a/website/docs/docs/cloud/about-cloud/about-cloud-ide.md b/website/docs/docs/cloud/about-cloud/about-cloud-ide.md deleted file mode 100644 index f0380f109f8..00000000000 --- a/website/docs/docs/cloud/about-cloud/about-cloud-ide.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "About dbt Cloud IDE" -id: about-cloud-ide -description: "about dbt Cloud Integrated Development Environment" -sidebar_label: About dbt Cloud IDE ---- - -The dbt Cloud integrated development environment (IDE) is a single interface for building, testing, running, and version-controlling dbt projects from your browser. With the Cloud IDE, you can compile dbt code into SQL and run it against your database directly. - - -With the Cloud IDE, you can: - -- Write modular SQL models with select statements and the ref() function, -- Compile dbt code into SQL and execute it against your database directly, -- Test every model before deploying them to production, -- Generate and view documentation of your dbt project, -- Leverage git and version-control your code from your browser with a couple of clicks, -- Create and test Python models: - * Compile Python models to see the full function that gets executed in your data platform - * See Python models in DAG in dbt version 1.3 and higher - * Currently, you can't preview python models -- Visualize a directed acyclic graph (DAG), and more. - - - -For more information, read the complete [Cloud IDE guide](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud). - -## Relatd docs - -- [IDE user interface](/docs/cloud/dbt-cloud-ide/ide-user-interface) -- [Tips and tricks](/docs/cloud/dbt-cloud-ide/dbt-cloud-tips) diff --git a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md index c66f3322f3f..e04b3004476 100644 --- a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md +++ b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md @@ -8,7 +8,7 @@ hide_table_of_contents: true dbt Cloud is the fastest and most reliable way to deploy dbt. Develop, test, schedule, document, and investigate data models all in one browser-based UI. -In addition to providing a hosted architecture for running dbt across your organization, dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring and alerting, an integrated development environment (IDE), and allows you to develop and run dbt commands from your local command line (CLI) or code editor. +In addition to providing a hosted architecture for running dbt across your organization, dbt Cloud comes equipped with turnkey support for scheduling jobs, CI/CD, hosting documentation, monitoring and alerting, an integrated development environment (IDE), and allows you to develop and run dbt commands from your local command line interface (CLI) or code editor. dbt Cloud's [flexible plans](https://www.getdbt.com/pricing/) and features make it well-suited for data teams of any size — sign up for your [free 14-day trial](https://www.getdbt.com/signup/)! diff --git a/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md b/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md index 9cf6736562b..14a7051e2bd 100644 --- a/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md +++ b/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md @@ -7,15 +7,24 @@ tags: [IDE] pagination_next: "docs/cloud/dbt-cloud-ide/ide-user-interface" --- -The dbt Cloud integrated development environment (IDE) is a single interface for building, testing, running, and version-controlling dbt projects from your browser. With the Cloud IDE, you can compile dbt code into SQL and run it against your database directly. +The dbt Cloud integrated development environment (IDE) is a single web-based interface for building, testing, running, and version-controlling dbt projects. It compiles dbt code into SQL and executes it directly on your database. -## Prerequisites +The dbt Cloud IDE offers several [editing features](/docs/cloud/dbt-cloud-ide/ide-user-interface#editing-features) for faster and more efficient data platform development and governance: -- A [dbt Cloud account](https://cloud.getdbt.com/) and [Developer seat license](/docs/cloud/manage-access/seats-and-users) -- A git repository set up and git provider must have `write` access enabled. See [Connecting your GitHub Account](/docs/cloud/git/connect-github) or [Importing a project by git URL](/docs/cloud/git/import-a-project-by-git-url) for detailed setup instructions -- A dbt project connected to a [data platform](/docs/cloud/connect-data-platform/about-connections) -- A [development environment and development credentials](#access-the-cloud-ide) set up -- The environment must be on dbt version 1.0 or higher +- Syntax highlighting for SQL — Makes it easy to distinguish different parts of your code, reducing syntax errors and enhancing readability. +- Auto-completion — Suggests table names, arguments, and column names as you type, saving time and reducing typos. +- Code [formatting and linting](/docs/cloud/dbt-cloud-ide/lint-format) — Help standardize and fix your SQL code effortlessly. +- Navigation tools — Easily move around your code, jump to specific lines, find and replace text, and navigate between project files. +- Version control — Manage code versions with a few clicks. + +These [features](#dbt-cloud-ide-features) create a powerful editing environment for efficient SQL coding, suitable for both experienced and beginner developers. + + + + + + + :::tip Disable ad blockers @@ -23,19 +32,14 @@ To improve your experience using dbt Cloud, we suggest that you turn off ad bloc ::: -## Develop in the dbt Cloud IDE - -The dbt Cloud IDE is a powerful tool that can help streamline and govern your data platform development process. It offers a range of [editing features](/docs/cloud/dbt-cloud-ide/ide-user-interface#editing-features) that can help make your data platform development process faster and more efficient. Some of the editing features include: - -- The IDE has syntax highlighting for SQL. This makes it easy to visually distinguish between different parts of your code. This helps prevent syntax errors and improve readability. -- Use the IDE built-in auto-completion, which suggests table names, arguments, and column names as you type. This saves time and reduces the likelihood of typos or errors in your code. -- The code [formatting and linting](/docs/cloud/dbt-cloud-ide/lint-format) tools allow you to standardize and fix your SQL code with ease. -- The IDE has a range of navigation tools, making it easy to move around your code with ease. You can quickly jump to specific lines of code, find and replace text, and navigate between different files in your project. -- Use the version control menu and features to version-control your code with just a few clicks. +## Prerequisites -All of these [features](#cloud-ide-features) work together to create a powerful editing environment that can help you write and maintain high-quality SQL code in less time. Whether you're a seasoned developer or just starting out, the Cloud IDE has everything you need to be productive, collaborative, and efficient. +- A [dbt Cloud account](https://cloud.getdbt.com/) and [Developer seat license](/docs/cloud/manage-access/seats-and-users) +- A git repository set up and git provider must have `write` access enabled. See [Connecting your GitHub Account](/docs/cloud/git/connect-github) or [Importing a project by git URL](/docs/cloud/git/import-a-project-by-git-url) for detailed setup instructions +- A dbt project connected to a [data platform](/docs/cloud/connect-data-platform/about-connections) +- A [development environment and development credentials](#access-the-cloud-ide) set up +- The environment must be on dbt version 1.0 or higher - ## dbt Cloud IDE features @@ -88,9 +92,9 @@ The Cloud IDE needs explicit action to save your changes. There are three ways y ## Access the Cloud IDE -:::info📌 +:::tip Disable ad blockers -New to dbt? Check out our [quickstart guides](/quickstarts) to build your first dbt project in the Cloud IDE! +To improve your experience using dbt Cloud, we suggest that you turn off ad blockers. This is because some project file names, such as `google_adwords.sql`, might resemble ad traffic and trigger ad blockers. ::: @@ -154,13 +158,15 @@ The dbt Cloud IDE makes it possible to [build and view](/docs/collaborate/build-
- What is the difference between developing on the Cloud IDE and on the CLI? + What is the difference between developing on the dbt Cloud IDE, the dbt Cloud CLI, and dbt Core?
-
There are two main ways to develop with dbt: using the web-based IDE in dbt Cloud or using the command-line interface (CLI) in dbt Core:

- - dbt Cloud IDE dbt Cloud is a web-based application that allows you to develop dbt projects with the IDE, includes a purpose-built scheduler, and provides an easier way to share your dbt documentation with your team. The IDE is a faster and more reliable way to deploy your dbt models and provides a real-time editing and execution environment for your dbt project.

- - dbt Core CLI The command line interface (CLI) uses dbt Core, an open-source software that’s freely available. You can build your dbt project in a code editor, like Jetbrains or VSCode, and run dbt commands from the command line. +
You can develop dbt using the web-based IDE in dbt Cloud or on the command line interface using the dbt Cloud CLI or open-source dbt Core, all of which enable you to execute dbt commands. The key distinction between the dbt Cloud CLI and dbt Core is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its features.

+ + dbt Cloud IDE: dbt Cloud is a web-based application that allows you to develop dbt projects with the IDE, includes a purpose-built scheduler, and provides an easier way to share your dbt documentation with your team. The IDE is a faster and more reliable way to deploy your dbt models and provides a real-time editing and execution environment for your dbt project.

+ + dbt Cloud CLI: The dbt Cloud CLI allows you to run dbt commands against your dbt Cloud development environment from your local command line or code editor. It supports cross-project ref, speedier, lower-cost builds, automatic deferral of build artifacts, and more.

+ + dbt Core: dbt Core is an open-sourced software that’s freely available. You can build your dbt project in a code editor, and run dbt commands from the command line.
diff --git a/website/sidebars.js b/website/sidebars.js index 82f8d76dee6..e76684e55d6 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -22,7 +22,6 @@ const sidebarSettings = { "docs/cloud/about-cloud/architecture", "docs/cloud/about-cloud/tenancy", "docs/cloud/about-cloud/regions-ip-addresses", - "docs/cloud/about-cloud/about-cloud-ide", "docs/cloud/about-cloud/browsers", ], }, // About dbt Cloud directory diff --git a/website/snippets/_adapters-trusted.md b/website/snippets/_adapters-trusted.md index bf40c28b489..7747ce16dec 100644 --- a/website/snippets/_adapters-trusted.md +++ b/website/snippets/_adapters-trusted.md @@ -7,13 +7,13 @@ Install with dbt Core

" icon="materialize"/> Install with dbt Core

" icon="oracle"/> diff --git a/website/vercel.json b/website/vercel.json index c5fb0638fba..21572a62442 100644 --- a/website/vercel.json +++ b/website/vercel.json @@ -2,6 +2,11 @@ "cleanUrls": true, "trailingSlash": false, "redirects": [ + { + "source": "/docs/cloud/about-cloud/about-cloud-ide", + "destination": "/docs/cloud/about-cloud-develop", + "permanent": true + }, { "source": "/docs/deploy/job-triggers", "destination": "/docs/deploy/deploy-jobs", From a71635a11459fdcd62e28829efd2c84c06ea8e26 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 14:01:47 +0100 Subject: [PATCH 078/265] Update website/docs/docs/cloud/about-cloud/dbt-cloud-features.md --- website/docs/docs/cloud/about-cloud/dbt-cloud-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md index e04b3004476..997545dd7e3 100644 --- a/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md +++ b/website/docs/docs/cloud/about-cloud/dbt-cloud-features.md @@ -23,7 +23,7 @@ dbt Cloud's [flexible plans](https://www.getdbt.com/pricing/) and features make Date: Tue, 10 Oct 2023 14:03:57 +0100 Subject: [PATCH 079/265] Update develop-in-the-cloud.md --- .../docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md b/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md index 14a7051e2bd..8c9a931cabc 100644 --- a/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md +++ b/website/docs/docs/cloud/dbt-cloud-ide/develop-in-the-cloud.md @@ -11,11 +11,11 @@ The dbt Cloud integrated development environment (IDE) is a single web-based int The dbt Cloud IDE offers several [editing features](/docs/cloud/dbt-cloud-ide/ide-user-interface#editing-features) for faster and more efficient data platform development and governance: -- Syntax highlighting for SQL — Makes it easy to distinguish different parts of your code, reducing syntax errors and enhancing readability. -- Auto-completion — Suggests table names, arguments, and column names as you type, saving time and reducing typos. -- Code [formatting and linting](/docs/cloud/dbt-cloud-ide/lint-format) — Help standardize and fix your SQL code effortlessly. -- Navigation tools — Easily move around your code, jump to specific lines, find and replace text, and navigate between project files. -- Version control — Manage code versions with a few clicks. +- Syntax highlighting for SQL: Makes it easy to distinguish different parts of your code, reducing syntax errors and enhancing readability. +- Auto-completion: Suggests table names, arguments, and column names as you type, saving time and reducing typos. +- Code [formatting and linting](/docs/cloud/dbt-cloud-ide/lint-format): Help standardize and fix your SQL code effortlessly. +- Navigation tools: Easily move around your code, jump to specific lines, find and replace text, and navigate between project files. +- Version control: Manage code versions with a few clicks. These [features](#dbt-cloud-ide-features) create a powerful editing environment for efficient SQL coding, suitable for both experienced and beginner developers. From 13a317e3e25069ef03d68120388f31a55bce2e59 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 14:32:14 +0100 Subject: [PATCH 080/265] update permissions --- website/snippets/_enterprise-permissions-table.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/snippets/_enterprise-permissions-table.md b/website/snippets/_enterprise-permissions-table.md index 779c5bcb479..b1bde5aabb7 100644 --- a/website/snippets/_enterprise-permissions-table.md +++ b/website/snippets/_enterprise-permissions-table.md @@ -7,7 +7,7 @@ Key: Permissions: * Account-level permissions — Permissions related to management of the dbt Cloud account. For example, billing and account settings. -* Project-level permissions — Permissions related to the projects in dbt Cloud. For example, repos and access to the IDE. +* Project-level permissions — Permissions related to the projects in dbt Cloud. For example, repos and access to the IDE or dbt Cloud CLI. ### Account roles Account roles enable you to manage the dbt Cloud account and manage the account settings (for example, generating service tokens, inviting users, configuring SSO). They also provide project-level permissions. The **Account Admin** role is the highest level of access you can assign. @@ -36,7 +36,7 @@ Account roles enable you to manage the dbt Cloud account and manage the account | Credentials | W | | W | | R | | Custom env. variables | W | | W | | R | | dbt adapters | W | | W | | R | -| Develop (IDE) | W | | W | | | +| Develop (IDE or dbt Cloud CLI) | W | | W | | | | Environments | W | | W | | R | | Groups | W | | R | W | R | | Jobs | W | | W | | R | @@ -52,7 +52,7 @@ Account roles enable you to manage the dbt Cloud account and manage the account ### Project role permissions -The project roles enable you to work within the projects in various capacities. They primarily provide access to project-level permissions such as repos and the IDE, but may also provide some account-level permissions. +The project roles enable you to work within the projects in various capacities. They primarily provide access to project-level permissions such as repos and the IDE or dbt Cloud CLI, but may also provide some account-level permissions. #### Account permissions for project roles @@ -76,7 +76,7 @@ The project roles enable you to work within the projects in various capacities. | Credentials | W | W | W | W | R | W | | | | R | R | | | Custom env. variables | W | W | W | W | W | W | R | | | R | W | | | dbt adapters | W | W | W | W | R | W | | | | R | R | | -| Develop (IDE) | W | W | | W | | | | | | | | | +| Develop (IDE or dbt Cloud CLI) | W | W | | W | | | | | | | | | | Environments | W | R | R | R | R | W | R | | | R | R | | | Groups | R | | R | R | R | | | | | R | R | | | Jobs | W | R | R | W | R | W | R | | | R | R | | From c1619a7b6247137c52fdc5eee49358c937e76219 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 14:35:02 +0100 Subject: [PATCH 081/265] add defer env id per jira 209 --- website/docs/reference/dbt_project.yml.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/reference/dbt_project.yml.md b/website/docs/reference/dbt_project.yml.md index b1fa061462c..5e56bf76e48 100644 --- a/website/docs/reference/dbt_project.yml.md +++ b/website/docs/reference/dbt_project.yml.md @@ -54,7 +54,8 @@ dbt uses YAML in a few different places. If you're new to YAML, it would be wort [require-dbt-version](/reference/project-configs/require-dbt-version): version-range | [version-range] [dbt-cloud](/docs/cloud/cloud-cli-installation): - project-id: project_id + project-id: project_id #Required + defer-env-id: 5678 #Optional [quoting](/reference/project-configs/quoting): database: true | false From 2af54467872020b9fd4aad73c36c6682b55fe675 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 16:49:44 +0100 Subject: [PATCH 082/265] release note for ide dbt deps --- .../03-Oct-2023/dbt-deps-auto-install.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md new file mode 100644 index 00000000000..7d6d4966c86 --- /dev/null +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md @@ -0,0 +1,12 @@ +--- +title: "Enhancement: The dbt Cloud IDE auto-installs 'dbt deps' on startup" +description: "October 2023 :The dbt Cloud IDE auto-handles 'dbt deps' on startup; manual run needed for 'packages.yml' changes. Available for multi-tenant users (single-tenant support coming soon) and applies to all dbt versions." +sidebar_label: "Update: IDE auto-installs 'dbt deps' on startup" +tags: [Oct-2023, IDE] +date: 2023-10-11 +sidebar_position: 08 +--- + +The dbt Cloud IDE now automatically installs `dbt deps` when your environment starts or when necessary. Previously, it would prompt you to run `dbt deps` during initialization. However, you still need to run `dbt deps` if you modify your `packages.yml` file. + +This improved workflow is available to all multi-tenant dbt Cloud users (Single-tenant support coming next week) and applies to dbt versions. From c5890eb56649e2fe064a15351a16b333dcef4d8e Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 16:52:04 +0100 Subject: [PATCH 083/265] Update website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md --- .../release-notes/03-Oct-2023/dbt-deps-auto-install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md index 7d6d4966c86..0af27ca668c 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md @@ -1,7 +1,7 @@ --- title: "Enhancement: The dbt Cloud IDE auto-installs 'dbt deps' on startup" description: "October 2023 :The dbt Cloud IDE auto-handles 'dbt deps' on startup; manual run needed for 'packages.yml' changes. Available for multi-tenant users (single-tenant support coming soon) and applies to all dbt versions." -sidebar_label: "Update: IDE auto-installs 'dbt deps' on startup" +sidebar_label: "Enhancement: IDE auto-installs 'dbt deps' on startup" tags: [Oct-2023, IDE] date: 2023-10-11 sidebar_position: 08 From 2029656dd1e815eaa462ddba88af017f61512f53 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 17:04:35 +0100 Subject: [PATCH 084/265] add lighdash --- website/snippets/_sl-partner-links.md | 15 +++ website/static/img/icons/lightdash.svg | 96 ++++++++++++++++++++ website/static/img/icons/white/lightdash.svg | 96 ++++++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 website/static/img/icons/lightdash.svg create mode 100644 website/static/img/icons/white/lightdash.svg diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index 7e2234b4980..dec3ce6491d 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -30,6 +30,20 @@ The following tools integrate with the dbt Semantic Layer:
+
+ + + + +
+
+

diff --git a/website/static/img/icons/lightdash.svg b/website/static/img/icons/lightdash.svg new file mode 100644 index 00000000000..96f4676e7ee --- /dev/null +++ b/website/static/img/icons/lightdash.svg @@ -0,0 +1,96 @@ + + + + + + + + \ No newline at end of file diff --git a/website/static/img/icons/white/lightdash.svg b/website/static/img/icons/white/lightdash.svg new file mode 100644 index 00000000000..96f4676e7ee --- /dev/null +++ b/website/static/img/icons/white/lightdash.svg @@ -0,0 +1,96 @@ + + + + + + + + \ No newline at end of file From cef447ebb3beaaa700dae93fafa454cb13628cd2 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 17:05:35 +0100 Subject: [PATCH 085/265] change --- website/snippets/_sl-partner-links.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index dec3ce6491d..e9ace979447 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -33,7 +33,7 @@ The following tools integrate with the dbt Semantic Layer:
Date: Tue, 10 Oct 2023 17:26:54 +0100 Subject: [PATCH 086/265] Update cloud-cli-pp.md --- .../release-notes/03-Oct-2023/cloud-cli-pp.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md index 0549f8b2591..5fd070dd70a 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md @@ -1,31 +1,31 @@ --- title: "New: Develop with the dbt Cloud CLI" description: "October 2023: Learn about the new dbt Cloud CLI development experience, now in public preview," -sidebar_position: 6 +sidebar_position: 06 sidebar_label: "New: Develop with the dbt Cloud CLI" tags: [Oct-2023, CLI, dbt Cloud] date: 2023-10-17 --- -We are excited to announce the dbt Cloud CLI, **unified command line for dbt**, is available in public preview. It’s a local development experience, powered by dbt Cloud. It’s easy to get started: `brew install dbt-cloud-cli` and you’re ready to go. +We are excited to announce the dbt Cloud CLI, **unified command line for dbt**, is available in public preview. It’s a local development experience, powered by dbt Cloud. It’s easy to get started: `brew install dbt` and you’re ready to go. -We will continue to invest in the dbt Cloud IDE as the easiest and most accessible way to get started using dbt, especially for data analysts who have never developed software using the command line before. We will keep improving the speed, stability, and feature richness of the IDE, as we have been all year long [https://www.getdbt.com/blog/improvements-to-the-dbt-cloud-ide/]. +We will continue to invest in the dbt Cloud IDE as the easiest and most accessible way to get started using dbt, especially for data analysts who have never developed software using the command line before. We will keep improving the speed, stability, and feature richness of the IDE, as we have been [all year long](https://www.getdbt.com/blog/improvements-to-the-dbt-cloud-ide/). -We also know that many people developing in dbt have a preference for local development, where they can use their favorite terminal, text editor, keybindings, color scheme, and so on. This includes people with data engineering backgrounds, as well as those analytics engineers who started writing code in the dbt Cloud IDE and have expanded their skillset. +We also know that many people developing in dbt have a preference for local development, where they can use their favorite terminal, text editor, keybindings, color scheme, and so on. This includes people with data engineering backgrounds, as well as those analytics engineers who started writing code in the dbt Cloud IDE and have expanded their skills. The new dbt Cloud CLI offers the best of both worlds, including: - The power of developing against the dbt Cloud platform - The flexibility of your own local setup - Run whichever community-developed plugins, pre-commit hooks, or other arbitrary scripts you like. -Some of the unique capabilities to this dbt Cloud CLI includes: +Some of the unique capabilities of this dbt Cloud CLI include: -- Automatic deferral of build artifacts to your Cloud project's production environment -- Support for dbt Mesh (cross-project `ref`), +- Automatic deferral of build artifacts to your Cloud project's production environment +- Secure credential storage in the dbt Cloud platform +- Support for dbt Mesh ([cross-project `ref`](/docs/collaborate/govern/project-dependencies)) - Development workflow for dbt Semantic Layer - Speedier, lower cost builds -For more info, check out the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) page. +For more info, check out [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). From 3aa2fd3697a5379850f4e7a7682f7b48bfa363ef Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 17:42:13 +0100 Subject: [PATCH 087/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 34e2c1728cc..e81f6bac348 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -15,7 +15,7 @@ Both the dbt Cloud IDE and the dbt Cloud CLI allow users to natively defer to pr Set your production environment using the [production environment checkbox](/docs/deploy/deploy-environments#set-as-production-environment-beta) in the environment settings page. This can be set for one deployment environment per dbt Cloud project. When using defer, the artifacts from the latest successful, non-CI job execution in the production environment will be compared to. -### Defer in the IDE +### Defer in the dbt Cloud IDE Defer in the IDE is as simple as toggling the `Defer to production` switch on the command bar! When enabled, dbt Cloud will: From 7bc788c74325a535ac17946f23b54cfee100e847 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 18:03:32 +0100 Subject: [PATCH 088/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 1 - 1 file changed, 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index e81f6bac348..951ee08db62 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -31,7 +31,6 @@ One key difference between using `--defer` in the Cloud CLI vs the IDE is that d Cloud CLI offers additional flexibility for declaring which environment is used as the source of deferral artifacts. You can set a `defer-env-id` key in either your `dbt_project.yml` file or your `dbt_cloud.yml` file. ```yml -# in dbt_cloud.yml dever-env-id: '123456' ``` From f764515ce5db92b1cb9b8ded5f484964414aa97a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 18:04:36 +0100 Subject: [PATCH 089/265] Update about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 951ee08db62..cc254216863 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -30,12 +30,14 @@ One key difference between using `--defer` in the Cloud CLI vs the IDE is that d Cloud CLI offers additional flexibility for declaring which environment is used as the source of deferral artifacts. You can set a `defer-env-id` key in either your `dbt_project.yml` file or your `dbt_cloud.yml` file. +**In the `dbt_cloud.yml` file:** + ```yml dever-env-id: '123456' ``` +**In the dbt_project.yml file:** ```yml -# in dbt_project.yml dbt_cloud: dever-env-id: '123456' ``` From faef573b47faebbd816c2741af93ad7ba20f2380 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 10 Oct 2023 18:13:01 +0100 Subject: [PATCH 090/265] Update about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index cc254216863..db0c1b279f0 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -30,14 +30,20 @@ One key difference between using `--defer` in the Cloud CLI vs the IDE is that d Cloud CLI offers additional flexibility for declaring which environment is used as the source of deferral artifacts. You can set a `defer-env-id` key in either your `dbt_project.yml` file or your `dbt_cloud.yml` file. -**In the `dbt_cloud.yml` file:** + -```yml + ```yml dever-env-id: '123456' ``` -**In the dbt_project.yml file:** + + + + + ```yml dbt_cloud: dever-env-id: '123456' ``` + + From f3a9abdcea4a0f99bb08ac93581e89ba54edb875 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 10 Oct 2023 18:18:29 +0100 Subject: [PATCH 091/265] update position --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 5428609ef9a..c6598963b4d 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -2,7 +2,7 @@ title: "Update: dbt Cloud Semantic Layer is Generally Available" description: "October 2023: dbt Cloud Semantic Layer is Generally Available for all users" sidebar_label: "Update: dbt Cloud Semantic Layer is GA" -sidebar_position: 10 +sidebar_position: 07 date: 2023-10-17 tags: [Oct-2023] --- From 9bd1d77b3280c619f07915c4b9a57840825b4cec Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:27:46 +0100 Subject: [PATCH 092/265] Update website/docs/reference/global-configs/command-line-flags.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/reference/global-configs/command-line-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/reference/global-configs/command-line-flags.md b/website/docs/reference/global-configs/command-line-flags.md index ce34ba85b41..57ab91259b8 100644 --- a/website/docs/reference/global-configs/command-line-flags.md +++ b/website/docs/reference/global-configs/command-line-flags.md @@ -4,7 +4,7 @@ id: "command-line-flags" sidebar: "Command line flags" --- -For consistency, command line (CLI) flags should come right after the `dbt` prefix and its subcommands. This includes "global" flags (supported for all commands). When set, CLI flags override environment variables and profile configs. +For consistency, command-line interface (CLI) flags should come right after the `dbt` prefix and its subcommands. This includes "global" flags (supported for all commands). When set, CLI flags override environment variables and profile configs. For example, instead of using: From c0614895f318d40e678936ef8d0c986af8fcf6d2 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 11:46:59 +0100 Subject: [PATCH 093/265] rename cli to core --- website/docs/docs/cloud/configure-cloud-cli.md | 10 +++++----- website/docs/docs/core/about-core-setup.md | 2 +- .../docs/core/{about-the-cli.md => about-dbt-core.md} | 4 ++-- website/docs/docs/core/installation-overview.md | 8 ++++++++ .../running-a-dbt-project/run-your-dbt-projects.md | 2 +- website/docs/reference/dbt-commands.md | 8 ++++---- website/sidebars.js | 2 +- website/vercel.json | 5 +++++ 8 files changed, 27 insertions(+), 14 deletions(-) rename website/docs/docs/core/{about-the-cli.md => about-dbt-core.md} (78%) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 10533223ffd..84b2bb7ca47 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -68,13 +68,13 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt ## Use the dbt Cloud CLI -- The dbt Cloud CLI shares the same set of commands as dbt Core and processes the dbt commands you invoke. +- The dbt Cloud CLI shares the same set of [dbt commands](/reference/dbt-commands) as dbt Core and processes the commands you invoke. - It allows you to use automatic deferral of build artifacts to your Cloud project's production environment. - It also supports [project dependencies](/docs/collaborate/govern/project-dependencies), which allows you to depend on another project using the metadata service in dbt Cloud. - Project dependencies instantly connects to and references (or `ref`) public models defined in other projects. This means you don't need to execute or analyze these upstream models yourself. Instead, you treat them as an API that returns a dataset. - -:::infoShare feedback -Share feedback or request features you'd like to see in the [dbt community Slack](https://getdbt.slack.com/archives/C05M77P54FL). +:::tip Use the --help flag +As a tip, most command-line tools have a `--help` flag to show available commands and arguments. Use the `--help` flag with dbt in two ways: +- `dbt --help`: Lists the commands available for dbt
+- `dbt run --help`: Lists the flags available for the `run` command ::: - diff --git a/website/docs/docs/core/about-core-setup.md b/website/docs/docs/core/about-core-setup.md index 0408e529b2d..d0aadb44346 100644 --- a/website/docs/docs/core/about-core-setup.md +++ b/website/docs/docs/core/about-core-setup.md @@ -9,7 +9,7 @@ dbt Core is an [open-source](https://github.com/dbt-labs/dbt-core) tool that ena This section of our docs will guide you through various settings to get started: -- [About the CLI](/docs/core/about-the-cli) +- [About dbt Core](/docs/core/about-the-cli) - [Installing dbt](/docs/core/installation) - [Connecting to a data platform](/docs/core/connect-data-platform/profiles.yml) - [How to run your dbt projects](/docs/running-a-dbt-project/run-your-dbt-projects) diff --git a/website/docs/docs/core/about-the-cli.md b/website/docs/docs/core/about-dbt-core.md similarity index 78% rename from website/docs/docs/core/about-the-cli.md rename to website/docs/docs/core/about-dbt-core.md index 48777ed7703..a35d92420f3 100644 --- a/website/docs/docs/core/about-the-cli.md +++ b/website/docs/docs/core/about-dbt-core.md @@ -1,6 +1,6 @@ --- title: "About dbt Core" -id: "about-the-cli" +id: "about-dbt-core" sidebar_label: "About dbt Core" --- @@ -22,4 +22,4 @@ If you're using the command line, we recommend learning some basics of your term You can find more information on installing and setting up the dbt Core [here](/docs/core/installation). -dbt also supports a dbt Cloud CLI and dbt Core, both command line tools that enable you to run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). +**Note** — dbt supports a dbt Cloud CLI and dbt Core, both command line interface tools that enable you to run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). diff --git a/website/docs/docs/core/installation-overview.md b/website/docs/docs/core/installation-overview.md index f1fdb800fdf..cd65f670018 100644 --- a/website/docs/docs/core/installation-overview.md +++ b/website/docs/docs/core/installation-overview.md @@ -11,6 +11,14 @@ You can install dbt Core on the command line by using one of these methods: - [Use a Docker image to install dbt](/docs/core/docker-install) - [Install dbt from source](/docs/core/source-install) +:::tip Pro tip: Using the --help flag + +Most command-line tools, including dbt, have a `--help` flag that you can use to show available commands and arguments. For example, you can use the `--help` flag with dbt in two ways:

+— `dbt --help`: Lists the commands available for dbt
+— `dbt run --help`: Lists the flags available for the `run` command + +::: + ## Upgrading dbt Core dbt provides a number of resources for understanding [general best practices](/blog/upgrade-dbt-without-fear) while upgrading your dbt project as well as detailed [migration guides](/guides/migration/versions/upgrading-to-v1.4) highlighting the changes required for each minor and major release, and [core versions](/docs/dbt-versions/core) diff --git a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md index 4e768083e1b..677dc1af3f2 100644 --- a/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md +++ b/website/docs/docs/running-a-dbt-project/run-your-dbt-projects.md @@ -12,7 +12,7 @@ You can run your dbt projects with [dbt Cloud](/docs/cloud/about-cloud/dbt-cloud - The dbt Cloud CLI to develop and run dbt commands against your dbt Cloud development environment from your local command line. - For more details, refer to [Develop in the Cloud](/docs/cloud/about-cloud-develop). -- **dbt Core**: An open source project where you can develop from the command line. +- **dbt Core**: An open source project where you can develop from the [command line](/docs/core/about-dbt-core). The dbt Cloud CLI and dbt Core are both command line tools that enable you to run dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index 731f615925b..2ee4415f409 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -5,7 +5,7 @@ title: "dbt Command reference" You can run dbt using the following tools: - In your browser with the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) -- On the command line interface using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or open-source [dbt Core](https://github.com/dbt-labs/dbt-core), both of which enable you to execute dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). +- On the command line interface using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or open-source [dbt Core](/docs/core/about-dbt-core), both of which enable you to execute dbt commands. The key distinction is the dbt Cloud CLI is tailored for dbt Cloud's infrastructure and integrates with all its [features](/docs/cloud/about-cloud/dbt-cloud-features). The following sections outline the commands supported by dbt and their relevant flags. For information about selecting models on the command line, consult the docs on [Model selection syntax](/reference/node-selection/syntax). @@ -49,7 +49,7 @@ You can run dbt commands in your specific tool by prefixing them with `dbt`. Fo Select the tabs that are relevant to your development workflow. For example, if you develop in the dbt Cloud IDE, select **dbt Cloud**. - + Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) and use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. @@ -69,9 +69,9 @@ Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/ - + -Use the following dbt commands in the [CLI](/docs/core/about-the-cli) and use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. +Use the following dbt commands in the [dbt COre](/docs/core/about-dbt-core) and use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. - [build](/reference/commands/build): build and test all selected resources (models, seeds, snapshots, tests) - [clean](/reference/commands/clean): deletes artifacts present in the dbt project diff --git a/website/sidebars.js b/website/sidebars.js index 6f76c367b91..12534ce9b8a 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -162,7 +162,7 @@ const sidebarSettings = { collapsed: true, link: { type: "doc", id: "docs/core/about-core-setup" }, items: [ - "docs/core/about-the-cli", + "docs/core/about-dbt-core", "docs/core/dbt-core-environments", { type: "category", diff --git a/website/vercel.json b/website/vercel.json index 56ef980271b..0b66f4150a5 100644 --- a/website/vercel.json +++ b/website/vercel.json @@ -2,6 +2,11 @@ "cleanUrls": true, "trailingSlash": false, "redirects": [ + { + "source": "/docs/core/about-the-cli", + "destination": "/docs/core/about-dbt-core", + "permanent": true + }, { "source": "/docs/cloud/about-cloud/about-cloud-ide", "destination": "/docs/cloud/about-cloud-develop", From 04d6c32e9f26a6fbfca5d66026e4cfb729fd140c Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 12:05:45 +0100 Subject: [PATCH 094/265] fix broken links --- website/docs/docs/core/about-core-setup.md | 2 +- website/docs/docs/core/connect-data-platform/profiles.yml.md | 2 +- website/docs/docs/deploy/job-commands.md | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/website/docs/docs/core/about-core-setup.md b/website/docs/docs/core/about-core-setup.md index d0aadb44346..1254f0a3d17 100644 --- a/website/docs/docs/core/about-core-setup.md +++ b/website/docs/docs/core/about-core-setup.md @@ -9,7 +9,7 @@ dbt Core is an [open-source](https://github.com/dbt-labs/dbt-core) tool that ena This section of our docs will guide you through various settings to get started: -- [About dbt Core](/docs/core/about-the-cli) +- [About dbt Core](/docs/core/about-dbt-core) - [Installing dbt](/docs/core/installation) - [Connecting to a data platform](/docs/core/connect-data-platform/profiles.yml) - [How to run your dbt projects](/docs/running-a-dbt-project/run-your-dbt-projects) diff --git a/website/docs/docs/core/connect-data-platform/profiles.yml.md b/website/docs/docs/core/connect-data-platform/profiles.yml.md index 67b0eb15fbe..97254dda1c4 100644 --- a/website/docs/docs/core/connect-data-platform/profiles.yml.md +++ b/website/docs/docs/core/connect-data-platform/profiles.yml.md @@ -3,7 +3,7 @@ title: "About profiles.yml" id: profiles.yml --- -If you're using dbt from the [command line (CLI)](/docs/core/about-the-cli), you'll need a `profiles.yml` file that contains the connection details for your data platform. When you run dbt from the CLI, it reads your `dbt_project.yml` file to find the `profile` name, and then looks for a profile with the same name in your `profiles.yml` file. This profile contains all the information dbt needs to connect to your data platform. +If you're using [dbt Core](/docs/core/about-dbt-core), you'll need a `profiles.yml` file that contains the connection details for your data platform. When you run dbt Core from the command line, it reads your `dbt_project.yml` file to find the `profile` name, and then looks for a profile with the same name in your `profiles.yml` file. This profile contains all the information dbt needs to connect to your data platform. For detailed info, you can refer to the [Connection profiles](/docs/core/connect-data-platform/connection-profiles). diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index ca26182fc7b..db284c78a05 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -41,8 +41,7 @@ For every job, you have the option to select the [Generate docs on run](/docs/co ### Command list -You can add or remove as many [dbt commands](/reference/dbt-commands) as necessary for every job. However, you need to have at least one dbt command. -Commands under the "CLI" tab in the [dbt Command reference doc](/reference/dbt-commands) page are meant for use in the [CLI](/docs/core/about-the-cli) only and are not available in dbt Cloud. +You can add or remove as many [dbt commands](/reference/dbt-commands) as necessary for every job. However, you need to have at least one dbt command. There are few commands listed as "dbt Core" in the [dbt Command reference doc](/reference/dbt-commands) page. This means they are meant for use in [dbt Core](/docs/core/about-dbt-core) only and are not available in dbt Cloud. :::tip Using selectors From 94ffe6e264be65749c16865304a591152e540931 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:45:02 +0100 Subject: [PATCH 095/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index db0c1b279f0..273447065f3 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -7,7 +7,7 @@ pagination_next: "docs/cloud/cloud-cli-installation" --- -[Defer](/reference/node-selection/defer) is a powerful feature that allows developers to only build and run and test models they've edited without having to first run and build these models' upstream parents. This is powered by having a production manifest to compare to, and dbt will resolve the `{{ ref() }}` function with upstream production artifacts. +[Defer](/reference/node-selection/defer) is a powerful feature that allows developers to only build and run and test models they've edited without having to first run and build all the models that come before them (upstream parents). This is powered by using a production manifest for comparison, and dbt will resolve the `{{ ref() }}` function with upstream production artifacts. Both the dbt Cloud IDE and the dbt Cloud CLI allow users to natively defer to production metadata directly in their development workflows, dramatically reducing development time and warehouse spend by preventing unecessary model builds. From 868fb65f98a7ceecd4345f165185209964b3260f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:49:41 +0100 Subject: [PATCH 096/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 273447065f3..7e49eb616e9 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -22,7 +22,7 @@ Defer in the IDE is as simple as toggling the `Defer to production` switch on th 1. Pull down the most recent manifest from the Production environment for comparison 2. Pass the `--defer` flag to the command (for any command that accepts the flag) -For example, if you were to start developing with on a new branch with [nothing in your development schema](/reference/node-selection/defer#usage), make an edit to a single model, and run `dbt build -s state:modified` you would see *just* that model run, with any ` {{ ref() }}` functions resolve to the production location of the reffed models! +For example, if you were to start developing on a new branch with [nothing in your development schema](/reference/node-selection/defer#usage), edit a single model, and run `dbt build -s state:modified` — only the edited model would run. Any `{{ ref() }}` functions will point to the production location of the referenced models ### Defer in dbt Cloud CLI From 34ee78463ff17b429db60e3becf4b3d7b0f14d3e Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:49:52 +0100 Subject: [PATCH 097/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 7e49eb616e9..9db2b45de7f 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -28,7 +28,7 @@ For example, if you were to start developing on a new branch with [nothing in yo One key difference between using `--defer` in the Cloud CLI vs the IDE is that defer is *automatically on by default for all invocations*, using artifacts from your production evironment to compare. You can pass the `--no-defer` flag to your dbt command to disable this behavior. This flag is unique to the dbt Cloud CLI only. -Cloud CLI offers additional flexibility for declaring which environment is used as the source of deferral artifacts. You can set a `defer-env-id` key in either your `dbt_project.yml` file or your `dbt_cloud.yml` file. +The dbt Cloud CLI offers additional flexibility by letting you choose the source environment for deferral artifacts. You can set a `defer-env-id key` in either your `dbt_project.yml` or `dbt_cloud.yml` file. From 39b43cf02a4308ffee463481f8b5074922c60d8d Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:50:44 +0100 Subject: [PATCH 098/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 9db2b45de7f..d01cb5b258f 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -26,7 +26,7 @@ For example, if you were to start developing on a new branch with [nothing in yo ### Defer in dbt Cloud CLI -One key difference between using `--defer` in the Cloud CLI vs the IDE is that defer is *automatically on by default for all invocations*, using artifacts from your production evironment to compare. You can pass the `--no-defer` flag to your dbt command to disable this behavior. This flag is unique to the dbt Cloud CLI only. +One key difference between using `--defer` in the dbt Cloud CLI and the dbt Cloud IDE is that `--defer` is *automatically* enabled in the dbt Cloud CLI for all invocations, comparing with production artifacts. You can disable it with the `--no-defer` flag. The dbt Cloud CLI offers additional flexibility by letting you choose the source environment for deferral artifacts. You can set a `defer-env-id key` in either your `dbt_project.yml` or `dbt_cloud.yml` file. From e44e66b375915a67a0453c018728831cee7faa19 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:51:16 +0100 Subject: [PATCH 099/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index d01cb5b258f..0b51180910a 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -17,7 +17,7 @@ Set your production environment using the [production environment checkbox](/doc ### Defer in the dbt Cloud IDE -Defer in the IDE is as simple as toggling the `Defer to production` switch on the command bar! When enabled, dbt Cloud will: +To enable 'Defer' in the dbt Cloud IDE, toggle the **Defer to production** button on the command bar. Once enabled, dbt Cloud will: 1. Pull down the most recent manifest from the Production environment for comparison 2. Pass the `--defer` flag to the command (for any command that accepts the flag) From b5628d342565d0796c7fe2d64225d5ce444bb35f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:51:28 +0100 Subject: [PATCH 100/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 0b51180910a..9c6fb46ff52 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -13,7 +13,10 @@ Both the dbt Cloud IDE and the dbt Cloud CLI allow users to natively defer to pr ## Required setup -Set your production environment using the [production environment checkbox](/docs/deploy/deploy-environments#set-as-production-environment-beta) in the environment settings page. This can be set for one deployment environment per dbt Cloud project. When using defer, the artifacts from the latest successful, non-CI job execution in the production environment will be compared to. +- You must select the **[Production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta)** checkbox in the **Environment Settings** page. + - This can be set for one deployment environment per dbt Cloud project. + +When using 'defer', it compares artifacts from the most recent successful production job, excluding CI jobs. ### Defer in the dbt Cloud IDE From 56df1911aa0335a6edf9498f623f76c187d46dad Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:54:55 +0100 Subject: [PATCH 101/265] Update about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 9c6fb46ff52..9ccc7110b3c 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -9,13 +9,14 @@ pagination_next: "docs/cloud/cloud-cli-installation" [Defer](/reference/node-selection/defer) is a powerful feature that allows developers to only build and run and test models they've edited without having to first run and build all the models that come before them (upstream parents). This is powered by using a production manifest for comparison, and dbt will resolve the `{{ ref() }}` function with upstream production artifacts. -Both the dbt Cloud IDE and the dbt Cloud CLI allow users to natively defer to production metadata directly in their development workflows, dramatically reducing development time and warehouse spend by preventing unecessary model builds. +Both the dbt Cloud IDE and the dbt Cloud CLI allow users to natively defer to production metadata directly in their development workflows, dramatically reducing development time and warehouse spend by preventing unnecessary model builds. ## Required setup - You must select the **[Production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta)** checkbox in the **Environment Settings** page. - - This can be set for one deployment environment per dbt Cloud project. - + - This can be set for one deployment environment per dbt Cloud project. +- You must have a successful job run first + When using 'defer', it compares artifacts from the most recent successful production job, excluding CI jobs. ### Defer in the dbt Cloud IDE From e5a3d66e182407f3a5185cb64045ed255cdfc058 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 12:55:13 +0100 Subject: [PATCH 102/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 9ccc7110b3c..f58906ad0e6 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -15,7 +15,7 @@ Both the dbt Cloud IDE and the dbt Cloud CLI allow users to natively defer to pr - You must select the **[Production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta)** checkbox in the **Environment Settings** page. - This can be set for one deployment environment per dbt Cloud project. -- You must have a successful job run first +- You must have a successful job run first. When using 'defer', it compares artifacts from the most recent successful production job, excluding CI jobs. From aeb68f039637d77fd9f780bd4a4a4af6f89134f3 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 13:30:30 +0100 Subject: [PATCH 103/265] add defer screenshot --- .../docs/cloud/about-cloud-develop-defer.md | 4 +++- .../cloud/dbt-cloud-ide/ide-user-interface.md | 6 ++++-- .../dbt-cloud/cloud-ide/ide-command-bar.jpg | Bin 0 -> 210046 bytes .../static/img/docs/dbt-cloud/defer-toggle.jpg | Bin 0 -> 467442 bytes 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 website/static/img/docs/dbt-cloud/cloud-ide/ide-command-bar.jpg create mode 100644 website/static/img/docs/dbt-cloud/defer-toggle.jpg diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index f58906ad0e6..438105a8378 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -26,7 +26,9 @@ To enable 'Defer' in the dbt Cloud IDE, toggle the **Defer to production** butto 1. Pull down the most recent manifest from the Production environment for comparison 2. Pass the `--defer` flag to the command (for any command that accepts the flag) -For example, if you were to start developing on a new branch with [nothing in your development schema](/reference/node-selection/defer#usage), edit a single model, and run `dbt build -s state:modified` — only the edited model would run. Any `{{ ref() }}` functions will point to the production location of the referenced models +For example, if you were to start developing on a new branch with [nothing in your development schema](/reference/node-selection/defer#usage), edit a single model, and run `dbt build -s state:modified` — only the edited model would run. Any `{{ ref() }}` functions will point to the production location of the referenced models. + + ### Defer in dbt Cloud CLI diff --git a/website/docs/docs/cloud/dbt-cloud-ide/ide-user-interface.md b/website/docs/docs/cloud/dbt-cloud-ide/ide-user-interface.md index de643413a8a..05910b23e7f 100644 --- a/website/docs/docs/cloud/dbt-cloud-ide/ide-user-interface.md +++ b/website/docs/docs/cloud/dbt-cloud-ide/ide-user-interface.md @@ -36,11 +36,13 @@ The IDE streamlines your workflow, and features a popular user interface layout * Added (A) — The IDE detects added files * Deleted (D) — The IDE detects deleted files. - + 5. **Command bar —** The Command bar, located in the lower left of the IDE, is used to invoke [dbt commands](/reference/dbt-commands). When a command is invoked, the associated logs are shown in the Invocation History Drawer. -6. **IDE Status button —** The IDE Status button, located on the lower right of the IDE, displays the current IDE status. If there is an error in the status or in the dbt code that stops the project from parsing, the button will turn red and display "Error". If there aren't any errors, the button will display a green "Ready" status. To access the [IDE Status modal](#modals-and-menus), simply click on this button. +6. **Defer to production —** The **Defer to production** toggle allows developers to only build and run and test models they've edited without having to first run and build all the models that come before them (upstream parents). Refer to [Using defer in dbt Cloud](/docs/cloud/about-cloud-develop-defer#defer-in-the-dbt-cloud-ide) for more info. + +7. **Status button —** The IDE Status button, located on the lower right of the IDE, displays the current IDE status. If there is an error in the status or in the dbt code that stops the project from parsing, the button will turn red and display "Error". If there aren't any errors, the button will display a green "Ready" status. To access the [IDE Status modal](#modals-and-menus), simply click on this button. ## Editing features diff --git a/website/static/img/docs/dbt-cloud/cloud-ide/ide-command-bar.jpg b/website/static/img/docs/dbt-cloud/cloud-ide/ide-command-bar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe60ddd7e03b23fcc7397378212258e8c298df5a GIT binary patch literal 210046 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

mMP32#{Q`>S8Xg| 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

aJ)-h?A%E@VA4dF*rT#I?!;1Equ_dKpbm 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%0Ac0(x_f{znvis!RjRznjE%lwO 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

I^4k-Sr$!2PUQ#fua_}Sf4uJ=RrX;pDE;z=CyFK zv(Rn^K(q}I6AB%JYPll+MItMM3w`oN5AiGVQiK{oB+#wkf?%jZdcm1#TB$s)V@4tP z?)Qr{%9-|8hbFiEu?U&EfholYk5z96);q5vgl?Nzc&{LG7JV7@n>6)37SO!~T|wV7 zUhe^wL@}(90KaYzz)q3JslAw)?`Vu$;3|mISzCbnkZ5}OSi#d$D30hBtGz$Fh{!k{ zbs}${h_)aB6_9p z+m>sQOvp}WgnVu^#QAfT_@|rkKe8H0-y5TwA9*L@NecZ+RU5yCafdF?N5}OY%R<2!5V!uw1Z4NYD; z_(w;W!sQ_%;-?qD^uQLluYCa87u@<}y1^)MxUAq-3YVo1*a4eXxh|^j=r_8L12ej? z2othzc>s9^KPuI!rMBh?Ct-I&loOm6;rcL%7HKeUyD()x78Mm=&j|XCs#@j7%HHB3f(1OJqKBlPR-o}vZDCzZplUWW8*X5c_LYdmZ))OLC|@f zZnKXT5Q5aZ7yZucf`{%=y_mQFK+A4576qKO^;VxY8pc2ZxBYjIQ#xKgC|t2-y@#6y z-nC_XozGzWudd#%Y)AKrMF`&G=pD(e+7ln2oO_&Lz5|bb6>7gNeW5s1_9*V(d)5vL zLZ$4q1_GYev#g@60p7aDW#bi#G&z=i@>$>~Hd-x9b9!7i4SEQ6zL;Gow^y6qZdS4T zmm9|uet@79MV?OLERTiezBM~MjgQMl7~4a6pX8OKY{I=sg4%n>k}BtcVVW%KyGOS5 z_)o#}681gOJiAo10`|9m=O6v|Km;ToVN_ALH*gYJ33@JCl0y@i`VJEJ4@9*EMwTuW zJ`(?_UWyV&SEUY}B9@&^Eb4tVzkE0kvf{VfYLX$};FzuqVK_Z(>uugM6m;DBooD7V1~M-cU+96m=j;fa&7|{>_y6}-Qg{II(9&-A={iyNxz{m z;(tWj{&Vy!0CdXkoygCme}tuEF&YN;4CpOw@~q)h)n;qqyT_%toCHo7ve?I zcmiA@i>c87Y2Zw^nr_0j=|1=Gbmf2lk^en<|MhMUz&~z#!sjq$AVAE5*!t{Tn(yth z`GmjGwa!~-@Q)bE`TTa;CR!z-T=HZ98Y5`oMw`+nA)EJzG|m5iSn&TIz9R*|N_GY$ za&unxV^^dnmomP_sW9XEEv>n6>j&XW9R~1jx74X~YI+J6MHcBG`Irvoa_>X?{4b=n zrr(;__lEp`$>%5RnSB}Ij=0PcShWA~*z(O$JeJoFDBBHxV!xS?g^%6$e zSex)@AXX(JwUKhQy=tzv%pi=K22b9--rC5pjV~3+P#nZljpf!{iBU02?w_6Y`|)M zU#fV=+PBH*3cW*U1mxAwK2(~BK z!qqxZ#*J)v(<*_9PAvrAr5NY$4BGx9fLYUk=v+Tfj35=%y7o!nw1>&Bx;xqD2^x*4 zS^|KR%htr|oNiR{ua9--EtZGJ=WjHj?pcrI^{_`bb=2sY6TX)Bjld+9`_Pd~k=4AW zi_x*hHJZ5Wis3HKVSL3x=taId|z$J zF#xm9f zLiDOkb4~kVI+nv>5g(%jY2@S6AO>TbIsy}F;#VihqT=G~M?sN~WAoEVpKRk?_M2U$ zcb#Vr+0Ql&fCMNHLJH2d6b>sRPdg?By8+m6({^kyX8EeSl~ZucmfUVm|9U52lk*_P z#L1daZ7*T+1M87@{bUko(kmky4Tqh)QNt`wk4J-fLE#`d7*d{iXLB;+31QT$xFc5c@DK>c{fMH=Mf zUI$x_`h5eGD~J7shCGppZquWz?SW6F!g`C#lXKC^xzcM#we}L-8=j$?7XTy~>Q%_P zGY-Oa_>uFo5UMh^;Qs@Ik3pld84|I4;Z=OAL$flP6Zf8EU8EI2>QpL6c5Y)>2$yvV-m&<(W&TzMIs*BHn0%z|`T0hu63-JM#yEJD zTQpFph(>I|t#DXB`eGT7Xc4M@5lNOv?u#g;H`}9VS+l+Hsy18S8wZ;qv3rb713k_P z?HZ7K@zyDUQ#HOp`k&!@(Rs>W3_(C0yB8NtD~$fEpyL9=%|0q##-it`3GWGnb9s}~ zVE7`T>_h^Cx1jZdnDbQ(JN-)UmY)W6b-L8TfZOjfYqWZ-4Y*d9%Y$2bD*~Wl^Y7Wu zNQyv5vmdOUqhl_`I_G0|XZSM%c9wxn*^z2`*|!fx(cijk&nSUV%Q|#s}@FxEJ_x&FE2GC}MoENm(nHQ2; zX&5{=)6AgXpuO$p{WXbwAtzeSC_S237@hT8z%6bma!_&JHte)z5+zfX!tIL6mC;z= zL~Y-TJ3F+R4jkRLIdiy4=JUlhIUO=r!)DuSKhj{vw)+xH`G`qZk*CH!TOsvqD5;}u zf~mQ*$22Cr`AV3_-G)9bEv+H30e(zuQQ1jF<0sxVDg=f$)jx+OFxz$_?kq7A{QG~@F_E9is#=0Up?%b z;9!_-Fx>gpqtZ~68BO-uEPSfkI{g-@Z74qdGxsggUSJa+oN|Xg!4^np-IWj z%4r5@&34=-uUpT;^Da~5gr95ZJ|WXLE8?q6Ugzlri^CUo9;KSqgO*>6#X>`_Di#A* zxxJr!wEA8sqEo0`|4u~*`_~xrP`uSIUQ^KhqOuvr8?AH%RYyG>?n(@6mB7J?6`1^5 zTLKw4VDw)0vn36E2rqzMf}M&55@1jnx<@_s_FdTj;8J@l)OlUOh6|29mxx3XPn2uu zSO`hJX~4iiA*mE*1`#;n<0 z?7O3jP0)(O0=K`(^!>Hg{uRI=@vGr>(hR^ZGiceGkX4(wp=LE+LM<3UvJO_jevS$# zby=U4$KdNXsM5vYW6(c}6d12|#?Zm52qz{_efkyj)rdx6OP8nkz4n^l_?rY?4f&wT zXPLvHczy9q%c|+P7<7wYM}75&MZz!5>s;0k>Hwa$n(Bl1m>!brfPzITwPPWFTQDJM z+*c3VpuyBJ;qa#@@2&NX_=UEL13P6IAFx*+XDCN^FxJzv+`;00Y>~$57>VKpcbh?h ze-s(FuSJ#Nf~q=S+MYgl7Li=T?@6XP*0a#9H%9lpoZ7`xu2X#7lQ_Csw&`1}9utD! z+lSo(bK06k*J^Od#nyc@lamQC*i0HfyzCuEE-kj%2j}PKU!>SdjI:mM1Y&UNEf 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�bJCuJ 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%0A7csnPcCl4f-A27L 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 UECraek`O zm)D)MXP$ZX-ZKQtN{b@E;=qD{fFOvA3Cn?i!1I8BKpVb-0=`jJ&@2Q2fh{l*5|R}c z5+ahdwK6m@Hvj<<3yw>GmX+Vb>}_+i;)0>`wtr{!3Ec-o?j4dy6k--?jKDh>V&tUR zsBR2pIBF7YAthmS^*EBE{2*PC3SEsT5djq}xU8%*dPct`kMreZC&Ll6odL0tg|Ty&)mIL33#x8>3LrH<4tMHJ&U92|7CA$Z(NN4ryl8ZU#CYX>qpG^Aq7pFX(+uU18ierwZ>3DM`Ql7!2 z{dnzR$SYppiHg}phnQl(XT;@|9u->h z#|~`s()P$@%tczvV}j?6RR1!(W`1Oj)3o}7I;fsB3$L6UZs7hJX95~UKbB#=_y{Tm zwD?&=|8k78t6`A771Zs!kwb(So=)L-t1((|s8^sm`I7?31B%}eXN|0@SaNY}WH7da ze!?`vj<$q$l@$X78RjMayp5zNrop!OR|J($cY9GKvnAh1DD z+!FyvBRoSO#CTRo1sy^xhopTh?su=$4-tzRj%N zSu@<@5D0;g_`e~Z4|@GhbTL|h3@2DrxX(1_6_rq7v}+E=p70S#OW&)r*S?*yOsrwA zdr&rfVLHp1OukHgL6w5sX3T||^l1p)>kQLv)uU2&D5jbQ9qf9qi&m~O`_BCJ6>=?# z8;lzvxA#L(=h|oMfVbQ!Nc6A?L2AJ??T0;Vt0NnYHV^eoJOpK*IJ&vlz)xx2p<0pK z;Jnbi5WS%Jy`O}mNQ_a6UupUofAWr!c|(dvT#a&s38p)Y1j;va)5zAv_w<2pe;AwS_pMMZ^ADM zl0Li-c$3Z08KpuWOCwKVC$}9x6h!-BT3}iup1eu5R_?0$KxmGMvoPhWdWL$4dhjAj zLy@h}nX?PHi;PQzyU#u7P3YN!f?uJeLtbUUegSkrLOwX`TSy_u+;>^;Dms|_>HR;5 zxODr6tcA>l#Dy4PxWyrpgOlgVRZbXwMUz1K+&VP*rT0s3YMqVdLo@ezPu$dJjktyZ zkpYB(>$tZ3F$JEFF$%SXtVKNX-T6uR^dE-hma<*N9fSdb!ym#+6muNk9aeA^TV@dy zx5_VfO); zOF2`-QPfH4$g9b>?paPA-OS!xokN}%?eMdbCNm8&5C0gt9f})z7(O3P9$ujxQ$udi z-v2ZLxk6`78$*Yv%2V;V?xJR>&b-Fm$UwKdwy?U<2vBiVsj0W5`{0chb#8tx#C+c(@bKb5_ptDQU;<-T@B;M~!>za_`2pvSAO_dRFjd4k-HQ(jcN^L`YCz_bq5X3(m-|S*F9mv zJs)~-Ip8>=)v_1rn|$x6ug?jB0_#MhMHBLxjlLN9@7OWmmqC zZP2eoGpGj z`-uvh2wQD_>iZZyldX{b^8?-Z&)t(

aJ)-h?A%E@VA4dF*rT#I?!;1Equ_dKpbm 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%0Ac0(x_f{znvis!RjRznjE%lwO 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

I^4k-Sr$!2PUQ#fua_}Sf4uJ=RrX;pDE;z=CyFK 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:mM1Y&UNEf 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 Vs^9s94@fcqfv2mV%Q~loCIHxj!UO;S From f75a637c9c930a28384d3ced28d92427e6439aad Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 14:21:08 +0100 Subject: [PATCH 105/265] add venv step --- .../docs/docs/cloud/cloud-cli-installation.md | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 86f12fa3c6d..76676637ca8 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -30,34 +30,52 @@ You can install the dbt Cloud CLI on the command line by using one of these meth -:::warning Use native packages or a virtual environment to avoid overriding dbt Core +:::info Use native packages or a virtual environment to avoid overriding dbt Core One of the benefits of the dbt Cloud CLI is that there is no need to manage Python environments. We provide this Python package for users who are using the dbt Cloud CLI in place of dbt Core for easy compatibility with existing environments. -Installing this package will override any dbt Core installation in the current Python environment. Avoid this by using the native install experience and configuring your PATH, or by creating a new virtual environment. - -To revert back to dbt Core, follow the install instructions for dbt Core. +It replaces dbt Core, but this change can be avoided by using the native install method and configuring your PATH or by creating a new virtual environment. To switch back to dbt Core, follow the dbt Core installation instructions. ::: -This tab is for users who already have a Python environment configured. +Before installing the dbt Cloud CLI, make sure you have Python installed and your virtual environment venv or pyenv . If you already have a Python environment configured, you can skip to the [pip installation step](#install-dbt-cloud-cli-in-pip). + +### Install a virtual environment + +We recommend using virtual environments (venv) to namespace pip modules. + +1. Create a new venv: + ```shell + python3 -m venv dbt-env + ``` + +2. Activate the virtual environment each time you create a shell window or session: + ```shell + source dbt-env/bin/activate # activate the environment for Mac and Linux OR + dbt-env\Scripts\activate # activate the environment for Windows + ``` + +3. Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: + ```shell + alias env_dbt='source /bin/activate' + ``` -1. Ensure you have Python installed and your local venv or pyenv activated. +### Install dbt Cloud CLI in pip -2. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: +1. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: ```bash dbt --version ``` -3. Run the following command to install the dbt Cloud CLI +2. Run the following command to install the dbt Cloud CLI: ```bash pip3 install dbt ``` 4. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core -5. Then reinstall dbt Core using the version from Step 2. +5. Reinstall dbt Core using the version from Step 2. ```bash pip3 uninstall dbt-core dbt From e21411c4a3d0ce5b39c994c7b8363b405f205d46 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 14:37:15 +0100 Subject: [PATCH 106/265] Update configure-cloud-cli.md add windows note --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 84b2bb7ca47..c45683daacb 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -26,7 +26,7 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt 1. Ensure you meet the prerequisites above. 2. Download your credentials from dbt Cloud by clicking on the **Try the dbt Cloud CLI** banner on the dbt Cloud homepage. -3. Follow the banner instructions and download the config file to `~/.dbt/dbt_cloud.yml`. The config file looks like: +3. Follow the banner instructions and download the config file to `~/.dbt/dbt_cloud.yml` ( Mac and Linux users) or `C:\Users\yourusername\.dbt\dbt_cloud.yml` (Windows users). The config file looks like this: ```yaml version: "1" From a31f454ca3fadaa4c8d010d75a9abf478f1a3ff1 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 15:08:06 +0100 Subject: [PATCH 107/265] Update website/docs/docs/cloud/about-cloud-develop-defer.md Co-authored-by: dave-connors-3 <73915542+dave-connors-3@users.noreply.github.com> --- website/docs/docs/cloud/about-cloud-develop-defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 77c92b8b32d..1c0b316f885 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -34,7 +34,7 @@ For example, if you were to start developing on a new branch with [nothing in yo One key difference between using `--defer` in the dbt Cloud CLI and the dbt Cloud IDE is that `--defer` is *automatically* enabled in the dbt Cloud CLI for all invocations, comparing with production artifacts. You can disable it with the `--no-defer` flag. -The dbt Cloud CLI offers additional flexibility by letting you choose the source environment for deferral artifacts. You can set a `defer-env-id key` in either your `dbt_project.yml` or `dbt_cloud.yml` file. +The dbt Cloud CLI offers additional flexibility by letting you choose the source environment for deferral artifacts. You can set a `defer-env-id` key in either your `dbt_project.yml` or `dbt_cloud.yml` file. If you do not provide a `defer-env-id` setting, the dbt Cloud CLI will use artifacts from your dbt Cloud environment marked 'Production'. From b696215443b24192c466b58bf9afbeca7a3ce943 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 15:49:26 +0100 Subject: [PATCH 108/265] Update configure-cloud-cli.md --- website/docs/docs/cloud/configure-cloud-cli.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 4b0e67ad4a2..c45683daacb 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -24,6 +24,7 @@ import CloudCLIFlag from '/snippets/_cloud-cli-flag.md'; Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt Cloud project. 1. Ensure you meet the prerequisites above. + 2. Download your credentials from dbt Cloud by clicking on the **Try the dbt Cloud CLI** banner on the dbt Cloud homepage. 3. Follow the banner instructions and download the config file to `~/.dbt/dbt_cloud.yml` ( Mac and Linux users) or `C:\Users\yourusername\.dbt\dbt_cloud.yml` (Windows users). The config file looks like this: @@ -41,10 +42,15 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt - project-id: "" account-host: "" api-key: "" + ``` 4. After downloading the config file, navigate to a dbt project in your terminal: + ```bash + cd ~/dbt-projects/jaffle_shop + ``` + 5. In your `dbt_project.yml` file, ensure you have or include a `dbt-cloud` section with a `project-id` field. The `project-id` field contains the dbt Cloud project ID you want to use. ```yaml From e3e453f53e7b9b54851d6a0bd058b7d128b2f133 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 15:50:23 +0100 Subject: [PATCH 109/265] Update cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index e5728bee464..5f8b161a8ce 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -83,7 +83,6 @@ We recommend using virtual environments (venv) to namespace pip modules. ``` - @@ -164,7 +163,6 @@ During the public preview period, we recommend updating before filing a bug repo - To update, run `pip install --upgrade dbt`. From 6037ce780df90ff6d26f78ed195712416a3a4fe0 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 19:05:46 +0100 Subject: [PATCH 110/265] update cli lang and add new page --- website/docs/docs/build/about-metricflow.md | 53 ++- .../docs/docs/build/build-metrics-intro.md | 22 +- website/docs/docs/build/derived-metrics.md | 2 +- website/docs/docs/build/dimensions.md | 27 +- website/docs/docs/build/measures.md | 9 + website/docs/docs/build/metricflow-cloud.md | 449 ++++++++++++++++++ .../{metricflow-cli.md => metricflow-core.md} | 62 +-- website/docs/docs/build/sl-getting-started.md | 12 +- .../use-dbt-semantic-layer/quickstart-sl.md | 8 +- website/sidebars.js | 5 +- website/snippets/_sl-create-semanticmodel.md | 2 +- website/snippets/_sl-install-metricflow.md | 13 +- website/snippets/_sl-install-mf-cloud.md | 7 + website/snippets/_sl-partner-links.md | 9 +- .../snippets/_sl-test-and-query-metrics.md | 52 +- website/snippets/_v2-sl-prerequisites.md | 5 +- 16 files changed, 636 insertions(+), 101 deletions(-) create mode 100644 website/docs/docs/build/metricflow-cloud.md rename website/docs/docs/build/{metricflow-cli.md => metricflow-core.md} (88%) create mode 100644 website/snippets/_sl-install-mf-cloud.md diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 68879911597..9851a6ff581 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -6,36 +6,55 @@ sidebar_label: About MetricFlow tags: [Metrics, Semantic Layer] --- -This guide introduces MetricFlow's fundamental ideas for new users. MetricFlow, which powers the dbt Semantic Layer, helps you define and manage the logic for your company's metrics. It's an opinionated set of abstractions and helps data consumers retrieve metric datasets from a data platform quickly and efficiently. +This guide introduces MetricFlow's fundamental ideas for new users. MetricFlow, which powers the dbt Semantic Layer, helps you define and manage the logic for your company's metrics. It's an opinionated set of abstractions and helps data consumers retrieve metric datasets from a data platform quickly and efficiently. -:::info +MetricFlow handles SQL query construction and defines the specification for dbt semantic models and metrics, whether in dbt Cloud or dbt Core: -MetricFlow is a new way to define metrics and one of the key components of the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl). It handles SQL query construction and defines the specification for dbt semantic models and metrics. +- For dbt Cloud users: + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + +- For dbt Core users: + - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). -MetricFlow is currently available on dbt v1.6 or higher for all users. dbt Core users can use the MetricFlow CLI to define metrics in their local dbt Core project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. +Before you start, consider the following guidelines: -::: +- Define metrics in YAML and query them using these [new metric specifications](https://github.com/dbt-labs/dbt-core/discussions/7456). +- You must be on dbt v1.6 or higher to use MetricFlow. [Upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to get started. +- Use MetricFlow with Snowflake, BigQuery, Databricks, Postgres (dbt Core only), or Redshift. +- Unlock insights and query your metrics using the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and its diverse range of [available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations). You'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. -There are a few key principles: +## MetricFlow -- **Flexible, but complete** — Ability to create any metric on any data model by defining logic in flexible abstractions. -- **Don't Repeat Yourself (DRY)** — Avoid repetition by allowing metric definitions to be enabled whenever possible. -- **Simple with progressive complexity** — Make MetricFlow approachable by relying on known concepts and structures in data modeling. -- **Performant and efficient** — Allow for performance optimizations in centralized data engineering while still enabling distributed definition and ownership of logic. +MetricFlow is a SQL query generation tool designed to streamline metric creation across different data dimensions for diverse business needs. +- It operates through YAML files, where a semantic graph links language to data. This graph comprises [semantic models](/docs/build/semantic-models) (data entry points) and [metrics](/docs/build/metrics-overview) (functions for creating quantitative indicators). +- MetricFlow is a [BSL package](https://github.com/dbt-labs/metricflow) code is source available, and compatible with dbt v1.6 and higher. Data practitioners and enthusiasts are highly encouraged to contribute. +- As a part of the dbt Semantic Layer, MetricFlow empowers organizations to define metrics using YAML abstractions. +- To query metric dimensions, dimension values, and validate configurations, you can install MetricFlow in [dbt Cloud](/docs/build/metricflow-cloud) or [dbt Core](/docs/build/metricflow-core). -## MetricFlow +MetricFlow abides by these principles: + +- **Flexibility with completeness**: Define metric logic using flexible abstractions on any data model. +- **DRY (Don't Repeat Yourself)**: Minimize redundancy by enabling metric definitions whenever possible. +- **Simplicity with gradual complexity:** Approach MetricFlow using familiar data modeling concepts. +- **Performance and efficiency**: Optimize performance while supporting centralized data engineering and distributed logic ownership. -- MetricFlow is a SQL query generation engine that helps you create metrics by constructing appropriate queries for different granularities and dimensions that are useful for various business applications. + ### Semantic graph @@ -112,8 +131,6 @@ group by 1, 2 -> Introducing MetricFlow, a key component of the dbt Semantic Layer 🤩 - simplifying data collaboration and governance. - In the following three example tabs, use MetricFlow to define a semantic model that uses order_total as a metric and a sample schema to create consistent and accurate results — eliminating confusion, code duplication, and streamlining your workflow. diff --git a/website/docs/docs/build/build-metrics-intro.md b/website/docs/docs/build/build-metrics-intro.md index d32a396fc5a..e2170b011e7 100644 --- a/website/docs/docs/build/build-metrics-intro.md +++ b/website/docs/docs/build/build-metrics-intro.md @@ -7,22 +7,16 @@ tags: [Metrics, Semantic Layer, Governance] hide_table_of_contents: true --- -Use MetricFlow in dbt to centrally define your metrics. As a key component of the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl), MetricFlow is responsible for SQL query construction and defining specifications for dbt semantic models and metrics. +Use MetricFlow in dbt to centrally define your metrics. As a key component of the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl), MetricFlow is responsible for SQL query construction and defining specifications for dbt semantic models and metrics. It uses familiar constructs like semantic models and metrics to avoid duplicative coding, optimize your development workflow, ensure data governance for company metrics, and guarantee consistency for data consumers. -Use familiar constructs like semantic models and metrics to avoid duplicative coding, optimize your development workflow, ensure data governance for company metrics, and guarantee consistency for data consumers. - -:::info -MetricFlow is currently available on dbt v1.6 or higher and allows users to define metrics in their dbt project whether in dbt Cloud or dbt Core. [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. - -::: - -Before you start, consider the following guidelines: - -- Define metrics in YAML and query them using these [new metric specifications](https://github.com/dbt-labs/dbt-core/discussions/7456). -- You must be on dbt v1.6 or higher to use MetricFlow. [Upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to get started. -- Use MetricFlow with Snowflake, BigQuery, Databricks, Postgres (dbt Core only), or Redshift. -- Unlock insights and query your metrics using the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and its diverse range of [available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations). +MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: +- For dbt Cloud users: + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + +- For dbt Core users: + - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). +However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account.

diff --git a/website/docs/docs/build/derived-metrics.md b/website/docs/docs/build/derived-metrics.md index 2ad1c3e368c..ab0fc3cb800 100644 --- a/website/docs/docs/build/derived-metrics.md +++ b/website/docs/docs/build/derived-metrics.md @@ -124,7 +124,7 @@ You can query any granularity and offset window combination. The following examp alias: bookings_7_days_ago ``` -When you run the query `mf query --metrics d7_booking_change --group-by metric_time__month` for the metric, here's how it's calculated: +When you run the query `dbt sl query --metrics d7_booking_change --group-by metric_time__month` (dbt Core users can use the `mf query` prefix) for the metric, here's how it's calculated: 1. We retrieve the raw, unaggregated dataset with the specified measures and dimensions at the smallest level of detail, which is currently 'day'. 2. Then, we perform an offset join on the daily dataset, followed by performing a date trunc and aggregation to the requested granularity. diff --git a/website/docs/docs/build/dimensions.md b/website/docs/docs/build/dimensions.md index 49ae9045021..b5930481070 100644 --- a/website/docs/docs/build/dimensions.md +++ b/website/docs/docs/build/dimensions.md @@ -81,8 +81,10 @@ semantic_model: Dimensions have 2 types. This section further explains the definitions and provides examples. -1. [Categorical](#categorical) -1. [Time](#time) +- [Dimensions types](#dimensions-types) + - [Categorical](#categorical) + - [Time](#time) + - [SCD Type II](#scd-type-ii) ### Categorical @@ -102,15 +104,20 @@ dimensions: To use BigQuery as your data platform, time dimensions columns need to be in the datetime data type. If they are stored in another type, you can cast them to datetime using the `expr` property. Time dimensions are used to group metrics by different levels of time, such as day, week, month, quarter, and year. MetricFlow supports these granularities, which can be specified using the `time_granularity` parameter. ::: -Time has additional parameters specified under the `type_params` section. When you query one or more metrics in MetricFlow using the CLI, the default time dimension for a single metric is the primary time dimension, which you can refer to as `metric_time` or use the dimensions' name. +Time has additional parameters specified under the `type_params` section. When you query one or more metrics with MetricFlow, the default time dimension for a single metric is the primary time dimension, which you can refer to as `metric_time` or use the dimensions' name. You can use multiple time groups in separate metrics. For example, the `users_created` metric uses `created_at`, and the `users_deleted` metric uses `deleted_at`: ```bash -mf query --metrics users_created,users_deleted --dimensions metric_time --order metric_time +# dbt Cloud users +dbt sl query --metrics users_created,users_deleted --dimensions metric_time --order metric_time + +# dbt Core users +mf query --metrics users_created,users_deleted --dimensions metric_time --order metric_time ``` + You can set `is_partition` for time or categorical dimensions to define specific time spans. Additionally, use the `type_params` section to set `time_granularity` to adjust aggregation detail (like daily, weekly, and so on): @@ -121,9 +128,13 @@ Use `is_partition: True` to show that a dimension exists over a specific time wi You can also use `is_partition` for [categorical](#categorical) dimensions as well. -MetricFlow enables metric aggregation during query time. For example, you can aggregate the `messages_per_month` measure. If you originally had a `time_granularity` for the time dimensions `metric_time`, you can specify a yearly granularity for aggregation in your CLI query: +MetricFlow enables metric aggregation during query time. For example, you can aggregate the `messages_per_month` measure. If you originally had a `time_granularity` for the time dimensions `metric_time`, you can specify a yearly granularity for aggregation in your query: ```bash +# dbt Cloud users +dbt sl query --metrics messages_per_month --dimensions metric_time --order metric_time --time-granularity year + +# dbt Core users mf query --metrics messages_per_month --dimensions metric_time --order metric_time --time-granularity year ``` @@ -344,7 +355,11 @@ In the sales tier example, if sales_person_id 456 is Tier 2 from 2022-03-08 onwa The following command or code represents how to return the count of transactions generated by each sales tier per month: -``` +```bash +# dbt Cloud users +dbt sl query --metrics transactions --dimensions metric_time__month,sales_person__tier --order metric_time__month --order sales_person__tier + +# dbt Core users mf query --metrics transactions --dimensions metric_time__month,sales_person__tier --order metric_time__month --order sales_person__tier ``` diff --git a/website/docs/docs/build/measures.md b/website/docs/docs/build/measures.md index ba82a4aa4a5..84a11ef7199 100644 --- a/website/docs/docs/build/measures.md +++ b/website/docs/docs/build/measures.md @@ -234,6 +234,15 @@ metrics: We can query the semi-additive metrics using the following syntax: +**dbt Cloud users**: + +```bash +dbt sl query --metrics mrr_by_end_of_month --dimensions metric_time__month --order metric_time__month +dbt sl query --metrics mrr_by_end_of_month --dimensions metric_time__week --order metric_time__week +``` + +**dbt Core users**: + ```bash mf query --metrics mrr_by_end_of_month --dimensions metric_time__month --order metric_time__month mf query --metrics mrr_by_end_of_month --dimensions metric_time__week --order metric_time__week diff --git a/website/docs/docs/build/metricflow-cloud.md b/website/docs/docs/build/metricflow-cloud.md new file mode 100644 index 00000000000..dac656ddb63 --- /dev/null +++ b/website/docs/docs/build/metricflow-cloud.md @@ -0,0 +1,449 @@ +--- +title: MetricFlow dbt Cloud +id: metricflow-cloud +description: "Query metrics and metadata in your dbt project with the MetricFlow commands for dbt Cloud" +sidebar_label: "MetricFlow dbt Cloud" +tags: [Metrics, Semantic Layer] +--- + +Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow commands. + +MetricFlow allows you to define and query metrics in your dbt project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). To experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. + +## MetricFlow for the dbt Cloud CLI + +To install and run MetricFlow commands in the dbt Cloud CLI, you'll need to install it in your local environment. Install the MetricFlow from [PyPI](https://pypi.org/project/dbt-metricflow/) using `pip` on Windows or Linux operating systems: + +1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) +2. Create or activate your virtual environment.`python -m venv venv` +3. Run `pip install metricflow` + +The MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. + +A benefit to using the dbt Cloud CLI or dbt Cloud IDE is that you won't need to manage versioning — your dbt Cloud account will automatically manage the versioning for you. + +## MetricFlow for the dbt Cloud IDE + +:::info MetricFlow commands in IDE coming soon +You can create metrics using MetricFlow in the dbt Cloud IDE. However, support for running MetricFlow commands in the IDE will be available soon. +::: + +## MetricFlow commands + +MetricFlow provides the following commands to retrieve metadata and query metrics. Use the `dbt sl` prefix before the command name to execute them. For example, to list all metrics, run `dbt sl list metrics`. + +This is different to dbt Core [MetricFlow commands](/docs/build/metricflow-core), which use an `mf` prefix. + +- [`list`](#list) — Retrieves metadata values. +- [`list metrics`](#list-metrics) — Lists metrics with dimensions. +- [`list dimensions`](#list) — Lists unique dimensions for metrics. +- [`list dimension-values`](#list-dimension-values) — List dimensions with metrics. +- [`list entities`](#list-entities) — Lists all unique entities. +- [`validate-configs`](#validate-configs) — Validates semantic model configurations. +- [`health-checks`](#health-checks) — Performs data platform health check. +- [`tutorial`](#tutorial) — Dedicated MetricFlow tutorial to help get you started. +- [`query`](#query) — Query metrics and dimensions you want to see in the dbt Cloud IDE or dbt Cloud CLI. Refer to [query examples](#query-examples) to help you get started. + +### List + +This command retrieves metadata values related to [Metrics](/docs/build/metrics-overview), [Dimensions](/docs/build/dimensions), and [Entities](/docs/build/entities) values. + + +### List metrics + +```bash +dbt sl list +``` + +This command lists the metrics with their available dimensions: + +```bash +dbt sl list metrics + +Options: + --search TEXT Filter available metrics by this search term + --show-all-dimensions Show all dimensions associated with a metric. + --help Show this message and exit. +``` + +### List dimensions + +This command lists all unique dimensions for a metric or multiple metrics. It displays only common dimensions when querying multiple metrics: + +```bash +dbt sl list dimensions --metrics + +Options: + --metrics SEQUENCE List dimensions by given metrics (intersection). Ex. --metrics bookings,messages + --help Show this message and exit. +``` + +## List dimension-values + +This command lists all dimension values with the corresponding metric: + +```bash +dbt sl list dimension-values --metrics --dimension +Options: + --dimension TEXT Dimension to query values from [required] + --metrics SEQUENCE Metrics that are associated with the dimension + [required] + --end-time TEXT Optional iso8601 timestamp to constraint the end time of + the data (inclusive) + --start-time TEXT Optional iso8601 timestamp to constraint the start time + of the data (inclusive) + --help Show this message and exit. +``` + +### List entities + +This command lists all unique entities: + +```bash +dbt sl list entities --metrics +Options: + --metrics SEQUENCE List entities by given metrics (intersection). Ex. --metrics bookings,messages + --help Show this message and exit. +``` + +### Validate-configs + +This command performs validations against the defined semantic model configurations: + +```bash +dbt sl validate-configs +Options: + --dw-timeout INTEGER Optional timeout for data warehouse + validation steps. Default None. + --skip-dw If specified, skips the data warehouse + validations + --show-all If specified, prints warnings and future- + errors + --verbose-issues If specified, prints any extra details + issues might have + --semantic-validation-workers INTEGER + Optional. Uses the number of workers + specified to run the semantic validations. + Should only be used for exceptionally large + configs + --help Show this message and exit. +``` + +### Health checks + +This command performs a health check against the data platform you provided in the configs: + +```bash +dbt sl health-checks +``` + +### Tutorial + +Follow the dedicated MetricFlow tutorial to help you get started: + +```bash +dbt sl tutorial +``` + +### Query + +Create a new query with MetricFlow, execute that query against the user's data platform, and return the result: + +```bash +dbt sl query --metrics --group-by + +Options: + + --metrics SEQUENCE Metrics to query for: syntax is --metrics bookings + or for multiple metrics --metrics bookings, messages. + + --group-by SEQUENCE Dimensions and/or entities to group by: syntax is + --group-by ds or for multiple group bys --group-by + ds, org. + + --end-time TEXT Optional iso8601 timestamp to constraint the end + time of the data (inclusive) + + --start-time TEXT Optional iso8601 timestamp to constraint the start + time of the data (inclusive) + + --where TEXT SQL-like where statement provided as a string. For + example: --where "revenue > 100". To add a dimension filter to + a where filter, you have to indicate that the filter item is part of your model. + Refer to the [FAQ](#faqs) for more info on how to do this using a template wrapper. + + --limit TEXT Limit the number of rows out using an int or leave + blank for no limit. For example: --limit 100 + + --order SEQUENCE Metrics or group bys to order by ("-" prefix for + DESC). For example: --order -ds or --order + ds,-revenue + + --csv FILENAME Provide filepath for data frame output to csv + + --explain In the query output, show the query that was + executed against the data warehouse + + --show-dataflow-plan Display dataflow plan in explain output + + --display-plans Display plans (such as metric dataflow) in the browser + + --decimals INTEGER Choose the number of decimal places to round for + the numerical values + + --show-sql-descriptions Shows inline descriptions of nodes in displayed SQL + + --help Show this message and exit. + ``` + + +### Query examples + +The following tabs present various different types of query examples that you can use to query metrics and dimensions. Select the tab that best suits your needs: + + + + + +Use the example to query metrics by dimension and return the `order_total` metric by `metric_time.` + +**Query** +```bash +dbt sl query --metrics order_total --group-by metric_time +``` + +**Result** +```bash +✔ Success 🦄 - query completed after 1.24 seconds +| METRIC_TIME | ORDER_TOTAL | +|:--------------|---------------:| +| 2017-06-16 | 792.17 | +| 2017-06-17 | 458.35 | +| 2017-06-18 | 490.69 | +| 2017-06-19 | 749.09 | +| 2017-06-20 | 712.51 | +| 2017-06-21 | 541.65 | +``` + + + + +You can include multiple dimensions in a query. For example, you can group by the `is_food_order` dimension to confirm if orders were for food or not. + +**Query** +```bash +dbt sl query --metrics order_total --group-by metric_time, is_food_order +``` + +**Result** +```bash + Success 🦄 - query completed after 1.70 seconds +| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | +|:--------------|:----------------|---------------:| +| 2017-06-16 | True | 499.27 | +| 2017-06-16 | False | 292.90 | +| 2017-06-17 | True | 431.24 | +| 2017-06-17 | False | 27.11 | +| 2017-06-18 | True | 466.45 | +| 2017-06-18 | False | 24.24 | +| 2017-06-19 | False | 300.98 | +| 2017-06-19 | True | 448.11 | +``` + + + + + + +You can add order and limit functions to filter and present the data in a readable format. The following query limits the data set to 10 records and orders them by `metric_time`, descending. + +**Query** +```bash +dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time +``` + +**Result** +```bash +✔ Success 🦄 - query completed after 1.41 seconds +| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | +|:--------------|:----------------|---------------:| +| 2017-08-31 | True | 459.90 | +| 2017-08-31 | False | 327.08 | +| 2017-08-30 | False | 348.90 | +| 2017-08-30 | True | 448.18 | +| 2017-08-29 | True | 479.94 | +| 2017-08-29 | False | 333.65 | +| 2017-08-28 | False | 334.73 | +``` + + + + +You can further filter the data set by adding a `where` clause to your query. + +**Query** + +```bash +dbt sl query --metrics order_total --group-by metric_time --where "{{ Dimension('order_id__is_food_order') }} = True" +``` + +**Result** +```bash + ✔ Success 🦄 - query completed after 1.06 seconds +| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | +|:--------------|:----------------|---------------:| +| 2017-08-31 | True | 459.90 | +| 2017-08-30 | True | 448.18 | +| 2017-08-29 | True | 479.94 | +| 2017-08-28 | True | 513.48 | +| 2017-08-27 | True | 568.92 | +| 2017-08-26 | True | 471.95 | +| 2017-08-25 | True | 452.93 | +| 2017-08-24 | True | 384.40 | +| 2017-08-23 | True | 423.61 | +| 2017-08-22 | True | 401.91 | +``` + + + + + +To filter by time, there are dedicated start and end time options. Using these options to filter by time allows MetricFlow to further optimize query performance by pushing down the where filter when appropriate. + +**Query** +```bash +dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' +``` + + **Result** +```bash +✔ Success 🦄 - query completed after 1.53 seconds +| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | +|:--------------|:----------------|---------------:| +| 2017-08-27 | True | 568.92 | +| 2017-08-26 | True | 471.95 | +| 2017-08-25 | True | 452.93 | +| 2017-08-24 | True | 384.40 | +| 2017-08-23 | True | 423.61 | +| 2017-08-22 | True | 401.91 | +``` + + + + + + + +### Additional query examples + +The following tabs present additional query examples, like exporting to a CSV. Select the tab that best suits your needs: + + + + + + + +Add `--explain` to your query to view the SQL generated by MetricFlow. + +**Query** + +```bash +dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --explain +``` + + **Result** + ```bash + ✔ Success 🦄 - query completed after 0.28 seconds +🔎 SQL (remove --explain to see data or add --show-dataflow-plan to see the generated dataflow plan): +SELECT + metric_time + , is_food_order + , SUM(order_cost) AS order_total +FROM ( + SELECT + cast(ordered_at as date) AS metric_time + , is_food_order + , order_cost + FROM ANALYTICS.js_dbt_sl_demo.orders orders_src_1 + WHERE cast(ordered_at as date) BETWEEN CAST('2017-08-22' AS TIMESTAMP) AND CAST('2017-08-27' AS TIMESTAMP) +) subq_3 +WHERE is_food_order = True +GROUP BY + metric_time + , is_food_order +ORDER BY metric_time DESC +LIMIT 10 +``` + + + + + +Add the `--csv file_name.csv` flag to export the results of your query to a csv. + +**Query** + +```bash +dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --csv query_example.csv +``` + +**Result** +```bash +✔ Success 🦄 - query completed after 0.83 seconds +🖨 Successfully written query output to query_example.csv +``` + + + + +### Time granularity + +Optionally, you can specify the time granularity you want your data to be aggregated at by appending two underscores and the unit of granularity you want to `metric_time`, the global time dimension. You can group the granularity by: `day`, `week`, `month`, `quarter`, and `year`. + +Below is an example for querying metric data at a monthly grain: + +```bash +dbt sl query --metrics revenue --group-by metric_time__month +``` + +## FAQs + +
+How can I add a dimension filter to a where filter? + +To add a dimension filter to a where filter, you have to indicate that the filter item is part of your model and use a template wrapper: {{Dimension('primary_entity__dimension_name')}}. + +Here's an example query: dbt sl query --metrics order_total --group-by metric_time --where "{{Dimension('order_id__is_food_order')}} = True".

Before using the template wrapper, however, you will need to set up your terminal to escape curly braces for the filter template to work. + +
+How to set up your terminal to escape curly braces? + To configure your .zshrcprofile to escape curly braces, you can use the setopt command to enable the BRACECCL option. This option will cause the shell to treat curly braces as literals and prevent brace expansion. Refer to the following steps to set it up:
+ +1. Open your terminal. +2. Open your .zshrc file using a text editor like nano, vim, or any other text editor you prefer. You can use the following command to open it with nano: + +```bash +nano ~/.zshrc +``` +3. Add the following line to the file: + +```bash +setopt BRACECCL +``` +4. Save and exit the text editor (in `nano`, press Ctrl + O to save, and Ctrl + X to exit). + +5. Source your .zshrc file to apply the changes: + +```bash +source ~/.zshrc +``` + +6. After making these changes, your Zsh shell will treat curly braces as literal characters and will not perform brace expansion. This means that you can use curly braces without worrying about unintended expansions. + +Keep in mind that modifying your shell configuration files can have an impact on how your shell behaves. If you're not familiar with shell configuration, it's a good idea to make a backup of your .zshrc file before making any changes. If you encounter any issues or unexpected behavior, you can revert to the backup. + + +
+ +
diff --git a/website/docs/docs/build/metricflow-cli.md b/website/docs/docs/build/metricflow-core.md similarity index 88% rename from website/docs/docs/build/metricflow-cli.md rename to website/docs/docs/build/metricflow-core.md index 2653b922179..6f7ba5ceb39 100644 --- a/website/docs/docs/build/metricflow-cli.md +++ b/website/docs/docs/build/metricflow-core.md @@ -1,32 +1,31 @@ --- -title: MetricFlow CLI -id: metricflow-cli -description: "Query metrics and metadata in your dbt project with the metricflow cli" -sidebar_label: "MetricFlow CLI commands" +title: MetricFlow dbt Core +id: metricflow-core +description: "Query metrics and metadata in your dbt project with MetricFlow" +sidebar_label: "MetricFlow dbt Core" tags: [Metrics, Semantic Layer] --- -Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow command line (CLI). +Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow commands. -:::info -[dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. -::: -# Installation +MetricFlow allows you to define and query metrics in your dbt project in [dbt Core](/docs/core/about-core-setup). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. -You can install the [MetricFlow CLI](https://github.com/dbt-labs/metricflow#getting-started) from [PyPI](https://pypi.org/project/dbt-metricflow/). You need to use `pip` to install the MetricFlow CLI on Windows or Linux operating systems: +## Installation + +MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11 and you can install [MetricFlow](https://github.com/dbt-labs/metricflow#getting-started) from [PyPI](https://pypi.org/project/dbt-metricflow/). You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: 1. Create or activate your virtual environment.`python -m venv venv` 2. Run `pip install dbt-metricflow` + * You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` - * You can install MetricFlow using PyPI as an extension of your dbt adapter in the CLI. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` +**Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. -The MetricFlow CLI is compatible with Python versions 3.8, 3.9, 3.10 and 3.11 +## MetricFlow commands -# CLI commands +MetricFlow provides the following commands to retrieve metadata and query metrics. Use the `mf` prefix before the command name to execute them. For example, to list all metrics, run `mf list metrics`. -The MetricFlow CLI provides the following commands to retrieve metadata and query metrics. +This is different to dbt Cloud [MetricFlow commands](/docs/build/metricflow-cloud), which use an `dbt sl` prefix. -To execute the commands, use the `mf` prefix before the command name. For example, to list all metrics, run `mf list metrics`: - [`list`](#list) — Retrieves metadata values. - [`list metrics`](#list-metrics) — Lists metrics with dimensions. @@ -36,41 +35,43 @@ To execute the commands, use the `mf` prefix before the command name. For exampl - [`validate-configs`](#validate-configs) — Validates semantic model configurations. - [`health-checks`](#health-checks) — Performs data platform health check. - [`tutorial`](#tutorial) — Dedicated MetricFlow tutorial to help get you started. -- [`query`](#query) — Query metrics and dimensions you want to see in the CLI. Refer to [query examples](#query-examples) to help you get started. +- [`query`](#query) — Query metrics and dimensions you want to see in the command line interface. Refer to [query examples](#query-examples) to help you get started. -## List +### List This command retrieves metadata values related to [Metrics](/docs/build/metrics-overview), [Dimensions](/docs/build/dimensions), and [Entities](/docs/build/entities) values. -## List metrics +### List metrics ```bash mf list +``` This command lists the metrics with their available dimensions: ```bash mf list metrics + Options: --search TEXT Filter available metrics by this search term --show-all-dimensions Show all dimensions associated with a metric. --help Show this message and exit. ``` -## List dimensions +### List dimensions This command lists all unique dimensions for a metric or multiple metrics. It displays only common dimensions when querying multiple metrics: ```bash mf list dimensions --metrics + Options: - --metrics SEQUENCE List dimensions by given metrics (intersection). Ex. - --metrics bookings,messages + --metrics SEQUENCE List dimensions by given metrics (intersection). Ex. --metrics bookings,messages --help Show this message and exit. ``` -## List dimension-values +### List dimension-values This command lists all dimension values with the corresponding metric: @@ -86,19 +87,18 @@ Options: of the data (inclusive) --help Show this message and exit. ``` -## List entities +### List entities This command lists all unique entities: ```bash mf list entities --metrics Options: - --metrics SEQUENCE List entities by given metrics (intersection). Ex. - --metrics bookings,messages + --metrics SEQUENCE List entities by given metrics (intersection). Ex. --metrics bookings,messages --help Show this message and exit. ``` -## Validate-configs +### Validate-configs This command performs validations against the defined semantic model configurations: @@ -121,7 +121,7 @@ Options: --help Show this message and exit. ``` -## Health checks +### Health checks This command performs a health check against the data platform you provided in the configs: @@ -129,7 +129,7 @@ This command performs a health check against the data platform you provided in t mf health-checks ``` -## Tutorial +### Tutorial Follow the dedicated MetricFlow tutorial to help you get started: @@ -137,7 +137,7 @@ Follow the dedicated MetricFlow tutorial to help you get started: mf tutorial ``` -## Query +### Query Create a new query with MetricFlow, execute that query against the user's data platform, and return the result: @@ -189,7 +189,7 @@ Options: ``` -## Query examples +### Query examples The following tabs present various different types of query examples that you can use to query metrics and dimensions. Select the tab that best suits your needs: @@ -389,7 +389,7 @@ mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 -
-## Time granularity +### Time granularity Optionally, you can specify the time granularity you want your data to be aggregated at by appending two underscores and the unit of granularity you want to `metric_time`, the global time dimension. You can group the granularity by: `day`, `week`, `month`, `quarter`, and `year`. diff --git a/website/docs/docs/build/sl-getting-started.md b/website/docs/docs/build/sl-getting-started.md index 5ab730c88e0..1aa051c2058 100644 --- a/website/docs/docs/build/sl-getting-started.md +++ b/website/docs/docs/build/sl-getting-started.md @@ -16,7 +16,9 @@ import TestQuery from '/snippets/_sl-test-and-query-metrics.md'; import ConnectQueryAPI from '/snippets/_sl-connect-and-query-api.md'; import RunProdJob from '/snippets/_sl-run-prod-job.md'; -This getting started page presents a sample workflow to help you create your first metrics in dbt Cloud or command-line. It uses the [Jaffle shop example project](https://github.com/dbt-labs/jaffle-sl-template) as the project data source and is available for you to use. +This getting started page presents a sample workflow to help you create your first metrics in dbt Cloud or the command line interface (CLI). It uses the [Jaffle shop example project](https://github.com/dbt-labs/jaffle-sl-template) as the project data source and is available for you to use. + +This guide uses [MetricFlow dbt Cloud commands](/docs/build/metricflow-cloud). If you're using dbt Core, refer to [MetricFlow dbt Core](/docs/build/metricflow-core) for relevant commands. If you prefer, you can create semantic models and metrics for your own dbt project. This page will guide you on how to: @@ -27,8 +29,12 @@ If you prefer, you can create semantic models and metrics for your own dbt proje - [Set up dbt Semantic Layer](#set-up-dbt-semantic-layer) in dbt Cloud - [Connect to and query the API](#connect-and-query-api) with dbt Cloud - -MetricFlow allows users to define metrics in their dbt project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or command line. [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. +MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: +- For dbt Cloud users: + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + +- For dbt Core users: + - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md index 5214cc2285d..6c771d0f3ba 100644 --- a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md @@ -33,8 +33,12 @@ Use this guide to fully experience the power of the universal dbt Semantic Layer - [Set up dbt Semantic Layer](#setup) in dbt Cloud - [Connect and query API](#connect-and-query-api) with dbt Cloud - -MetricFlow allows users to define metrics in their dbt project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or command line. [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or dbt Core users can use the [MetricFlow CLI](/docs/build/metricflow-cli) to define metrics in their local project. +MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: +- For dbt Cloud users: + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + +- For dbt Core users: + - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/sidebars.js b/website/sidebars.js index e39edbc6201..86af63e4e6e 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -266,7 +266,8 @@ const sidebarSettings = { "docs/build/join-logic", "docs/build/validation", "docs/build/metricflow-time-spine", - "docs/build/metricflow-cli", + "docs/build/metricflow-cloud", + "docs/build/metricflow-core", ] }, { @@ -417,7 +418,7 @@ const sidebarSettings = { link: { type: "doc", id: "docs/use-dbt-semantic-layer/avail-sl-integrations" }, items: [ "docs/use-dbt-semantic-layer/avail-sl-integrations", - "docs/use-dbt-semantic-layer/gsheets", + //"docs/use-dbt-semantic-layer/gsheets", "docs/use-dbt-semantic-layer/tableau", ], }, diff --git a/website/snippets/_sl-create-semanticmodel.md b/website/snippets/_sl-create-semanticmodel.md index bc4276efcb6..a418258a336 100644 --- a/website/snippets/_sl-create-semanticmodel.md +++ b/website/snippets/_sl-create-semanticmodel.md @@ -1,4 +1,4 @@ -The following steps will walk you through setting up semantic models, which you can do with the dbt Cloud IDE or the CLI. Semantic models consist of [entities](/docs/build/entities), [dimensions](/docs/build/dimensions), and [measures](/docs/build/measures). +The following steps will walk you through setting up semantic models. Semantic models consist of [entities](/docs/build/entities), [dimensions](/docs/build/dimensions), and [measures](/docs/build/measures). We highly recommend you read the overview of what a [semantic model](/docs/build/semantic-models) is before getting started. If you're working in the [Jaffle shop example](https://github.com/dbt-labs/jaffle-sl-template), delete the `orders.yml` config or delete the .yml extension so it's ignored during parsing. **We'll be rebuilding it step by step in this example.** diff --git a/website/snippets/_sl-install-metricflow.md b/website/snippets/_sl-install-metricflow.md index 73e60d34e85..ab25e15c62d 100644 --- a/website/snippets/_sl-install-metricflow.md +++ b/website/snippets/_sl-install-metricflow.md @@ -1,8 +1,9 @@ -Install the [MetricFlow CLI](/docs/build/metricflow-cli) as an extension of a dbt adapter from PyPI. The MetricFlow CLI is compatible with Python versions 3.8, 3.9, 3.10 and 3.11 +This step is for dbt Core users only. -Use pip install `metricflow` and your [dbt adapter](/docs/supported-data-platforms): +Install [MetricFlow dbt Core](/docs/build/metricflow-core) as an extension of a dbt adapter from PyPI. The MetricFlow CLI is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: -- Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` -- Run `pip install "dbt-metricflow[your_adapter_name]"` - - You must specify `[your_adapter_name]`. - - For example, run `pip install "dbt-metricflow[snowflake]"` if you use a Snowflake adapter. +1. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` +2. Run `pip install dbt-metricflow` + - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` + +**Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. diff --git a/website/snippets/_sl-install-mf-cloud.md b/website/snippets/_sl-install-mf-cloud.md new file mode 100644 index 00000000000..6ada6e8f3a5 --- /dev/null +++ b/website/snippets/_sl-install-mf-cloud.md @@ -0,0 +1,7 @@ +This step is for dbt Cloud CLI users only (dbt Cloud IDE support coming soon). + +dbt Cloud CLI users must install [MetricFlow dbt Cloud](/docs/build/metricflow-cloud) to run MetricFlow commands. It's compatible with Python versions 3.8, 3.9, 3.10 and 3.11: + +1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) +2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` +3. Run `pip install metricflow` diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index e9ace979447..c630c03c986 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -1,20 +1,19 @@ The following tools integrate with the dbt Semantic Layer: +
- - + icon="google-sheets-logo-icon"/>
+ + + + +### Install MetricFlow + +import InstallMFCloud from '/snippets/_sl-install-mf-cloud.md'; + + + +----------- + +### Query and commit your metrics + +MetricFlow needs a `semantic_manifest.json` in order to build a semantic graph. To generate a semantic_manifest.json artifact run `dbt parse`. This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. + +1. (dbt Cloud CLI users only) Make sure you have the MetricFlow installed and up to date. +2. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. +3. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` +4. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line. +5. Run `dbt sl validate-configs` to run validation on your semantic models and metrics. +6. Commit and merge the code changes that contain the metric definitions. + +To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. + + + + -Before you begin, you'll need to install the [MetricFlow CLI](/docs/build/metricflow-cli) package and make sure you run at least one model. ### Install MetricFlow import InstallMetricFlow from '/snippets/_sl-install-metricflow.md'; -### Query and commit your metrics using the CLI +---------- + +### Query and commit your metrics MetricFlow needs a `semantic_manifest.json` in order to build a semantic graph. To generate a semantic_manifest.json artifact run `dbt parse`. This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. -1. Make sure you have the MetricFlow CLI installed and up to date. +1. Make sure you have the MetricFlow dbt Core installed and up to date. 2. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. 3. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` -4. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the CLI. +4. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. 5. Run `mf validate-configs` to run validation on your semantic models and metrics. 6. Commit and merge the code changes that contain the metric definitions. To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. + + + + + diff --git a/website/snippets/_v2-sl-prerequisites.md b/website/snippets/_v2-sl-prerequisites.md index f365abc1dc7..e8911952642 100644 --- a/website/snippets/_v2-sl-prerequisites.md +++ b/website/snippets/_v2-sl-prerequisites.md @@ -7,9 +7,8 @@ - Create a successful run in the environment where you configure the Semantic Layer. - **Note:** Semantic Layer currently supports the Deployment environment for querying. (_development querying experience coming soon_) - Set up the [Semantic Layer API](/docs/dbt-cloud-apis/sl-api-overview) in the integrated tool to import metric definitions. - - **Note:** To access the API and query metrics in downstream tools, you must have a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. dbt Core or Developer accounts can define metrics with the [MetricFlow CLI](/docs/build/metricflow-cli) or [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) but won't be able to dynamically query them.
-- Understand [MetricFlow's](/docs/build/about-metricflow) key concepts, which powers the revamped dbt Semantic Layer. - + - **Note:** To access the API and query metrics in downstream tools, you must have a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. dbt Core or Developer accounts can define metrics but won't be able to dynamically query them.
+- Understand [MetricFlow's](/docs/build/about-metricflow) key concepts, which powers the revamped dbt Semantic Layer. From 83c38d664a9bdb25337740de4b57a747ce5a54e8 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 19:06:34 +0100 Subject: [PATCH 111/265] remove dot --- website/docs/docs/build/metricflow-cloud.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/metricflow-cloud.md b/website/docs/docs/build/metricflow-cloud.md index dac656ddb63..e008f6aa29d 100644 --- a/website/docs/docs/build/metricflow-cloud.md +++ b/website/docs/docs/build/metricflow-cloud.md @@ -15,7 +15,7 @@ MetricFlow allows you to define and query metrics in your dbt project in the [db To install and run MetricFlow commands in the dbt Cloud CLI, you'll need to install it in your local environment. Install the MetricFlow from [PyPI](https://pypi.org/project/dbt-metricflow/) using `pip` on Windows or Linux operating systems: 1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) -2. Create or activate your virtual environment.`python -m venv venv` +2. Create or activate your virtual environment `python -m venv venv` 3. Run `pip install metricflow` The MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. From 1e5061725980dc4be27a57afb8fbd43a18db021b Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 19:07:09 +0100 Subject: [PATCH 112/265] add callout --- website/docs/docs/build/metricflow-core.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/docs/docs/build/metricflow-core.md b/website/docs/docs/build/metricflow-core.md index 6f7ba5ceb39..0323e3ac0d0 100644 --- a/website/docs/docs/build/metricflow-core.md +++ b/website/docs/docs/build/metricflow-core.md @@ -8,7 +8,9 @@ tags: [Metrics, Semantic Layer] Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow commands. +:::info MetricFlow allows you to define and query metrics in your dbt project in [dbt Core](/docs/core/about-core-setup). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. +::: ## Installation From 9b76ed4751e033eb01b2c906945907d52078959a Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 19:30:12 +0100 Subject: [PATCH 113/265] conslidate --- website/docs/docs/build/about-metricflow.md | 2 +- .../docs/docs/build/build-metrics-intro.md | 2 +- website/docs/docs/build/sl-getting-started.md | 2 +- website/docs/docs/build/validation.md | 7 +++-- .../semantic-layer-2-setup.md | 4 +-- website/snippets/_sl-install-metricflow.md | 17 ++++++++--- website/snippets/_sl-install-mf-cloud.md | 9 ++++++ .../snippets/_sl-test-and-query-metrics.md | 29 ------------------- 8 files changed, 31 insertions(+), 41 deletions(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 9851a6ff581..1a85650235a 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -14,7 +14,7 @@ MetricFlow handles SQL query construction and defines the specification for dbt - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). - For dbt Core users: - - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). + - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-core). Before you start, consider the following guidelines: diff --git a/website/docs/docs/build/build-metrics-intro.md b/website/docs/docs/build/build-metrics-intro.md index e2170b011e7..d3f3b23707f 100644 --- a/website/docs/docs/build/build-metrics-intro.md +++ b/website/docs/docs/build/build-metrics-intro.md @@ -14,7 +14,7 @@ MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). - For dbt Core users: - - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). + - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-core). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/docs/docs/build/sl-getting-started.md b/website/docs/docs/build/sl-getting-started.md index 1aa051c2058..b2ac8aae570 100644 --- a/website/docs/docs/build/sl-getting-started.md +++ b/website/docs/docs/build/sl-getting-started.md @@ -34,7 +34,7 @@ MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). - For dbt Core users: - - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). + - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-core). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/docs/docs/build/validation.md b/website/docs/docs/build/validation.md index ad485850d23..540dbf7262c 100644 --- a/website/docs/docs/build/validation.md +++ b/website/docs/docs/build/validation.md @@ -14,14 +14,15 @@ The code that handles validation [can be found here](https://github.com/dbt-labs ## Prerequisites -- You have installed the [MetricFlow CLI package](https://github.com/dbt-labs/metricflow) +- You have installed [MetricFlow](https://github.com/dbt-labs/metricflow) ## Validations command -You can run validations from the CLI with the following [MetricFlow commands](/docs/build/metricflow-cli): +You can run validations from dbt Cloud or the command line with the following [MetricFlow commands](/docs/build/metricflow-cloud): ```bash -mf validate-configs +dbt sl validate-configs # dbt Cloud users +mf validate-configs # dbt Core users ``` ## Parsing diff --git a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md index 34c0e813725..5310db15e23 100644 --- a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md +++ b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md @@ -13,7 +13,7 @@ git clone git@github.com:dbt-labs/jaffle-sl-template.git cd path/to/project ``` -Next before we start writing code, we'll need to install the MetricFlow CLI as an extension of a dbt adapter from PyPI. The MetricFlow CLI is compatible with Python versions 3.8 through 3.11. +Next before we start writing code, we'll need to install MetricFlow as an extension of a dbt adapter from PyPI (dbt Core users only). The MetricFlow is compatible with Python versions 3.8 through 3.11. We'll use pip to install MetricFlow and our dbt adapter: @@ -33,7 +33,7 @@ Lastly, to get to the pre-Semantic Layer starting state, checkout the `start-her git checkout start-here ``` -For more information you can [look at the docs](/docs/build/metricflow-cli) or checkout a [Quickstart](https://docs.getdbt.com/quickstarts) to get more familiar with setting up a dbt project. +For more information you can [look at the docs](/docs/build/metricflow-core) or checkout a [Quickstart](https://docs.getdbt.com/quickstarts) to get more familiar with setting up a dbt project. ## Basic commands diff --git a/website/snippets/_sl-install-metricflow.md b/website/snippets/_sl-install-metricflow.md index ab25e15c62d..bb1b416e9c9 100644 --- a/website/snippets/_sl-install-metricflow.md +++ b/website/snippets/_sl-install-metricflow.md @@ -1,9 +1,18 @@ This step is for dbt Core users only. -Install [MetricFlow dbt Core](/docs/build/metricflow-core) as an extension of a dbt adapter from PyPI. The MetricFlow CLI is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: +MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: -1. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` -2. Run `pip install dbt-metricflow` +1. Install [MetricFlow dbt Core](/docs/build/metricflow-core) as an extension of a dbt adapter from PyPI. +2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` +3. Run `pip install dbt-metricflow` - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` + - **Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. +4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. + - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. +5. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. +6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` +7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. +8. Run `mf validate-configs` to run validation on your semantic models and metrics. +9. Commit and merge the code changes that contain the metric definitions. -**Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. +To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. diff --git a/website/snippets/_sl-install-mf-cloud.md b/website/snippets/_sl-install-mf-cloud.md index 6ada6e8f3a5..cd56d346b44 100644 --- a/website/snippets/_sl-install-mf-cloud.md +++ b/website/snippets/_sl-install-mf-cloud.md @@ -5,3 +5,12 @@ dbt Cloud CLI users must install [MetricFlow dbt Cloud](/docs/build/metricflow-c 1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) 2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` 3. Run `pip install metricflow` +4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json` artifact. + - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. +5. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. +6. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` +7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line. +8. Run `dbt sl validate-configs` to run validation on your semantic models and metrics. +9. Commit and merge the code changes that contain the metric definitions. + +To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 33cc1e6bf38..5d0db2eaa20 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -13,51 +13,22 @@ You can use the **Preview** or **Compile** buttons in the IDE to run semantic va -### Install MetricFlow import InstallMFCloud from '/snippets/_sl-install-mf-cloud.md'; ------------ - -### Query and commit your metrics - -MetricFlow needs a `semantic_manifest.json` in order to build a semantic graph. To generate a semantic_manifest.json artifact run `dbt parse`. This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. - -1. (dbt Cloud CLI users only) Make sure you have the MetricFlow installed and up to date. -2. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. -3. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` -4. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line. -5. Run `dbt sl validate-configs` to run validation on your semantic models and metrics. -6. Commit and merge the code changes that contain the metric definitions. - -To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. -### Install MetricFlow import InstallMetricFlow from '/snippets/_sl-install-metricflow.md'; ----------- - -### Query and commit your metrics - -MetricFlow needs a `semantic_manifest.json` in order to build a semantic graph. To generate a semantic_manifest.json artifact run `dbt parse`. This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. - -1. Make sure you have the MetricFlow dbt Core installed and up to date. -2. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. -3. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` -4. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. -5. Run `mf validate-configs` to run validation on your semantic models and metrics. -6. Commit and merge the code changes that contain the metric definitions. -To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. From 2cce94ec4109528c8a5dc77f9f3211e45b2c9c6b Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 11 Oct 2023 19:45:31 +0100 Subject: [PATCH 114/265] Update cloud-cli-installation.md add space --- website/docs/docs/cloud/cloud-cli-installation.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 5f8b161a8ce..9c2f1a591eb 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -56,7 +56,8 @@ We recommend using virtual environments (venv) to namespace pip modules. ``` 3. Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: - ```shell + +```shell alias env_dbt='source /bin/activate' ``` From bd7dcdcdd19f1f4a6353e71e2a0efb3bea08d937 Mon Sep 17 00:00:00 2001 From: rpourzand Date: Wed, 11 Oct 2023 17:07:18 -0700 Subject: [PATCH 115/265] Update tableau.md Making some more updates to Tableau --- .../docs/use-dbt-semantic-layer/tableau.md | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index 4c791057955..be8315aeeef 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -21,38 +21,39 @@ The Tableau integration allows you to use worksheets to query the Semantic Layer ## Installing -1. Install this file () locally -2. Install this [JDBC driver](/docs/dbt-cloud-apis/sl-jdbc) to the folder based on your operating system +1. Install this file () locally and add it to your default folder + `Windows: C:\Users\\[Windows User]\Documents\My Tableau Repository\Connectors` + `Mac: /Users/[user]/Documents/My Tableau Repository/Connectors` +3. Install this [JDBC driver](/docs/dbt-cloud-apis/sl-jdbc) to the folder based on your operating system `Windows: C:\Program Files\Tableau\Drivers` `Mac: ~/Library/Tableau/Drivers` - `Linux: /opt/tableau/tableau_driver/jdbc` -3. Open Tableau Desktop and find in the lefthand side the "dbt Semantic Layer by dbt Labs" -4. Connect with your JDBC connection information that's provided to you in your dbt Cloud Semantic Layer configuration +4. Open Tableau Desktop and find the connector in the lefthand side called "dbt Semantic Layer by dbt Labs" +5. Connect with your Host, Environment Id, and Service Token information that's provided to you in your dbt Cloud Semantic Layer configuration ## Using the integration -Once you authenticate, navigate to the left hand side and choose the database "DBT_SEMANTIC_LAYER" to see a data source with all the metrics and dimensions configured in your Semantic Layer. +Once you authenticate, you'll be directed to the data source page with all the metrics and dimensions configured in your Semantic Layer. From there, you can go directly to a worksheet in the bottom left hand corner, and you'll find all the metrics and dimensions that are available to query on the left hand side of your window. -You can visit the Tableau documentation (link out) to learn more about how to use Tableau worksheets and dashboards. +You can visit the [Tableau documentation] (https://help.tableau.com/current/pro/desktop/en-us/gettingstarted_overview.htm) to learn more about how to use Tableau worksheets and dashboards. ## Things to note -1. You will notice that the aggregation type for all of your metrics is "SUM" and it cannot be changed. The dbt Semantic Layer controls aggregation type and it is deliberately immutable. Note that the underlying aggregation in the dbt Semantic Layer may not be "SUM". -2. We surface all metrics and dimensions from the dbt Semantic Layer in the left hand side, but it should be noted that not all of them can be combined with one another. You will recieve an error message if a particular dimension cannot be sliced with a metric (or vice versa) -3. Certain Table calculations like "Totals" and "Percent Of" may not be accurate when using metrics aggregated in a non-additive way (e.g., count distinct) +1. You will notice that the aggregation type for all of your metrics is "SUM" and it cannot be changed. The dbt Semantic Layer controls aggregation type and it is deliberately immutable. Note that the underlying aggregation in the dbt Semantic Layer may not be "SUM" (SUM is the default selection in Tableau) +2. We surface all metrics and dimensions from the dbt Semantic Layer in the left hand side, but it should be noted that not all of them can be combined with one another. You will recieve an error message if a particular dimension cannot be sliced with a metric (or vice versa). +3. Certain Table calculations like "Totals" and "Percent Of" may not be accurate when using metrics aggregated in a non-additive way (e.g., count distinct). T ## Unsupported functionality -Note that we may support this functionality in a future release +Note that we may support some of this functionality in a future release: 1. Updating the data source page -2. Using Extract Mode +2. Using "Extract" Mode 3. Unioning Tables 4. Writing Custom SQL 5. Table Extensions 6. Cross Database Joins 7. All functions in Analysis --> Create Calculated Field -8. Filters on Metric values +8. Filtering on a time dimension that has Date Part applied to it From 484a2fb8c19df1f7f75e5748e430def193c06ef5 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 12 Oct 2023 09:30:12 +0100 Subject: [PATCH 116/265] Update dbt-deps-auto-install.md --- .../release-notes/03-Oct-2023/dbt-deps-auto-install.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md index 0af27ca668c..da183714c4f 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md @@ -1,12 +1,12 @@ --- -title: "Enhancement: The dbt Cloud IDE auto-installs 'dbt deps' on startup" -description: "October 2023 :The dbt Cloud IDE auto-handles 'dbt deps' on startup; manual run needed for 'packages.yml' changes. Available for multi-tenant users (single-tenant support coming soon) and applies to all dbt versions." -sidebar_label: "Enhancement: IDE auto-installs 'dbt deps' on startup" +title: "Enhancement: dbt Cloud auto-installs 'dbt deps' on startup" +description: "October 2023 :The dbt Cloud IDE and dbt Cloud CLI auto-handles 'dbt deps' on startup; manual run needed for 'packages.yml' changes. Available for multi-tenant users (single-tenant support coming soon) and applies to all dbt versions." +sidebar_label: "Enhancement: dbt Cloud auto-installs 'dbt deps' on startup" tags: [Oct-2023, IDE] -date: 2023-10-11 +date: 2023-10-13 sidebar_position: 08 --- -The dbt Cloud IDE now automatically installs `dbt deps` when your environment starts or when necessary. Previously, it would prompt you to run `dbt deps` during initialization. However, you still need to run `dbt deps` if you modify your `packages.yml` file. +The dbt Cloud IDE and dbt Cloud CLI now automatically installs `dbt deps` when your environment starts or when necessary. Previously, it would prompt you to run `dbt deps` during initialization. However, you still need to run `dbt deps` if you modify your `packages.yml` or `dependencies.yml` file. This improved workflow is available to all multi-tenant dbt Cloud users (Single-tenant support coming next week) and applies to dbt versions. From d05be3d08c595295bf5be6060a003765eec7d169 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 11:51:36 +0100 Subject: [PATCH 117/265] update commands --- website/docs/docs/build/metricflow-cloud.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/build/metricflow-cloud.md b/website/docs/docs/build/metricflow-cloud.md index e008f6aa29d..681ca66dac5 100644 --- a/website/docs/docs/build/metricflow-cloud.md +++ b/website/docs/docs/build/metricflow-cloud.md @@ -37,12 +37,15 @@ This is different to dbt Core [MetricFlow commands](/docs/build/metricflow-core) - [`list`](#list) — Retrieves metadata values. - [`list metrics`](#list-metrics) — Lists metrics with dimensions. - [`list dimensions`](#list) — Lists unique dimensions for metrics. -- [`list dimension-values`](#list-dimension-values) — List dimensions with metrics. - [`list entities`](#list-entities) — Lists all unique entities. +- [`query`](#query) — Query metrics and dimensions you want to see in the dbt Cloud IDE or dbt Cloud CLI. Refer to [query examples](#query-examples) to help you get started. + + ### List From 4dc227cc60e832129fc4ccd1340049c30a9f53ff Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 11:55:20 +0100 Subject: [PATCH 118/265] update --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 76676637ca8..034a25a6532 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -55,7 +55,7 @@ We recommend using virtual environments (venv) to namespace pip modules. dbt-env\Scripts\activate # activate the environment for Windows ``` -3. Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: +3. (Mac and Linux only) Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: ```shell alias env_dbt='source /bin/activate' ``` From 9b0ac9dfc47a10089c859d8a3aa98372f0d44266 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 11:59:40 +0100 Subject: [PATCH 119/265] add --- website/docs/docs/cloud/cloud-cli-installation.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 034a25a6532..69d41563e65 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -68,7 +68,7 @@ We recommend using virtual environments (venv) to namespace pip modules. dbt --version ``` -2. Run the following command to install the dbt Cloud CLI: +2. Make sure you're in your virtual environment and run the following command to install the dbt Cloud CLI: ```bash pip3 install dbt @@ -165,7 +165,9 @@ During the public preview period, we recommend updating before filing a bug repo -To update, run `pip install --upgrade dbt`. +To update: +- Make sure you're in your virtual environment +- Run `pip install --upgrade dbt`. From ff42542fd20ccef4522de035a74c6eb8b7360d30 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:02:12 +0100 Subject: [PATCH 120/265] Update cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 72c4614b1dd..cc83c949dd8 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -58,7 +58,7 @@ We recommend using virtual environments (venv) to namespace pip modules. 3. (Mac and Linux only) Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: ```shell alias env_dbt='source /bin/activate' - ``` + ``` ### Install dbt Cloud CLI in pip @@ -74,8 +74,8 @@ We recommend using virtual environments (venv) to namespace pip modules. pip3 install dbt ``` -4. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core -5. Reinstall dbt Core using the version from Step 2. +3. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core +4. Reinstall dbt Core using the version from Step 2. ```bash pip3 uninstall dbt-core dbt From c84c760e4c2ad5e11ef721e00696a0bb7089aa0f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:09:34 +0100 Subject: [PATCH 121/265] Update cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index cc83c949dd8..c154ce142ad 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -177,12 +177,18 @@ To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. - + To update, follow the same process explained in [Windows](/docs/cloud/cloud-cli-installation?install=windows#install-dbt-cloud-cli) and replace the existing `dbt.exe` executable with the new one. + + +To update, follow the same process explained in [Windows](/docs/cloud/cloud-cli-installation?install=linux#install-dbt-cloud-cli) and replace the existing `dbt` executable with the new one. + + + From 176c37fe9a81912189a357fd479fd1ca618e905f Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 13:11:21 +0100 Subject: [PATCH 122/265] consolidate page --- website/docs/docs/build/about-metricflow.md | 6 +- .../docs/docs/build/build-metrics-intro.md | 4 +- ...icflow-cloud.md => metricflow-commands.md} | 157 +++++-- website/docs/docs/build/metricflow-core.md | 443 ------------------ website/docs/docs/build/sl-getting-started.md | 6 +- website/docs/docs/build/validation.md | 2 +- .../use-dbt-semantic-layer/quickstart-sl.md | 6 +- .../semantic-layer-2-setup.md | 2 +- website/sidebars.js | 3 +- website/snippets/_sl-install-metricflow.md | 2 +- website/snippets/_sl-install-mf-cloud.md | 2 +- website/snippets/_sl-plan-info.md | 2 +- .../snippets/_sl-test-and-query-metrics.md | 2 +- website/vercel.json | 5 + 14 files changed, 148 insertions(+), 494 deletions(-) rename website/docs/docs/build/{metricflow-cloud.md => metricflow-commands.md} (75%) delete mode 100644 website/docs/docs/build/metricflow-core.md diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 1a85650235a..77012d0b640 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -11,10 +11,10 @@ This guide introduces MetricFlow's fundamental ideas for new users. MetricFlow, MetricFlow handles SQL query construction and defines the specification for dbt semantic models and metrics, whether in dbt Cloud or dbt Core: - For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - For dbt Core users: - - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-core). + - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). Before you start, consider the following guidelines: @@ -29,7 +29,7 @@ MetricFlow is a SQL query generation tool designed to streamline metric creation - It operates through YAML files, where a semantic graph links language to data. This graph comprises [semantic models](/docs/build/semantic-models) (data entry points) and [metrics](/docs/build/metrics-overview) (functions for creating quantitative indicators). - MetricFlow is a [BSL package](https://github.com/dbt-labs/metricflow) code is source available, and compatible with dbt v1.6 and higher. Data practitioners and enthusiasts are highly encouraged to contribute. - As a part of the dbt Semantic Layer, MetricFlow empowers organizations to define metrics using YAML abstractions. -- To query metric dimensions, dimension values, and validate configurations, you can install MetricFlow in [dbt Cloud](/docs/build/metricflow-cloud) or [dbt Core](/docs/build/metricflow-core). +- To query metric dimensions, dimension values, and validate configurations, use [MetricFlow commands](/docs/build/metricflow-commands). MetricFlow abides by these principles: diff --git a/website/docs/docs/build/build-metrics-intro.md b/website/docs/docs/build/build-metrics-intro.md index d3f3b23707f..d0976c4b86b 100644 --- a/website/docs/docs/build/build-metrics-intro.md +++ b/website/docs/docs/build/build-metrics-intro.md @@ -11,10 +11,10 @@ Use MetricFlow in dbt to centrally define your metrics. As a key component of th MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: - For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - For dbt Core users: - - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-core). + - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/docs/docs/build/metricflow-cloud.md b/website/docs/docs/build/metricflow-commands.md similarity index 75% rename from website/docs/docs/build/metricflow-cloud.md rename to website/docs/docs/build/metricflow-commands.md index 681ca66dac5..5db38ff2ce4 100644 --- a/website/docs/docs/build/metricflow-cloud.md +++ b/website/docs/docs/build/metricflow-commands.md @@ -1,8 +1,8 @@ --- -title: MetricFlow dbt Cloud -id: metricflow-cloud -description: "Query metrics and metadata in your dbt project with the MetricFlow commands for dbt Cloud" -sidebar_label: "MetricFlow dbt Cloud" +title: MetricFlow commands +id: metricflow-commands +description: "Query metrics and metadata in your dbt project with the MetricFlow commands." +sidebar_label: "MetricFlow commands" tags: [Metrics, Semantic Layer] --- @@ -10,7 +10,14 @@ Once you define metrics in your dbt project, you can query metrics, dimensions, MetricFlow allows you to define and query metrics in your dbt project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). To experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. -## MetricFlow for the dbt Cloud CLI +MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. + + +## Install MetricFlow + + + + To install and run MetricFlow commands in the dbt Cloud CLI, you'll need to install it in your local environment. Install the MetricFlow from [PyPI](https://pypi.org/project/dbt-metricflow/) using `pip` on Windows or Linux operating systems: @@ -18,35 +25,77 @@ To install and run MetricFlow commands in the dbt Cloud CLI, you'll need to inst 2. Create or activate your virtual environment `python -m venv venv` 3. Run `pip install metricflow` -The MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. - A benefit to using the dbt Cloud CLI or dbt Cloud IDE is that you won't need to manage versioning — your dbt Cloud account will automatically manage the versioning for you. -## MetricFlow for the dbt Cloud IDE + -:::info MetricFlow commands in IDE coming soon -You can create metrics using MetricFlow in the dbt Cloud IDE. However, support for running MetricFlow commands in the IDE will be available soon. + + + +:::info Use dbt Cloud CLI for semantic layer development + +Use the dbt Cloud CLI for the experience in defining and querying metrics in your dbt project on dbt Cloud or dbt Core with MetricFlow. + +A benefit to using the dbt Cloud CLI or dbt Cloud IDE is that you won't need to manage versioning — your dbt Cloud account will automatically manage the versioning for you. ::: + +You can install [MetricFlow](https://github.com/dbt-labs/metricflow#getting-started) from [PyPI](https://pypi.org/project/dbt-metricflow/). You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: + +1. Create or activate your virtual environment`python -m venv venv` +2. Run `pip install dbt-metricflow` + * You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` + +**Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. + + + + + ## MetricFlow commands -MetricFlow provides the following commands to retrieve metadata and query metrics. Use the `dbt sl` prefix before the command name to execute them. For example, to list all metrics, run `dbt sl list metrics`. +:::info +You can create metrics using MetricFlow in the dbt Cloud IDE. However, support for running MetricFlow commands in the IDE will be available soon. +::: + +MetricFlow provides the following commands to retrieve metadata and query metrics. + + -This is different to dbt Core [MetricFlow commands](/docs/build/metricflow-core), which use an `mf` prefix. +Use the `dbt sl` prefix before the command name to execute them in dbt Cloud. For example, to list all metrics, run `dbt sl list metrics`. - [`list`](#list) — Retrieves metadata values. - [`list metrics`](#list-metrics) — Lists metrics with dimensions. - [`list dimensions`](#list) — Lists unique dimensions for metrics. -- [`list entities`](#list-entities) — Lists all unique entities. -- [`query`](#query) — Query metrics and dimensions you want to see in the dbt Cloud IDE or dbt Cloud CLI. Refer to [query examples](#query-examples) to help you get started. +- [`query`](#query) — Query metrics and dimensions you want to see in the command line interface. Refer to [query examples](#query-examples) to help you get started. - + + + + +Use the `mf` prefix before the command name to execute them in dbt Core. For example, to list all metrics, run `mf list metrics`. + +- [`list`](#list) — Retrieves metadata values. +- [`list metrics`](#list-metrics) — Lists metrics with dimensions. +- [`list dimensions`](#list) — Lists unique dimensions for metrics. +- [`list dimension-values`](#list-dimension-values) — List dimensions with metrics. +- [`list entities`](#list-entities) — Lists all unique entities. +- [`validate-configs`](#validate-configs) — Validates semantic model configurations. +- [`health-checks`](#health-checks) — Performs data platform health check. +- [`tutorial`](#tutorial) — Dedicated MetricFlow tutorial to help get you started. +- [`query`](#query) — Query metrics and dimensions you want to see in the command line interface. Refer to [query examples](#query-examples) to help you get started. + + + + ### List This command retrieves metadata values related to [Metrics](/docs/build/metrics-overview), [Dimensions](/docs/build/dimensions), and [Entities](/docs/build/entities) values. @@ -55,13 +104,15 @@ This command retrieves metadata values related to [Metrics](/docs/build/metrics- ### List metrics ```bash -dbt sl list +dbt sl list # In dbt Cloud +mf list # In dbt Core ``` - This command lists the metrics with their available dimensions: ```bash -dbt sl list metrics +dbt sl list metrics # In dbt Cloud + +mf list metrics # In dbt Core Options: --search TEXT Filter available metrics by this search term @@ -74,7 +125,9 @@ Options: This command lists all unique dimensions for a metric or multiple metrics. It displays only common dimensions when querying multiple metrics: ```bash -dbt sl list dimensions --metrics +dbt sl list dimensions --metrics # In dbt Cloud + +mf list dimensions --metrics # In dbt Core Options: --metrics SEQUENCE List dimensions by given metrics (intersection). Ex. --metrics bookings,messages @@ -86,7 +139,10 @@ Options: This command lists all dimension values with the corresponding metric: ```bash -dbt sl list dimension-values --metrics --dimension +dbt sl list dimension-values --metrics --dimension # In dbt Cloud + +mf list dimension-values --metrics --dimension # In dbt Core + Options: --dimension TEXT Dimension to query values from [required] --metrics SEQUENCE Metrics that are associated with the dimension @@ -103,7 +159,10 @@ Options: This command lists all unique entities: ```bash -dbt sl list entities --metrics +dbt sl list entities --metrics # In dbt Cloud + +mf list entities --metrics # In dbt Core + Options: --metrics SEQUENCE List entities by given metrics (intersection). Ex. --metrics bookings,messages --help Show this message and exit. @@ -114,7 +173,10 @@ Options: This command performs validations against the defined semantic model configurations: ```bash -dbt sl validate-configs +dbt sl validate-configs # In dbt Cloud + +mf validate-configs # In dbt Core + Options: --dw-timeout INTEGER Optional timeout for data warehouse validation steps. Default None. @@ -137,7 +199,9 @@ Options: This command performs a health check against the data platform you provided in the configs: ```bash -dbt sl health-checks +dbt sl health-checks #in dbt Cloud + +mf health-checks #in dbt Core ``` ### Tutorial @@ -145,7 +209,9 @@ dbt sl health-checks Follow the dedicated MetricFlow tutorial to help you get started: ```bash -dbt sl tutorial +dbt sl tutorial # In dbt Cloud + +mf tutorial # In dbt Core ``` ### Query @@ -153,7 +219,9 @@ dbt sl tutorial Create a new query with MetricFlow, execute that query against the user's data platform, and return the result: ```bash -dbt sl query --metrics --group-by +dbt sl query --metrics --group-by # In dbt Cloud + +mf query --metrics --group-by # In dbt Core Options: @@ -212,7 +280,9 @@ Use the example to query metrics by dimension and return the `order_total` metri **Query** ```bash -dbt sl query --metrics order_total --group-by metric_time +dbt sl query --metrics order_total --group-by metric_time # In dbt Cloud + +mf query --metrics order_total --group-by metric_time # In dbt Core ``` **Result** @@ -235,7 +305,9 @@ You can include multiple dimensions in a query. For example, you can group by th **Query** ```bash -dbt sl query --metrics order_total --group-by metric_time, is_food_order +dbt sl query --metrics order_total --group-by metric_time, is_food_order # In dbt Cloud + +mf query --metrics order_total --group-by metric_time, is_food_order # In dbt Core ``` **Result** @@ -262,7 +334,11 @@ You can add order and limit functions to filter and present the data in a readab **Query** ```bash -dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time +# In dbt Cloud +dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time + +# In dbt Core +mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time ``` **Result** @@ -287,7 +363,11 @@ You can further filter the data set by adding a `where` clause to your query. **Query** ```bash -dbt sl query --metrics order_total --group-by metric_time --where "{{ Dimension('order_id__is_food_order') }} = True" +# In dbt Cloud +dbt sl query --metrics order_total --group-by metric_time --where "{{ Dimension('order_id__is_food_order') }} = True" + +# In dbt Core +mf query --metrics order_total --group-by metric_time --where "{{ Dimension('order_id__is_food_order') }} = True" ``` **Result** @@ -315,7 +395,12 @@ To filter by time, there are dedicated start and end time options. Using these o **Query** ```bash -dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' + +# In dbt Cloud +dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' + +# In dbt Core +mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' ``` **Result** @@ -352,7 +437,11 @@ Add `--explain` to your query to view the SQL generated by MetricFlow. **Query** ```bash +# In dbt Cloud dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --explain + +# In dbt Core +mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --explain ``` **Result** @@ -388,7 +477,11 @@ Add the `--csv file_name.csv` flag to export the results of your query to a csv. **Query** ```bash +# In dbt Cloud dbt sl query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --csv query_example.csv + +# In dbt Core +mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --csv query_example.csv ``` **Result** @@ -407,7 +500,9 @@ Optionally, you can specify the time granularity you want your data to be aggreg Below is an example for querying metric data at a monthly grain: ```bash -dbt sl query --metrics revenue --group-by metric_time__month +dbt sl query --metrics revenue --group-by metric_time__month # In dbt Cloud + +mf query --metrics revenue --group-by metric_time__month # In dbt Core ``` ## FAQs diff --git a/website/docs/docs/build/metricflow-core.md b/website/docs/docs/build/metricflow-core.md deleted file mode 100644 index 0323e3ac0d0..00000000000 --- a/website/docs/docs/build/metricflow-core.md +++ /dev/null @@ -1,443 +0,0 @@ ---- -title: MetricFlow dbt Core -id: metricflow-core -description: "Query metrics and metadata in your dbt project with MetricFlow" -sidebar_label: "MetricFlow dbt Core" -tags: [Metrics, Semantic Layer] ---- - -Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow commands. - -:::info -MetricFlow allows you to define and query metrics in your dbt project in [dbt Core](/docs/core/about-core-setup). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. -::: - -## Installation - -MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11 and you can install [MetricFlow](https://github.com/dbt-labs/metricflow#getting-started) from [PyPI](https://pypi.org/project/dbt-metricflow/). You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: - -1. Create or activate your virtual environment.`python -m venv venv` -2. Run `pip install dbt-metricflow` - * You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` - -**Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. - -## MetricFlow commands - -MetricFlow provides the following commands to retrieve metadata and query metrics. Use the `mf` prefix before the command name to execute them. For example, to list all metrics, run `mf list metrics`. - -This is different to dbt Cloud [MetricFlow commands](/docs/build/metricflow-cloud), which use an `dbt sl` prefix. - - -- [`list`](#list) — Retrieves metadata values. -- [`list metrics`](#list-metrics) — Lists metrics with dimensions. -- [`list dimensions`](#list) — Lists unique dimensions for metrics. -- [`list dimension-values`](#list-dimension-values) — List dimensions with metrics. -- [`list entities`](#list-entities) — Lists all unique entities. -- [`validate-configs`](#validate-configs) — Validates semantic model configurations. -- [`health-checks`](#health-checks) — Performs data platform health check. -- [`tutorial`](#tutorial) — Dedicated MetricFlow tutorial to help get you started. -- [`query`](#query) — Query metrics and dimensions you want to see in the command line interface. Refer to [query examples](#query-examples) to help you get started. - -### List - -This command retrieves metadata values related to [Metrics](/docs/build/metrics-overview), [Dimensions](/docs/build/dimensions), and [Entities](/docs/build/entities) values. - - -### List metrics - -```bash -mf list -``` - -This command lists the metrics with their available dimensions: - -```bash -mf list metrics - -Options: - --search TEXT Filter available metrics by this search term - --show-all-dimensions Show all dimensions associated with a metric. - --help Show this message and exit. -``` - -### List dimensions - -This command lists all unique dimensions for a metric or multiple metrics. It displays only common dimensions when querying multiple metrics: - -```bash -mf list dimensions --metrics - -Options: - --metrics SEQUENCE List dimensions by given metrics (intersection). Ex. --metrics bookings,messages - --help Show this message and exit. -``` - -### List dimension-values - -This command lists all dimension values with the corresponding metric: - -```bash -mf list dimension-values --metrics --dimension -Options: - --dimension TEXT Dimension to query values from [required] - --metrics SEQUENCE Metrics that are associated with the dimension - [required] - --end-time TEXT Optional iso8601 timestamp to constraint the end time of - the data (inclusive) - --start-time TEXT Optional iso8601 timestamp to constraint the start time - of the data (inclusive) - --help Show this message and exit. -``` -### List entities - -This command lists all unique entities: - -```bash -mf list entities --metrics -Options: - --metrics SEQUENCE List entities by given metrics (intersection). Ex. --metrics bookings,messages - --help Show this message and exit. -``` - -### Validate-configs - -This command performs validations against the defined semantic model configurations: - -```bash -mf validate-configs -Options: - --dw-timeout INTEGER Optional timeout for data warehouse - validation steps. Default None. - --skip-dw If specified, skips the data warehouse - validations - --show-all If specified, prints warnings and future- - errors - --verbose-issues If specified, prints any extra details - issues might have - --semantic-validation-workers INTEGER - Optional. Uses the number of workers - specified to run the semantic validations. - Should only be used for exceptionally large - configs - --help Show this message and exit. -``` - -### Health checks - -This command performs a health check against the data platform you provided in the configs: - -```bash -mf health-checks -``` - -### Tutorial - -Follow the dedicated MetricFlow tutorial to help you get started: - -```bash -mf tutorial -``` - -### Query - -Create a new query with MetricFlow, execute that query against the user's data platform, and return the result: - -```bash -mf query --metrics --group-by - -Options: - - --metrics SEQUENCE Metrics to query for: syntax is --metrics bookings - or for multiple metrics --metrics bookings, messages. - - --group-by SEQUENCE Dimensions and/or entities to group by: syntax is - --group-by ds or for multiple group bys --group-by - ds, org. - - --end-time TEXT Optional iso8601 timestamp to constraint the end - time of the data (inclusive) - - --start-time TEXT Optional iso8601 timestamp to constraint the start - time of the data (inclusive) - - --where TEXT SQL-like where statement provided as a string. For - example: --where "revenue > 100". To add a dimension filter to - a where filter, you have to indicate that the filter item is part of your model. - Refer to the [FAQ](#faqs) for more info on how to do this using a template wrapper. - - --limit TEXT Limit the number of rows out using an int or leave - blank for no limit. For example: --limit 100 - - --order SEQUENCE Metrics or group bys to order by ("-" prefix for - DESC). For example: --order -ds or --order - ds,-revenue - - --csv FILENAME Provide filepath for data frame output to csv - - --explain In the query output, show the query that was - executed against the data warehouse - - --show-dataflow-plan Display dataflow plan in explain output - - --display-plans Display plans (such as metric dataflow) in the browser - - --decimals INTEGER Choose the number of decimal places to round for - the numerical values - - --show-sql-descriptions Shows inline descriptions of nodes in displayed SQL - - --help Show this message and exit. - ``` - - -### Query examples - -The following tabs present various different types of query examples that you can use to query metrics and dimensions. Select the tab that best suits your needs: - - - - - -Use the example to query metrics by dimension and return the `order_total` metric by `metric_time.` - -**Query** -```bash -mf query --metrics order_total --group-by metric_time -``` - -**Result** -```bash -✔ Success 🦄 - query completed after 1.24 seconds -| METRIC_TIME | ORDER_TOTAL | -|:--------------|---------------:| -| 2017-06-16 | 792.17 | -| 2017-06-17 | 458.35 | -| 2017-06-18 | 490.69 | -| 2017-06-19 | 749.09 | -| 2017-06-20 | 712.51 | -| 2017-06-21 | 541.65 | -``` - - - - -You can include multiple dimensions in a query. For example, you can group by the `is_food_order` dimension to confirm if orders were for food or not. - -**Query** -```bash -mf query --metrics order_total --group-by metric_time, is_food_order -``` - -**Result** -```bash - Success 🦄 - query completed after 1.70 seconds -| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | -|:--------------|:----------------|---------------:| -| 2017-06-16 | True | 499.27 | -| 2017-06-16 | False | 292.90 | -| 2017-06-17 | True | 431.24 | -| 2017-06-17 | False | 27.11 | -| 2017-06-18 | True | 466.45 | -| 2017-06-18 | False | 24.24 | -| 2017-06-19 | False | 300.98 | -| 2017-06-19 | True | 448.11 | -``` - - - - - - -You can add order and limit functions to filter and present the data in a readable format. The following query limits the data set to 10 records and orders them by `metric_time`, descending. - -**Query** -```bash -mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time -``` - -**Result** -```bash -✔ Success 🦄 - query completed after 1.41 seconds -| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | -|:--------------|:----------------|---------------:| -| 2017-08-31 | True | 459.90 | -| 2017-08-31 | False | 327.08 | -| 2017-08-30 | False | 348.90 | -| 2017-08-30 | True | 448.18 | -| 2017-08-29 | True | 479.94 | -| 2017-08-29 | False | 333.65 | -| 2017-08-28 | False | 334.73 | -``` - - - - -You can further filter the data set by adding a `where` clause to your query. - -**Query** - -```bash -mf query --metrics order_total --group-by metric_time --where "{{Dimension('order_id__is_food_order')}} = True" -``` - -**Result** -```bash - ✔ Success 🦄 - query completed after 1.06 seconds -| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | -|:--------------|:----------------|---------------:| -| 2017-08-31 | True | 459.90 | -| 2017-08-30 | True | 448.18 | -| 2017-08-29 | True | 479.94 | -| 2017-08-28 | True | 513.48 | -| 2017-08-27 | True | 568.92 | -| 2017-08-26 | True | 471.95 | -| 2017-08-25 | True | 452.93 | -| 2017-08-24 | True | 384.40 | -| 2017-08-23 | True | 423.61 | -| 2017-08-22 | True | 401.91 | -``` - - - - - -To filter by time, there are dedicated start and end time options. Using these options to filter by time allows MetricFlow to further optimize query performance by pushing down the where filter when appropriate. - -**Query** -```bash - mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' -``` - - **Result** -```bash -✔ Success 🦄 - query completed after 1.53 seconds -| METRIC_TIME | IS_FOOD_ORDER | ORDER_TOTAL | -|:--------------|:----------------|---------------:| -| 2017-08-27 | True | 568.92 | -| 2017-08-26 | True | 471.95 | -| 2017-08-25 | True | 452.93 | -| 2017-08-24 | True | 384.40 | -| 2017-08-23 | True | 423.61 | -| 2017-08-22 | True | 401.91 | -``` - - - - - - - -### Additional query examples - -The following tabs present additional query examples, like exporting to a CSV. Select the tab that best suits your needs: - - - - - - - -Add `--explain` to your query to view the SQL generated by MetricFlow. - -**Query** - -```bash - mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --explain -``` - - **Result** - ```bash - ✔ Success 🦄 - query completed after 0.28 seconds -🔎 SQL (remove --explain to see data or add --show-dataflow-plan to see the generated dataflow plan): -SELECT - metric_time - , is_food_order - , SUM(order_cost) AS order_total -FROM ( - SELECT - cast(ordered_at as date) AS metric_time - , is_food_order - , order_cost - FROM ANALYTICS.js_dbt_sl_demo.orders orders_src_1 - WHERE cast(ordered_at as date) BETWEEN CAST('2017-08-22' AS TIMESTAMP) AND CAST('2017-08-27' AS TIMESTAMP) -) subq_3 -WHERE is_food_order = True -GROUP BY - metric_time - , is_food_order -ORDER BY metric_time DESC -LIMIT 10 -``` - - - - - -Add the `--csv file_name.csv` flag to export the results of your query to a csv. - -**Query** - -```bash -mf query --metrics order_total --group-by metric_time,is_food_order --limit 10 --order -metric_time --where "is_food_order = True" --start-time '2017-08-22' --end-time '2017-08-27' --csv query_example.csv -``` - -**Result** -```bash -✔ Success 🦄 - query completed after 0.83 seconds -🖨 Successfully written query output to query_example.csv -``` - - - - -### Time granularity - -Optionally, you can specify the time granularity you want your data to be aggregated at by appending two underscores and the unit of granularity you want to `metric_time`, the global time dimension. You can group the granularity by: `day`, `week`, `month`, `quarter`, and `year`. - -Below is an example for querying metric data at a monthly grain: - -```bash -mf query --metrics revenue --group-by metric_time__month -``` - -## FAQs - -
-How can I add a dimension filter to a where filter? - -To add a dimension filter to a where filter, you have to indicate that the filter item is part of your model and use a template wrapper: {{Dimension('primary_entity__dimension_name')}}. - -Here's an example query: mf query --metrics order_total --group-by metric_time --where "{{Dimension('order_id__is_food_order')}} = True".

Before using the template wrapper, however, you will need to set up your terminal to escape curly braces for the filter template to work. - -
-How to set up your terminal to escape curly braces? - To configure your .zshrcprofile to escape curly braces, you can use the setopt command to enable the BRACECCL option. This option will cause the shell to treat curly braces as literals and prevent brace expansion. Refer to the following steps to set it up:
- -1. Open your terminal. -2. Open your .zshrc file using a text editor like nano, vim, or any other text editor you prefer. You can use the following command to open it with nano: - -```bash -nano ~/.zshrc -``` -3. Add the following line to the file: - -```bash -setopt BRACECCL -``` -4. Save and exit the text editor (in `nano`, press Ctrl + O to save, and Ctrl + X to exit). - -5. Source your .zshrc file to apply the changes: - -```bash -source ~/.zshrc -``` - -6. After making these changes, your Zsh shell will treat curly braces as literal characters and will not perform brace expansion. This means that you can use curly braces without worrying about unintended expansions. - -Keep in mind that modifying your shell configuration files can have an impact on how your shell behaves. If you're not familiar with shell configuration, it's a good idea to make a backup of your .zshrc file before making any changes. If you encounter any issues or unexpected behavior, you can revert to the backup. - - -
- -
diff --git a/website/docs/docs/build/sl-getting-started.md b/website/docs/docs/build/sl-getting-started.md index b2ac8aae570..16d355c01d6 100644 --- a/website/docs/docs/build/sl-getting-started.md +++ b/website/docs/docs/build/sl-getting-started.md @@ -18,8 +18,6 @@ import RunProdJob from '/snippets/_sl-run-prod-job.md'; This getting started page presents a sample workflow to help you create your first metrics in dbt Cloud or the command line interface (CLI). It uses the [Jaffle shop example project](https://github.com/dbt-labs/jaffle-sl-template) as the project data source and is available for you to use. -This guide uses [MetricFlow dbt Cloud commands](/docs/build/metricflow-cloud). If you're using dbt Core, refer to [MetricFlow dbt Core](/docs/build/metricflow-core) for relevant commands. - If you prefer, you can create semantic models and metrics for your own dbt project. This page will guide you on how to: - [Create a semantic model](#create-a-semantic-model) using MetricFlow @@ -31,10 +29,10 @@ If you prefer, you can create semantic models and metrics for your own dbt proje MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: - For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - For dbt Core users: - - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-core). + - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/docs/docs/build/validation.md b/website/docs/docs/build/validation.md index 540dbf7262c..adfbc9c7906 100644 --- a/website/docs/docs/build/validation.md +++ b/website/docs/docs/build/validation.md @@ -18,7 +18,7 @@ The code that handles validation [can be found here](https://github.com/dbt-labs ## Validations command -You can run validations from dbt Cloud or the command line with the following [MetricFlow commands](/docs/build/metricflow-cloud): +You can run validations from dbt Cloud or the command line with the following [MetricFlow commands](/docs/build/metricflow-commands): ```bash dbt sl validate-configs # dbt Cloud users diff --git a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md index 6c771d0f3ba..373c367e743 100644 --- a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md @@ -28,17 +28,17 @@ Use this guide to fully experience the power of the universal dbt Semantic Layer - [Create a semantic model](#create-a-semantic-model) in dbt Cloud using MetricFlow - [Define metrics](#define-metrics) in dbt Cloud using MetricFlow -- [Test and query metrics locally](#test-and-query-metrics) using MetricFlow +- [Test and query metrics locally](#test-and-query-metrics) with MetricFlow - [Run a production job](#run-a-production-job) in dbt Cloud - [Set up dbt Semantic Layer](#setup) in dbt Cloud - [Connect and query API](#connect-and-query-api) with dbt Cloud MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: - For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) using the commands in [MetricFlow dbt Cloud](/docs/build/metricflow-cloud). + - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - For dbt Core users: - - You can define metrics using commands in [MetricFlow dbt Core](/docs/build/metricflow-cli). + - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md index 5310db15e23..9674aa936e5 100644 --- a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md +++ b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md @@ -33,7 +33,7 @@ Lastly, to get to the pre-Semantic Layer starting state, checkout the `start-her git checkout start-here ``` -For more information you can [look at the docs](/docs/build/metricflow-core) or checkout a [Quickstart](https://docs.getdbt.com/quickstarts) to get more familiar with setting up a dbt project. +For more information you can [look at the docs](/docs/build/metricflow-commands) or checkout a [Quickstart](https://docs.getdbt.com/quickstarts) to get more familiar with setting up a dbt project. ## Basic commands diff --git a/website/sidebars.js b/website/sidebars.js index 3b03d810bc8..7a9bda48265 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -266,8 +266,7 @@ const sidebarSettings = { "docs/build/join-logic", "docs/build/validation", "docs/build/metricflow-time-spine", - "docs/build/metricflow-cloud", - "docs/build/metricflow-core", + "docs/build/metricflow-commands", ] }, { diff --git a/website/snippets/_sl-install-metricflow.md b/website/snippets/_sl-install-metricflow.md index bb1b416e9c9..1c2ebb5e121 100644 --- a/website/snippets/_sl-install-metricflow.md +++ b/website/snippets/_sl-install-metricflow.md @@ -2,7 +2,7 @@ This step is for dbt Core users only. MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: -1. Install [MetricFlow dbt Core](/docs/build/metricflow-core) as an extension of a dbt adapter from PyPI. +1. Install [MetricFlow](/docs/build/metricflow-commands) as an extension of a dbt adapter from PyPI. 2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` 3. Run `pip install dbt-metricflow` - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` diff --git a/website/snippets/_sl-install-mf-cloud.md b/website/snippets/_sl-install-mf-cloud.md index cd56d346b44..63d7cdab053 100644 --- a/website/snippets/_sl-install-mf-cloud.md +++ b/website/snippets/_sl-install-mf-cloud.md @@ -1,6 +1,6 @@ This step is for dbt Cloud CLI users only (dbt Cloud IDE support coming soon). -dbt Cloud CLI users must install [MetricFlow dbt Cloud](/docs/build/metricflow-cloud) to run MetricFlow commands. It's compatible with Python versions 3.8, 3.9, 3.10 and 3.11: +dbt Cloud CLI users must install [MetricFlow](/docs/build/metricflow-commands) to run MetricFlow commands. It's compatible with Python versions 3.8, 3.9, 3.10 and 3.11: 1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) 2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` diff --git a/website/snippets/_sl-plan-info.md b/website/snippets/_sl-plan-info.md index 26fb7df7ae5..083ab2209bc 100644 --- a/website/snippets/_sl-plan-info.md +++ b/website/snippets/_sl-plan-info.md @@ -1,2 +1,2 @@ -To define and query metrics with the {props.product}, you must be on a
{props.plan} multi-tenant plan .

The re-released dbt Semantic Layer is available on dbt v1.6 or higher. dbt Core users can use the MetricFlow CLI to define metrics in their local project, but won't be able to dynamically query them with integrated tools.

+To define and query metrics with the {props.product}, you must be on a {props.plan} multi-tenant plan .


diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 5d0db2eaa20..f0bbbe48866 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -2,7 +2,7 @@ This section will explain how you can test and run MetricFlow commands with dbt :::important Testing and querying metrics in the dbt Cloud IDE not yet supported -Support for running [MetricFlow commands](/docs/build/metricflow-cloud) in the dbt Cloud IDE is not available but is coming soon. +Support for running [MetricFlow commands](/docs/build/metricflow-commands) in the dbt Cloud IDE is not available but is coming soon. You can use the **Preview** or **Compile** buttons in the IDE to run semantic validations and make sure your metrics are defined. Alternatively, you can run commands with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) or with SQL client tools like DataGrip, DBeaver, or RazorSQL. diff --git a/website/vercel.json b/website/vercel.json index a9187933980..9de38da150c 100644 --- a/website/vercel.json +++ b/website/vercel.json @@ -2,6 +2,11 @@ "cleanUrls": true, "trailingSlash": false, "redirects": [ + { + "source": "/docs/build/metricflow-cli", + "destination": "/docs/build/metricflow-commands", + "permanent": true + }, { "source": "/faqs/models/reference-models-in-another-project", "destination": "/docs/collaborate/govern/project-dependencies", From ab6201b94d845e732cac3a322a4462960fe7b951 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 13:26:25 +0100 Subject: [PATCH 123/265] simplify text --- website/docs/docs/build/about-metricflow.md | 8 +------- website/docs/docs/build/build-metrics-intro.md | 15 +++++++-------- website/docs/docs/build/sl-getting-started.md | 7 +------ .../docs/use-dbt-semantic-layer/quickstart-sl.md | 7 +------ 4 files changed, 10 insertions(+), 27 deletions(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 77012d0b640..fddd543677d 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -8,13 +8,7 @@ tags: [Metrics, Semantic Layer] This guide introduces MetricFlow's fundamental ideas for new users. MetricFlow, which powers the dbt Semantic Layer, helps you define and manage the logic for your company's metrics. It's an opinionated set of abstractions and helps data consumers retrieve metric datasets from a data platform quickly and efficiently. -MetricFlow handles SQL query construction and defines the specification for dbt semantic models and metrics, whether in dbt Cloud or dbt Core: - -- For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - -- For dbt Core users: - - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). +MetricFlow handles SQL query construction and defines the specification for dbt semantic models and metrics. It allows you to define metrics in your dbt project and query them with [MetricFlow commands](/docs/build/metricflow-commands), whether in dbt Cloud or dbt Core. Before you start, consider the following guidelines: diff --git a/website/docs/docs/build/build-metrics-intro.md b/website/docs/docs/build/build-metrics-intro.md index d0976c4b86b..42ffb321d69 100644 --- a/website/docs/docs/build/build-metrics-intro.md +++ b/website/docs/docs/build/build-metrics-intro.md @@ -9,14 +9,13 @@ hide_table_of_contents: true Use MetricFlow in dbt to centrally define your metrics. As a key component of the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl), MetricFlow is responsible for SQL query construction and defining specifications for dbt semantic models and metrics. It uses familiar constructs like semantic models and metrics to avoid duplicative coding, optimize your development workflow, ensure data governance for company metrics, and guarantee consistency for data consumers. -MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: -- For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - -- For dbt Core users: - - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). - -However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. + +MetricFlow allows you to: +- Intuitively define metrics in your dbt project +- Develop from your preferred environment, whether that's the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation), [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud), or [dbt Core](/docs/core/installation) +- Use [MetricFlow commands](/docs/build/metricflow-commands) to query and test those metrics in your development environment +- Harness the true magic of the universal dbt Semantic Layer and dynamically query these metrics in downstream tools (Available for dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) accounts only). +
diff --git a/website/docs/docs/build/sl-getting-started.md b/website/docs/docs/build/sl-getting-started.md index 16d355c01d6..92fec5493c1 100644 --- a/website/docs/docs/build/sl-getting-started.md +++ b/website/docs/docs/build/sl-getting-started.md @@ -27,12 +27,7 @@ If you prefer, you can create semantic models and metrics for your own dbt proje - [Set up dbt Semantic Layer](#set-up-dbt-semantic-layer) in dbt Cloud - [Connect to and query the API](#connect-and-query-api) with dbt Cloud -MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: -- For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - -- For dbt Core users: - - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). +MetricFlow allows you to define metrics in your dbt project and query them whether in dbt Cloud or dbt Core with [MetricFlow commands](/docs/build/metricflow-commands). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. diff --git a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md index 373c367e743..55ff629b2e6 100644 --- a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md @@ -33,12 +33,7 @@ Use this guide to fully experience the power of the universal dbt Semantic Layer - [Set up dbt Semantic Layer](#setup) in dbt Cloud - [Connect and query API](#connect-and-query-api) with dbt Cloud -MetricFlow allows you to define metrics in your dbt project whether in dbt Cloud or dbt Core: -- For dbt Cloud users: - - Define metrics in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) and query them with [MetricFlow commands](/docs/build/metricflow-commands). - -- For dbt Core users: - - You can define metrics and query them using [MetricFlow commands](/docs/build/metricflow-commands). +MetricFlow allows you to define metrics in your dbt project and query them whether in dbt Cloud or dbt Core with [MetricFlow commands](/docs/build/metricflow-commands). However, to experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. From 1cd2c05d80acd4a8b9548bea2b2405e134886cae Mon Sep 17 00:00:00 2001 From: Greg McKeon Date: Thu, 12 Oct 2023 10:04:16 -0400 Subject: [PATCH 124/265] Update cloud-cli-installation.md Pip updates --- website/docs/docs/cloud/cloud-cli-installation.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index c154ce142ad..33f8dd4b88d 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -32,27 +32,27 @@ You can install the dbt Cloud CLI on the command line by using one of these meth :::info Use native packages or a virtual environment to avoid overriding dbt Core -One of the benefits of the dbt Cloud CLI is that there is no need to manage Python environments. We provide this Python package for users who are using the dbt Cloud CLI in place of dbt Core for easy compatibility with existing environments. +Installing the dbt Cloud CLI with pip replaces dbt Core, if it is installed. This change can be avoided by using the native install method and configuring your PATH or by installing with pip into a new virtual environment. -It replaces dbt Core, but this change can be avoided by using the native install method and configuring your PATH or by creating a new virtual environment. To switch back to dbt Core, follow the dbt Core installation instructions. +To switch back to dbt Core, follow the dbt Core installation instructions. ::: Before installing the dbt Cloud CLI, make sure you have Python installed and your virtual environment venv or pyenv . If you already have a Python environment configured, you can skip to the [pip installation step](#install-dbt-cloud-cli-in-pip). -### Install a virtual environment +### Create a virtual environment -We recommend using virtual environments (venv) to namespace pip modules. +We recommend using virtual environments (venv) to namespace the Cloud CLI. 1. Create a new venv: ```shell - python3 -m venv dbt-env + python3 -m venv dbt-cloud ``` 2. Activate the virtual environment each time you create a shell window or session: ```shell - source dbt-env/bin/activate # activate the environment for Mac and Linux OR - dbt-env\Scripts\activate # activate the environment for Windows + source dbt-cloud/bin/activate # activate the environment for Mac and Linux OR + dbt-cloud\Scripts\activate # activate the environment for Windows ``` 3. (Mac and Linux only) Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: From ccdc020035cfc8492dfaa2f49ae036b5d4f21171 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 15:22:03 +0100 Subject: [PATCH 125/265] add config files --- .../docs/docs/cloud/cloud-cli-installation.md | 46 +++++-------------- .../docs/docs/cloud/configure-cloud-cli.md | 19 ++++++-- 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index c154ce142ad..3623d736d51 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -32,50 +32,29 @@ You can install the dbt Cloud CLI on the command line by using one of these meth :::info Use native packages or a virtual environment to avoid overriding dbt Core -One of the benefits of the dbt Cloud CLI is that there is no need to manage Python environments. We provide this Python package for users who are using the dbt Cloud CLI in place of dbt Core for easy compatibility with existing environments. +Installing the dbt Cloud CLI with pip replaces dbt Core. This change can be avoided by using the native install method and configuring your PATH or by creating a new virtual environment. -It replaces dbt Core, but this change can be avoided by using the native install method and configuring your PATH or by creating a new virtual environment. To switch back to dbt Core, follow the dbt Core installation instructions. +Otherwise, to switch back to dbt Core, uninstall the Cloud CLI and follow the dbt Core installation instructions. ::: -Before installing the dbt Cloud CLI, make sure you have Python installed and your virtual environment venv or pyenv . If you already have a Python environment configured, you can skip to the [pip installation step](#install-dbt-cloud-cli-in-pip). +1. We recommend [installing virtual environments (venv)](/docs/core/pip-install#using-virtual-environments) to namespace "cloud-cli" + - Venv name should be: `python3 -m venv dbt-cloud` and session should be activated with `source dbt-cloud/bin/activate`. -### Install a virtual environment - -We recommend using virtual environments (venv) to namespace pip modules. - -1. Create a new venv: - ```shell - python3 -m venv dbt-env - ``` - -2. Activate the virtual environment each time you create a shell window or session: - ```shell - source dbt-env/bin/activate # activate the environment for Mac and Linux OR - dbt-env\Scripts\activate # activate the environment for Windows - ``` - -3. (Mac and Linux only) Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: - ```shell - alias env_dbt='source /bin/activate' - ``` - -### Install dbt Cloud CLI in pip - -1. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: +2. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: ```bash dbt --version ``` -2. Make sure you're in your virtual environment and run the following command to install the dbt Cloud CLI: +3. Make sure you're in your virtual environment and run the following command to install the dbt Cloud CLI: ```bash pip3 install dbt ``` -3. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core -4. Reinstall dbt Core using the version from Step 2. +4. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core +5. Reinstall dbt Core using the version from Step 2. ```bash pip3 uninstall dbt-core dbt @@ -173,7 +152,7 @@ To update: -To update the dbt Cloud CLI, run `brew upgrade dbt-cloud-cli`. +To update the dbt Cloud CLI, run `brew upgrade dbt`. (You can also use `brew install dbt`). @@ -194,12 +173,9 @@ To update, follow the same process explained in [Windows](/docs/cloud/cloud-cli- ## Next steps -After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. For example, you can execute the following commands to compile a project using dbt Cloud: - - ```bash - dbt compile - ``` +After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. +For example, you can execute `dbt compile` to compile a project using dbt Cloud. ## FAQs
diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index c45683daacb..108fe31abb6 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -25,8 +25,19 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt 1. Ensure you meet the prerequisites above. -2. Download your credentials from dbt Cloud by clicking on the **Try the dbt Cloud CLI** banner on the dbt Cloud homepage. -3. Follow the banner instructions and download the config file to `~/.dbt/dbt_cloud.yml` ( Mac and Linux users) or `C:\Users\yourusername\.dbt\dbt_cloud.yml` (Windows users). The config file looks like this: +2. Download your credentials from dbt Cloud by clicking on the **Try the dbt Cloud CLI** banner on the dbt Cloud homepage. Or you can download the credentials from the following links depending on your region: + + - North America: https://cloud.getdbt.com/cloud-cli + - EMEA: https://emea.dbt.com/cloud-cli + - APAC: https://apac.dbt.com/cloud-cli + - North American Cell 1: `https:/ACCOUNT_PREFIX.us1.dbt.com/cloud-cli` + - Single-tenant: `https://YOUR_ACCESS_URL/cloud-cli` + +3. Follow the banner instructions and download the config file to: + - Mac or Linux: `~/.dbt/dbt_cloud.yml` + - Windows: `C:\Users\yourusername\.dbt\dbt_cloud.yml` + + The config file looks like this: ```yaml version: "1" @@ -45,13 +56,13 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt ``` -4. After downloading the config file, navigate to a dbt project in your terminal: +1. After downloading the config file, navigate to a dbt project in your terminal: ```bash cd ~/dbt-projects/jaffle_shop ``` -5. In your `dbt_project.yml` file, ensure you have or include a `dbt-cloud` section with a `project-id` field. The `project-id` field contains the dbt Cloud project ID you want to use. +2. In your `dbt_project.yml` file, ensure you have or include a `dbt-cloud` section with a `project-id` field. The `project-id` field contains the dbt Cloud project ID you want to use. ```yaml # dbt_project.yml From 4baa72f2f2effac592f90489409d34c321e43c5a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 12 Oct 2023 15:51:32 +0100 Subject: [PATCH 126/265] Update website/docs/docs/cloud/configure-cloud-cli.md --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 108fe31abb6..f16eae5808e 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -25,7 +25,7 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt 1. Ensure you meet the prerequisites above. -2. Download your credentials from dbt Cloud by clicking on the **Try the dbt Cloud CLI** banner on the dbt Cloud homepage. Or you can download the credentials from the following links depending on your region: +2. Download your credentials from dbt Cloud by clicking on the **Try the dbt Cloud CLI** banner on the dbt Cloud homepage. Alternatively, if you're in dbt Cloud, you can download the credentials from the links provided based on your region: - North America: https://cloud.getdbt.com/cloud-cli - EMEA: https://emea.dbt.com/cloud-cli From d027ce925843c21b80ae329f1382e92fce33bc08 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 12 Oct 2023 16:14:37 +0100 Subject: [PATCH 127/265] Update configure-cloud-cli.md --- website/docs/docs/cloud/configure-cloud-cli.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index f16eae5808e..b2c645e4886 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -21,7 +21,7 @@ import CloudCLIFlag from '/snippets/_cloud-cli-flag.md'; ## Configure the dbt Cloud CLI -Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt Cloud project. +Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt Cloud project. Note, that if you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. 1. Ensure you meet the prerequisites above. @@ -56,13 +56,13 @@ Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt ``` -1. After downloading the config file, navigate to a dbt project in your terminal: +4. After downloading the config file, navigate to a dbt project in your terminal: ```bash cd ~/dbt-projects/jaffle_shop ``` -2. In your `dbt_project.yml` file, ensure you have or include a `dbt-cloud` section with a `project-id` field. The `project-id` field contains the dbt Cloud project ID you want to use. +5. In your `dbt_project.yml` file, ensure you have or include a `dbt-cloud` section with a `project-id` field. The `project-id` field contains the dbt Cloud project ID you want to use. ```yaml # dbt_project.yml From 931f90e2232ca52e251a8e1e83c0d4665d83d5e8 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 12 Oct 2023 16:15:16 +0100 Subject: [PATCH 128/265] Update cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index b956577e2e6..468eb57deac 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -173,9 +173,13 @@ To update, follow the same process explained in [Windows](/docs/cloud/cloud-cli- ## Next steps -After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. +After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt Cloud CLI for your dbt Cloud project and use it to run [dbt commands](/reference/dbt-commands) similar to dbt Core. For example, you can execute `dbt compile` to compile a project using dbt Cloud. + +Note, that if you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. + + ## FAQs
From b9b3632c57597e7f8e70bf71f2887832c5df40bd Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 16:20:46 +0100 Subject: [PATCH 129/265] reviewed tableau --- .../docs/use-dbt-semantic-layer/tableau.md | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index be8315aeeef..a6887df318e 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -17,37 +17,43 @@ The Tableau integration allows you to use worksheets to query the Semantic Layer 1. You must have [Tableau Desktop](https://www.tableau.com/en-gb/products/desktop) installed 2. Authenticate with either Tableau Server or Tableau Cloud 3. You need either a [JDBC URL](/docs/dbt-cloud-apis/sl-jdbc#connection-parameters) or a dbt Cloud account's [Environment ID](/docs/use-dbt-semantic-layer/setup-sl#set-up-dbt-semantic-layer) and [service token](/docs/dbt-cloud-apis/service-tokens) to log in. This account should be set up with the dbt Semantic Layer. +4. Have a dbt Cloud Team or Enterprise [account](https://www.getdbt.com/pricing) and multi-tenant [deployment](/docs/cloud/about-cloud/regions-ip-addresse). (Single-Tenant coming soon) ## Installing -1. Install this file () locally and add it to your default folder - `Windows: C:\Users\\[Windows User]\Documents\My Tableau Repository\Connectors` - `Mac: /Users/[user]/Documents/My Tableau Repository/Connectors` -3. Install this [JDBC driver](/docs/dbt-cloud-apis/sl-jdbc) to the folder based on your operating system - `Windows: C:\Program Files\Tableau\Drivers` - `Mac: ~/Library/Tableau/Drivers` -4. Open Tableau Desktop and find the connector in the lefthand side called "dbt Semantic Layer by dbt Labs" -5. Connect with your Host, Environment Id, and Service Token information that's provided to you in your dbt Cloud Semantic Layer configuration +1. Install this file () locally and add it to your default folder: + - Windows: `C:\Users\\[Windows User]\Documents\My Tableau Repository\Connectors` + - Mac: `/Users/[user]/Documents/My Tableau Repository/Connectors` +2. Install the [JDBC driver](/docs/dbt-cloud-apis/sl-jdbc) to the folder based on your operating system: + - Windows: `C:\Program Files\Tableau\Drivers` + - Mac: `~/Library/Tableau/Drivers` + - Linux: ` /opt/tableau/tableau_driver/jdbc` +3. Open Tableau Desktop and find the connector in the left-hand side called **dbt Semantic Layer by dbt Labs** +4. Connect with your Host, Environment ID, and service token information that's provided to you in your dbt Cloud Semantic Layer configuration. ## Using the integration -Once you authenticate, you'll be directed to the data source page with all the metrics and dimensions configured in your Semantic Layer. +Once you authenticate, the system will direct you to the data source page with all the metrics and dimensions configured in your Semantic Layer. -From there, you can go directly to a worksheet in the bottom left hand corner, and you'll find all the metrics and dimensions that are available to query on the left hand side of your window. +- From there, go directly to a worksheet in the bottom left hand corner. +- Then, you'll find all the metrics and dimensions that are available to query on the left-hand side of your window. -You can visit the [Tableau documentation] (https://help.tableau.com/current/pro/desktop/en-us/gettingstarted_overview.htm) to learn more about how to use Tableau worksheets and dashboards. +Visit the [Tableau documentation](https://help.tableau.com/current/pro/desktop/en-us/gettingstarted_overview.htm) to learn more about how to use Tableau worksheets and dashboards. ## Things to note -1. You will notice that the aggregation type for all of your metrics is "SUM" and it cannot be changed. The dbt Semantic Layer controls aggregation type and it is deliberately immutable. Note that the underlying aggregation in the dbt Semantic Layer may not be "SUM" (SUM is the default selection in Tableau) -2. We surface all metrics and dimensions from the dbt Semantic Layer in the left hand side, but it should be noted that not all of them can be combined with one another. You will recieve an error message if a particular dimension cannot be sliced with a metric (or vice versa). -3. Certain Table calculations like "Totals" and "Percent Of" may not be accurate when using metrics aggregated in a non-additive way (e.g., count distinct). T +1. All metrics use the "SUM" aggregation type, and this can't be altered. The dbt Semantic Layer controls the aggregation type and it is intentionally fixed. Keep in mind that the underlying aggregation in the dbt Semantic Layer might not be "SUM" (even though "SUM" is Tableau's default). +2. Tableau surfaces all metrics and dimensions from the dbt Semantic Layer on the left-hand side. Note, that not all metrics and dimensions can be combined with one another. You will receive an error message if a particular dimension cannot be sliced with a metric (or vice versa). + - To display available metrics and dimensions, we return metadata for a fake table with the dimensions and metrics as 'columns' on this table. Because of this, you can't actually query this table for previews or extracts. + - Since this is treated as a table, we can't dynamically change what is available. This means we display ALL available metrics and dimensions even if a particular metric and dimension combination isn't available. + +3. Certain Table calculations like "Totals" and "Percent Of" may not be accurate when using metrics aggregated in a non-additive way (such as count distinct) ## Unsupported functionality -Note that we may support some of this functionality in a future release: +The following features aren't supported at this time, however, we may support some of this functionality in a future release: 1. Updating the data source page 2. Using "Extract" Mode From c7b181fbf1410c8ffd054727189ea1b8785c1f67 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 16:47:40 +0100 Subject: [PATCH 130/265] folding in Leona's feedback --- website/docs/reference/dbt_project.yml.md | 2 +- website/docs/reference/global-configs/command-line-flags.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/website/docs/reference/dbt_project.yml.md b/website/docs/reference/dbt_project.yml.md index 5e56bf76e48..571e930d7da 100644 --- a/website/docs/reference/dbt_project.yml.md +++ b/website/docs/reference/dbt_project.yml.md @@ -22,7 +22,7 @@ dbt uses YAML in a few different places. If you're new to YAML, it would be wort ::: - + diff --git a/website/docs/reference/global-configs/command-line-flags.md b/website/docs/reference/global-configs/command-line-flags.md index 57ab91259b8..fbe89ce28f1 100644 --- a/website/docs/reference/global-configs/command-line-flags.md +++ b/website/docs/reference/global-configs/command-line-flags.md @@ -20,6 +20,10 @@ dbt run --no-populate-cache Historically, passing flags (such as "global flags") _before_ the subcommand is a legacy functionality that dbt Labs can remove at any time. We do not support using the same flag before and after the subcommand. +## Using boolean and non-boolean flags + +You can construct your commands with boolean flags to enable or disable or with non-boolean flags that use specific values, such as strings. + From b73a9ab7257a0b618cfd4fd3daea5b1b50de5621 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Thu, 12 Oct 2023 17:00:36 +0100 Subject: [PATCH 131/265] update mf and cloud cli embed --- .../docs/docs/build/metricflow-commands.md | 57 +++++++++++++++---- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/website/docs/docs/build/metricflow-commands.md b/website/docs/docs/build/metricflow-commands.md index 5db38ff2ce4..4554ddf3d0d 100644 --- a/website/docs/docs/build/metricflow-commands.md +++ b/website/docs/docs/build/metricflow-commands.md @@ -8,27 +8,63 @@ tags: [Metrics, Semantic Layer] Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow commands. -MetricFlow allows you to define and query metrics in your dbt project in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) or with the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). To experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. +MetricFlow allows you to define and query metrics in your dbt project in the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation),[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud), or [dbt Core](/docs/core/installation). To experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. -## Install MetricFlow +## MetricFlow - +MetricFlow is a dbt package that allows you to define and query metrics in your dbt project. You can use MetricFlow to query metrics in your dbt project in the dbt Cloud CLI, dbt Cloud IDE, or dbt Core. + + + + + + + +MetricFlow commands are embedded in the dbt Cloud CLI, which means you can immediately run them in the dbt Cloud CLI. A benefit to using the dbt Cloud CLI or dbt Cloud IDE is that you won't need to manage versioning — your dbt Cloud account will automatically manage the versioning for you. + + +:::info +You can create metrics using MetricFlow in the dbt Cloud IDE. However, support for running MetricFlow commands in the IDE will be available soon. +::: + + + @@ -54,11 +90,8 @@ You can install [MetricFlow](https://github.com/dbt-labs/metricflow#getting-star ## MetricFlow commands -:::info -You can create metrics using MetricFlow in the dbt Cloud IDE. However, support for running MetricFlow commands in the IDE will be available soon. -::: - MetricFlow provides the following commands to retrieve metadata and query metrics. + From 59b76bf2529feb65ca05011deb2c91c851c7a658 Mon Sep 17 00:00:00 2001 From: rpourzand Date: Thu, 12 Oct 2023 13:32:36 -0700 Subject: [PATCH 132/265] Update tableau.md --- website/docs/docs/use-dbt-semantic-layer/tableau.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index a6887df318e..59c939fb9c2 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -62,4 +62,5 @@ The following features aren't supported at this time, however, we may support so 5. Table Extensions 6. Cross Database Joins 7. All functions in Analysis --> Create Calculated Field -8. Filtering on a time dimension that has Date Part applied to it +8. Filtering on a Date Part time dimension for a Cumulative metric type + From 27785b63a9c64f30118dfe912769ea22d5f34b5d Mon Sep 17 00:00:00 2001 From: rpourzand Date: Thu, 12 Oct 2023 13:35:25 -0700 Subject: [PATCH 133/265] Update gsheets.md adding the link to our google app listing! --- website/docs/docs/use-dbt-semantic-layer/gsheets.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/gsheets.md b/website/docs/docs/use-dbt-semantic-layer/gsheets.md index fe06e207c95..be4e606a9cb 100644 --- a/website/docs/docs/use-dbt-semantic-layer/gsheets.md +++ b/website/docs/docs/use-dbt-semantic-layer/gsheets.md @@ -6,7 +6,7 @@ sidebar_label: "Google Sheets (beta)" --- :::info Beta functionality -Google Sheets integration is a [beta](https://docs.getdbt.com/docs/dbt-versions/product-lifecycles#dbt-cloud) feature that will be available in beta by the end of October. +Google Sheets integration is a [beta](https://docs.getdbt.com/docs/dbt-versions/product-lifecycles#dbt-cloud) feature. ::: The dbt Semantic Layer offers a seamless integration with Google Sheets through a custom menu. This add-on allows you to build dbt Semantic Layer queries and return data on your metrics directly within Google Sheet. @@ -20,11 +20,10 @@ The dbt Semantic Layer offers a seamless integration with Google Sheets through ## Installing the add-on -1. In Google Sheets, navigate to [**Extensions -> Add-on -> Get add-ons**](https://support.google.com/docs/answer/2942256?hl=en&co=GENIE.Platform%3DDesktop&oco=0#zippy=%2Cinstall-add-ons%2Cinstall-an-add-on). -2. Search for "dbt Semantic Layer for Sheets" and install it. -3. After installing, open the Add-On menu and select the "dbt Semantic Layer for Sheets". This will open a custom menu to the right-hand side of your screen. -4. Authenticate with the dbt Cloud Environment ID and Service Token. -5. Start querying your metrics using the **Query Builder**! +1. Navigate to the [dbt Semantic Layer for Sheets App](https://www.loom.com/share/2f09f98fae344b5bb0b22d684dd1082c). Note you can also find it in Google Sheets by going to [**Extensions -> Add-on -> Get add-ons**](https://support.google.com/docs/answer/2942256?hl=en&co=GENIE.Platform%3DDesktop&oco=0#zippy=%2Cinstall-add-ons%2Cinstall-an-add-on) and searching for it there +2. After installing, open the Add-On menu and select the "dbt Semantic Layer for Sheets". This will open a custom menu to the right-hand side of your screen. +3. Authenticate with your Host, dbt Cloud Environment ID, and Service Token. +4. Start querying your metrics using the **Query Builder**! - For more info on the menu functions, refer to [Custom menu key functions](#custom-menu-key-functions). When querying your data with Google Sheets: From a67acff5b8c099dadba37bf86b610fcc712375e2 Mon Sep 17 00:00:00 2001 From: rpourzand Date: Thu, 12 Oct 2023 14:41:23 -0700 Subject: [PATCH 134/265] Update tableau.md adding linux to setup instructions --- website/docs/docs/use-dbt-semantic-layer/tableau.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index 59c939fb9c2..6686d533d3c 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -25,6 +25,7 @@ The Tableau integration allows you to use worksheets to query the Semantic Layer 1. Install this file () locally and add it to your default folder: - Windows: `C:\Users\\[Windows User]\Documents\My Tableau Repository\Connectors` - Mac: `/Users/[user]/Documents/My Tableau Repository/Connectors` + - Linux: `/opt/tableau/connectors` 2. Install the [JDBC driver](/docs/dbt-cloud-apis/sl-jdbc) to the folder based on your operating system: - Windows: `C:\Program Files\Tableau\Drivers` - Mac: `~/Library/Tableau/Drivers` From 391fc602adff667609dc22e1a2f30cbbddd4e16c Mon Sep 17 00:00:00 2001 From: rpourzand Date: Thu, 12 Oct 2023 14:43:33 -0700 Subject: [PATCH 135/265] Update gsheets.md fixing bug with link --- website/docs/docs/use-dbt-semantic-layer/gsheets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/gsheets.md b/website/docs/docs/use-dbt-semantic-layer/gsheets.md index be4e606a9cb..fd82ce897ed 100644 --- a/website/docs/docs/use-dbt-semantic-layer/gsheets.md +++ b/website/docs/docs/use-dbt-semantic-layer/gsheets.md @@ -20,7 +20,7 @@ The dbt Semantic Layer offers a seamless integration with Google Sheets through ## Installing the add-on -1. Navigate to the [dbt Semantic Layer for Sheets App](https://www.loom.com/share/2f09f98fae344b5bb0b22d684dd1082c). Note you can also find it in Google Sheets by going to [**Extensions -> Add-on -> Get add-ons**](https://support.google.com/docs/answer/2942256?hl=en&co=GENIE.Platform%3DDesktop&oco=0#zippy=%2Cinstall-add-ons%2Cinstall-an-add-on) and searching for it there +1. Navigate to the [dbt Semantic Layer for Sheets App](https://gsuite.google.com/marketplace/app/foo/392263010968). Note you can also find it in Google Sheets by going to [**Extensions -> Add-on -> Get add-ons**](https://support.google.com/docs/answer/2942256?hl=en&co=GENIE.Platform%3DDesktop&oco=0#zippy=%2Cinstall-add-ons%2Cinstall-an-add-on) and searching for it there. 2. After installing, open the Add-On menu and select the "dbt Semantic Layer for Sheets". This will open a custom menu to the right-hand side of your screen. 3. Authenticate with your Host, dbt Cloud Environment ID, and Service Token. 4. Start querying your metrics using the **Query Builder**! From e5683ccbec3c104fef7e409b8b4bea4f8fc25eeb Mon Sep 17 00:00:00 2001 From: rpourzand Date: Thu, 12 Oct 2023 14:57:49 -0700 Subject: [PATCH 136/265] Update sl-jdbc.md Adding in our order by updates --- website/docs/docs/dbt-cloud-apis/sl-jdbc.md | 52 +++++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/dbt-cloud-apis/sl-jdbc.md b/website/docs/docs/dbt-cloud-apis/sl-jdbc.md index 02d26229794..b8c84946b9d 100644 --- a/website/docs/docs/dbt-cloud-apis/sl-jdbc.md +++ b/website/docs/docs/dbt-cloud-apis/sl-jdbc.md @@ -169,10 +169,12 @@ To query metric values, here are the following parameters that are available: | `grain` | A parameter specific to any time dimension and changes the grain of the data from the default for the metric. | `group_by=[Dimension('metric_time')`
`grain('week\|day\|month\|quarter\|year')]` | Optional | | `where` | A where clause that allows you to filter on dimensions and entities using parameters - comes with `TimeDimension`, `Dimension`, and `Entity` objects. Granularity is required with `TimeDimension` | `"{{ where=Dimension('customer__country') }} = 'US')"` | Optional | | `limit` | Limit the data returned | `limit=10` | Optional | -|`order` | Order the data returned | `order_by=['-order_gross_profit']` (remove `-` for ascending order) | Optional | +|`order` | Order the data returned by a particular field | `order_by=['order_gross_profit']`, use `-` for descending, or full object notation if the object is operated on: `order_by=[Metric('order_gross_profit').descending(True)`] | Optional | | `compile` | If true, returns generated SQL for the data platform but does not execute | `compile=True` | Optional | + + ## Note on time dimensions and `metric_time` You will notice that in the list of dimensions for all metrics, there is a dimension called `metric_time`. `Metric_time` is a reserved keyword for the measure-specific aggregation time dimensions. For any time-series metric, the `metric_time` keyword should always be available for use in queries. This is a common dimension across *all* metrics in a semantic graph. @@ -275,18 +277,62 @@ where=[{{ TimeDimension('metric_time', 'MONTH')}} >= '2017-03-09', {{ Dimension( }} ``` -### Query with a limit and order by +### Query with a limit Use the following example to query using a `limit` or `order_by` clauses: +```bash +select * from {{ +semantic_layer.query(metrics=['food_order_amount', 'order_gross_profit'], + group_by=[Dimension('metric_time')], + limit=10) + }} +``` +### Query with Order By Examples + +Order By can take a basic string that's a Dimension, Metric, or Entity and this will default to ascending order + ```bash select * from {{ semantic_layer.query(metrics=['food_order_amount', 'order_gross_profit'], group_by=[Dimension('metric_time')], limit=10, - order_by=['order_gross_profit']) + order_by=['order_gross_profit'] }} ``` + +For descending order, you can add a `-` sign in front of the object. However, you can only use this short hand notation if you aren't operating on the object or using the full object notation. + +```bash +select * from {{ +semantic_layer.query(metrics=['food_order_amount', 'order_gross_profit'], + group_by=[Dimension('metric_time')], + limit=10, + order_by=[-'order_gross_profit'] + }} +``` +If you are ordering by an object that's been operated on (e.g., change granularity), or you are using the full object notation, descending order must look like: + +```bash +select * from {{ +semantic_layer.query(metrics=['food_order_amount', 'order_gross_profit'], + group_by=[Dimension('metric_time').grain('week')], + limit=10, + order_by=[Metric('order_gross_profit').descending(True), Dimension('metric_time').grain('week').descending(True) ] + }} +``` + +Similarly, this will yield ascending order: + +```bash +select * from {{ +semantic_layer.query(metrics=['food_order_amount', 'order_gross_profit'], + group_by=[Dimension('metric_time').grain('week')], + limit=10, + order_by=[Metric('order_gross_profit'), Dimension('metric_time').grain('week')] + }} +``` + ### Query with compile keyword Use the following example to query using a `compile` keyword: From c1dfd098a7d6ff7b7ea1b8c6357a8579d4a4d382 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 13 Oct 2023 11:24:17 +0100 Subject: [PATCH 137/265] Update cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 468eb57deac..7721acd00cf 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -38,6 +38,8 @@ Otherwise, to switch back to dbt Core, uninstall the dbt Cloud CLI and follow th ::: +You can install dbt Core and plugins using pip because they are Python modules distributed on [PyPI](https://pypi.org/project/dbt/). + 1. We recommend [installing virtual environments (venv)](/docs/core/pip-install#using-virtual-environments) to namespace "cloud-cli" - Venv name should be: `python3 -m venv dbt-cloud` and session should be activated with `source dbt-cloud/bin/activate`. From 28207188a178aed1a39dec40adb060cb30301cf4 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 12:51:25 +0100 Subject: [PATCH 138/265] update sl --- .../docs/docs/build/metricflow-commands.md | 17 ++++---- website/docs/docs/build/sl-getting-started.md | 3 +- .../avail-sl-integrations.md | 2 +- .../docs/use-dbt-semantic-layer/gsheets.md | 17 ++++---- .../use-dbt-semantic-layer/quickstart-sl.md | 3 +- .../docs/use-dbt-semantic-layer/tableau.md | 8 ++-- website/sidebars.js | 2 +- website/snippets/_sl-install-metricflow.md | 18 --------- website/snippets/_sl-install-mf-cloud.md | 16 -------- website/snippets/_sl-partner-links.md | 9 ++--- .../snippets/_sl-test-and-query-metrics.md | 40 ++++++++++++++++--- 11 files changed, 65 insertions(+), 70 deletions(-) delete mode 100644 website/snippets/_sl-install-metricflow.md delete mode 100644 website/snippets/_sl-install-mf-cloud.md diff --git a/website/docs/docs/build/metricflow-commands.md b/website/docs/docs/build/metricflow-commands.md index 4554ddf3d0d..a26d7eb2e4e 100644 --- a/website/docs/docs/build/metricflow-commands.md +++ b/website/docs/docs/build/metricflow-commands.md @@ -51,7 +51,7 @@ You can install [MetricFlow](https://github.com/dbt-labs/metricflow#getting-star -MetricFlow commands are embedded in the dbt Cloud CLI, which means you can immediately run them in the dbt Cloud CLI. +MetricFlow commands are embedded in the dbt Cloud CLI, which means you can immediately run them once you install the dbt Cloud CLI. A benefit to using the dbt Cloud CLI or dbt Cloud IDE is that you won't need to manage versioning — your dbt Cloud account will automatically manage the versioning for you. @@ -100,11 +100,11 @@ Use the `dbt sl` prefix before the command name to execute them in dbt Cloud. Fo - [`list`](#list) — Retrieves metadata values. - [`list metrics`](#list-metrics) — Lists metrics with dimensions. - [`list dimensions`](#list) — Lists unique dimensions for metrics. +- [`list entities`](#list-entities) — Lists all unique entities. - [`query`](#query) — Query metrics and dimensions you want to see in the command line interface. Refer to [query examples](#query-examples) to help you get started. Create Calculated Field 8. Filtering on a Date Part time dimension for a Cumulative metric type - diff --git a/website/sidebars.js b/website/sidebars.js index 4ff44736045..5e3402685c8 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -418,7 +418,7 @@ const sidebarSettings = { link: { type: "doc", id: "docs/use-dbt-semantic-layer/avail-sl-integrations" }, items: [ "docs/use-dbt-semantic-layer/avail-sl-integrations", - //"docs/use-dbt-semantic-layer/gsheets", + "docs/use-dbt-semantic-layer/gsheets", "docs/use-dbt-semantic-layer/tableau", ], }, diff --git a/website/snippets/_sl-install-metricflow.md b/website/snippets/_sl-install-metricflow.md deleted file mode 100644 index 1c2ebb5e121..00000000000 --- a/website/snippets/_sl-install-metricflow.md +++ /dev/null @@ -1,18 +0,0 @@ -This step is for dbt Core users only. - -MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: - -1. Install [MetricFlow](/docs/build/metricflow-commands) as an extension of a dbt adapter from PyPI. -2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` -3. Run `pip install dbt-metricflow` - - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` - - **Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. -4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. - - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. -5. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. -6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` -7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. -8. Run `mf validate-configs` to run validation on your semantic models and metrics. -9. Commit and merge the code changes that contain the metric definitions. - -To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. diff --git a/website/snippets/_sl-install-mf-cloud.md b/website/snippets/_sl-install-mf-cloud.md deleted file mode 100644 index 63d7cdab053..00000000000 --- a/website/snippets/_sl-install-mf-cloud.md +++ /dev/null @@ -1,16 +0,0 @@ -This step is for dbt Cloud CLI users only (dbt Cloud IDE support coming soon). - -dbt Cloud CLI users must install [MetricFlow](/docs/build/metricflow-commands) to run MetricFlow commands. It's compatible with Python versions 3.8, 3.9, 3.10 and 3.11: - -1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) -2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` -3. Run `pip install metricflow` -4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json` artifact. - - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. -5. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. -6. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` -7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line. -8. Run `dbt sl validate-configs` to run validation on your semantic models and metrics. -9. Commit and merge the code changes that contain the metric definitions. - -To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index c630c03c986..f54233abd3f 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -1,18 +1,17 @@ The following tools integrate with the dbt Semantic Layer: - -
diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index f0bbbe48866..1902ef07496 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -1,4 +1,4 @@ -This section will explain how you can test and run MetricFlow commands with dbt Cloud or dbt Core (dbt Cloud IDE support coming soon). Before you begin, you'll need to make sure you run at least one model. +This section will explain how you can test and run MetricFlow commands with dbt Cloud or dbt Core (dbt Cloud IDE support coming soon). dbt Cloud IDE users can skip to [Run a production job](#run-a-production-job) to run a model. :::important Testing and querying metrics in the dbt Cloud IDE not yet supported @@ -14,9 +14,24 @@ You can use the **Preview** or **Compile** buttons in the IDE to run semantic va -import InstallMFCloud from '/snippets/_sl-install-mf-cloud.md'; +This section is exclusive to dbt Cloud CLI users (support for dbt Cloud IDE is coming soon). With dbt Cloud, you can: - +- Run MetricFlow commands right after installing the dbt Cloud CLI. They're integrated with dbt Cloud so you can use them immediately. +- Not worry about version control; your dbt Cloud account will manage it for you automatically. + +Refer to the following steps to get started: + +1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). +2. Navigate to your dbt project directory. +3. Run a dbt command, such as `dbt parse`, `dbt run`, `dbt compile` or `dbt build`. If you don't, you'll receive an error message that begins with: `ensure that you've ran an artifacts....` + - MetricFlow builds a semantic graph and generates a `semantic_manifest.json` file in dbt Cloud, which is stored in the `/target` directory. If using the Jaffle shop example, run `dbt seed && dbt run` to ensure the required data is in your data platform before proceeding. + +4. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. +5. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` +6. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--compile` in the command line. +7. Commit and merge the code changes that contain the metric definitions. + +To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. @@ -24,10 +39,25 @@ import InstallMFCloud from '/snippets/_sl-install-mf-cloud.md'; -import InstallMetricFlow from '/snippets/_sl-install-metricflow.md'; +This step is for dbt Core users only. MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: + +**Note** — The dbt Cloud CLI is highly recommended for the experience in defining and querying metrics in your dbt project on dbt Cloud or dbt Core with MetricFlow. If you're using dbt Core, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. + - +1. Install [MetricFlow](/docs/build/metricflow-commands) as an extension of a dbt adapter from PyPI. +2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` +3. Run `pip install dbt-metricflow` + - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` + - **Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. +4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. + - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. +5. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. +6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` +7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. +8. Run `mf validate-configs` to run validation on your semantic models and metrics. +9. Commit and merge the code changes that contain the metric definitions. +To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. From 11de5010bb0c9312132e54aa00a62dd7fa43d689 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 12:52:23 +0100 Subject: [PATCH 139/265] update --- .../docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md index b7739d53396..8ab4ca9bfd0 100644 --- a/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md +++ b/website/docs/docs/use-dbt-semantic-layer/avail-sl-integrations.md @@ -25,7 +25,7 @@ import AvailIntegrations from '/snippets/_sl-partner-links.md'; You can also integrate the following tools with the dbt Semantic Layer: - [Push.ai](https://docs.push.ai/semantic-layer-integrations/dbt-semantic-layer) - [Delphi](delphihq.com) -- KlipFolio Power Metrics - waiting on docs +- KlipFolio Power Metrics - Documentation coming soon ### Custom integration From b510ad43130e2ddee37e7b875f9d8cf1f296c225 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 13:06:08 +0100 Subject: [PATCH 140/265] update --- website/docs/docs/use-dbt-semantic-layer/sl-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md b/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md index 7fe851074b0..ae823a8219b 100644 --- a/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md +++ b/website/docs/docs/use-dbt-semantic-layer/sl-architecture.md @@ -23,7 +23,7 @@ The dbt Semantic Layer includes the following components: | **[MetricFlow](/docs/build/about-metricflow)** | MetricFlow in dbt allows users to centrally define their semantic models and metrics with YAML specifications. | ✅ | ✅ | ✅ | BSL package (code is source available) | | **MetricFlow Server**| A proprietary server that takes metric requests and generates optimized SQL for the specific data platform. | ❌ | ✅ | ✅ | Proprietary, Cloud (Team & Enterprise)| | **Semantic Layer Gateway** | A service that passes queries to MetricFlow server and executes the SQL generated by MetricFlow against the data platform|

❌| ✅ | ✅ | Proprietary, Cloud (Team & Enterprise) | -| **Semantic Layer API** | The interfaces that allow users to submit metric queries include the MetricFlow CLI and JDBC API. They also serve as the foundation for building first-class integrations with various tools. | ❌ | ✅ | ✅ | Proprietary, Cloud (Team & Enterprise)| +| **Semantic Layer APIs** | The interfaces that allow users to submit metric queries using the GraphQL and JDBC APIs. They also serve as the foundation for building first-class integrations with various tools. | ❌ | ✅ | ✅ | Proprietary, Cloud (Team & Enterprise)| ## Related questions From c185c43c9ab424cd71e8c00794c2b166c55530c6 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 13:27:12 +0100 Subject: [PATCH 141/265] update quickstarts --- website/docs/docs/cloud/configure-cloud-cli.md | 3 ++- website/docs/quickstarts/manual-install-qs.md | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index b2c645e4886..9664c7742bb 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -14,6 +14,7 @@ import CloudCLIFlag from '/snippets/_cloud-cli-flag.md'; ## Prerequisites - You must set up a project in dbt Cloud. + - **Note** — If you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. - You must have your [personal development credentials](/docs/dbt-cloud-environments#set-developer-credentials) set for that project. The dbt Cloud CLI will use these credentials, stored securely in dbt Cloud, to communicate with your data platform. - You must [enroll](/docs/dbt-versions/experimental-features) in the dbt Cloud beta features. - To enroll, navigate to your **Profile Settings** and enable the **Beta** flag under **Experimental Features**. @@ -21,7 +22,7 @@ import CloudCLIFlag from '/snippets/_cloud-cli-flag.md'; ## Configure the dbt Cloud CLI -Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt Cloud project. Note, that if you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. +Once you install the dbt Cloud CLI, you need to configure it to connect to a dbt Cloud project. 1. Ensure you meet the prerequisites above. diff --git a/website/docs/quickstarts/manual-install-qs.md b/website/docs/quickstarts/manual-install-qs.md index 678b78e940f..2444cf29d7e 100644 --- a/website/docs/quickstarts/manual-install-qs.md +++ b/website/docs/quickstarts/manual-install-qs.md @@ -9,11 +9,11 @@ hide_table_of_contents: true --- ## Introduction -When you use dbt Core to work with dbt, you will be editing files locally using a code editor, and running projects using the dbt command line interface (dbt CLI). If you'd rather edit files and run projects using the web-based Integrated Development Environment (IDE), you should refer to the [dbt Cloud quickstarts](/quickstarts). +When you use dbt Core to work with dbt, you will be editing files locally using a code editor, and running projects using a command line interface (CLI). If you'd rather edit files and run projects using the web-based Integrated Development Environment (IDE), you should refer to the [dbt Cloud quickstarts](/quickstarts). You can also develop and run dbt commands using the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) — a dbt Cloud powered command line. ### Prerequisites -* To use the dbt CLI, it's important that you know some basics of the Terminal. In particular, you should understand `cd`, `ls` and `pwd` to navigate through the directory structure of your computer easily. +* To use dbt Core, it's important that you know some basics of the Terminal. In particular, you should understand `cd`, `ls` and `pwd` to navigate through the directory structure of your computer easily. * Install dbt Core using the [installation instructions](/docs/core/installation) for your operating system. * Complete [Setting up (in BigQuery)](/quickstarts/bigquery?step=2) and [Loading data (BigQuery)](/quickstarts/bigquery?step=3). * [Create a GitHub account](https://github.com/join) if you don't already have one. From 09c1ba486ff039b125d9758ad7496400e27b99ed Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 13:37:00 +0100 Subject: [PATCH 142/265] final tweaks --- website/docs/docs/build/about-metricflow.md | 3 ++ .../docs/docs/build/metricflow-commands.md | 31 ++----------------- .../release-notes/03-Oct-2023/sl-ga.md | 4 +-- 3 files changed, 6 insertions(+), 32 deletions(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index fddd543677d..9a52cf5a6ea 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -25,6 +25,9 @@ MetricFlow is a SQL query generation tool designed to streamline metric creation - As a part of the dbt Semantic Layer, MetricFlow empowers organizations to define metrics using YAML abstractions. - To query metric dimensions, dimension values, and validate configurations, use [MetricFlow commands](/docs/build/metricflow-commands). + +**Note** — MetricFlow doesn't support dbt [builtin functions or packages](/reference/dbt-jinja-functions/builtins) at this time, however, support is planned for the future. + MetricFlow abides by these principles: - **Flexibility with completeness**: Define metric logic using flexible abstractions on any data model. diff --git a/website/docs/docs/build/metricflow-commands.md b/website/docs/docs/build/metricflow-commands.md index a26d7eb2e4e..ddd33f0c3c8 100644 --- a/website/docs/docs/build/metricflow-commands.md +++ b/website/docs/docs/build/metricflow-commands.md @@ -17,35 +17,7 @@ MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. MetricFlow is a dbt package that allows you to define and query metrics in your dbt project. You can use MetricFlow to query metrics in your dbt project in the dbt Cloud CLI, dbt Cloud IDE, or dbt Core. - +**Note** — MetricFlow commands aren't supported in dbt Cloud jobs yet. If using GitHub Actions, you can `pip install metricflow` and run MetricFlow dbt Core commands as part of your CI checks on PRs. @@ -88,6 +60,7 @@ You can install [MetricFlow](https://github.com/dbt-labs/metricflow#getting-star + ## MetricFlow commands MetricFlow provides the following commands to retrieve metadata and query metrics. diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index c6598963b4d..99be4cdd6f3 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -15,11 +15,10 @@ dbt Labs is thrilled to announce that the [dbt Semantic Layer](/docs/use-dbt-sem It aims to bring the best of modeling and semantics to downstream applications by introducing: -- Brand new integrations with Tableau, Google Sheets, Hex, Mode, and Lightdash. +- Brand new [integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) with Tableau, Google Sheets, Hex, Mode, and Lightdash. - New [Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) using GraphQL and JDBC to query metrics and build integrations. - dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North American, EMEA, and APAC (Single-Tenant support coming soon). - Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. (Support for scheduling exports as part of your dbt job is coming on db v1.7 or higher.) -- Info on pricing/commercial availability????? or link to billing The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. dbt Cloud Developer plans and dbt Core users can use the dbt Cloud IDE or MetricFlow CLI to define metrics, but won't be able to query them with integrated tools. @@ -27,5 +26,4 @@ The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://ww -For more info on what this means and how to get started, read link to blog -- link to blog From f41330601fdac829a9d75f8093d6927b7986dd31 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 13:41:36 +0100 Subject: [PATCH 143/265] add tenant info --- website/docs/docs/cloud/cloud-cli-installation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 7721acd00cf..d5c61881ff8 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -21,6 +21,7 @@ dbt commands are run against dbt Cloud's infrastructure and benefit from: * Support for dbt Mesh ([cross-project `ref`](/docs/collaborate/govern/project-dependencies)), * Significant platform improvements, to be released over the coming months. +The dbt Cloud CLI is available in all [deployment regions](/docs/cloud/about-cloud/regions-ip-addresses) and and for both multi-tenant and single-tenant accounts (Azure single-tenant not supported at this time). ## Install dbt Cloud CLI From e63cc505a99ff8fd58011582262ff6ebecc12dcf Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 13 Oct 2023 13:49:36 +0100 Subject: [PATCH 144/265] Update website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md --- .../docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md index 5fd070dd70a..8e586211528 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md @@ -7,7 +7,7 @@ tags: [Oct-2023, CLI, dbt Cloud] date: 2023-10-17 --- -We are excited to announce the dbt Cloud CLI, **unified command line for dbt**, is available in public preview. It’s a local development experience, powered by dbt Cloud. It’s easy to get started: `brew install dbt` and you’re ready to go. +We are excited to announce the dbt Cloud CLI, **unified command line for dbt**, is available in public preview. It’s a local development experience, powered by dbt Cloud. It’s easy to get started: `pip3 install dbt` or `brew install dbt` and you’re ready to go. We will continue to invest in the dbt Cloud IDE as the easiest and most accessible way to get started using dbt, especially for data analysts who have never developed software using the command line before. We will keep improving the speed, stability, and feature richness of the IDE, as we have been [all year long](https://www.getdbt.com/blog/improvements-to-the-dbt-cloud-ide/). From 1edef5246c5d185ea5f7b09f48b42ccdc3acbeaf Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 13 Oct 2023 14:30:46 +0100 Subject: [PATCH 145/265] Update project-dependencies.md --- .../govern/project-dependencies.md | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/website/docs/docs/collaborate/govern/project-dependencies.md b/website/docs/docs/collaborate/govern/project-dependencies.md index 7785e428678..13fc76bb743 100644 --- a/website/docs/docs/collaborate/govern/project-dependencies.md +++ b/website/docs/docs/collaborate/govern/project-dependencies.md @@ -5,16 +5,11 @@ sidebar_label: "Project dependencies" description: "Reference public models across dbt projects" --- -:::caution Closed Beta - dbt Cloud Enterprise -"Project" dependencies and cross-project `ref` are features of dbt Cloud Enterprise, currently in Closed Beta. To access these features while they are in beta, please contact your account team at dbt Labs. - -**Prerequisites:** In order to add project dependencies and resolve cross-project `ref`, you must: -- Have the feature enabled (speak to your account team) -- Use dbt v1.6 for **both** the upstream ("producer") project and the downstream ("consumer") project. -- Have a deployment environment in the upstream ("producer") project [that is set to be your production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta) -- Have a successful run of the upstream ("producer") project +:::caution Available in Publib Preview for dbt Cloud Enterprise accounts +"Project" dependencies and cross-project `ref` are features of dbt Cloud Enterprise, currently in [Public Preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). To access these features while they are in beta, please contact your account team at dbt Labs. ::: + For a long time, dbt has supported code reuse and extension by installing other projects as [packages](/docs/build/packages). When you install another project as a package, you are pulling in its full source code, and adding it to your own. This enables you to call macros and run models defined in that other project. While this is a great way to reuse code, share utility macros, and establish a starting point for common transformations, it's not a great way to enable collaboration across teams and at scale, especially at larger organizations. @@ -23,6 +18,30 @@ This year, dbt Labs is introducing an expanded notion of `dependencies` across m - **Packages** — Familiar and pre-existing type of dependency. You take this dependency by installing the package's full source code (like a software library). - **Projects** — A _new_ way to take a dependency on another project. Using a metadata service that runs behind the scenes, dbt Cloud resolves references on-the-fly to public models defined in other projects. You don't need to parse or run those upstream models yourself. Instead, you treat your dependency on those models as an API that returns a dataset. The maintainer of the public model is responsible for guaranteeing its quality and stability. + +## Prerequisites + +In order to add project dependencies and resolve cross-project `ref`, you must: +- Have the feature enabled (speak to your account team) +- Use dbt v1.6 for **both** the upstream ("producer") project and the downstream ("consumer") project. +- Have a deployment environment in the upstream ("producer") project [that is set to be your production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta) +- Have a successful run of the upstream ("producer") project + +### About dependencies.yml + +There are differences between using a `dependencies.yml` compared to a `packages.yml` file: + +- **`dependencies.yml`** + - Primarily designed for dbt Mesh and cross-project reference workflow. + - Supports Projects and non-private dbt Packages (private packages aren't supported yet. Refer to [FAQs](#faqs) for more info). + - Helps maintain your project's organization by allowing you to specify hub packages like `dbt_utils`, reducing the need for multiple YAML files. + - Does not support conditional configuration using Jinja-in-yaml + +- **`packages.yml`** +- Does not contribute to the dbt Mesh workflow. +- Serves as a list of dbt Packages (such as dbt projects) that you want to download into your root or parent dbt project. +- Can only include packages, including private packages (doesn't support Projects) + ## Example As an example, let's say you work on the Marketing team at the Jaffle Shop. The name of your team's project is `jaffle_marketing`: @@ -36,7 +55,7 @@ name: jaffle_marketing As part of your modeling of marketing data, you need to take a dependency on two other projects: -- `dbt_utils` as a [package](#packages-use-case): An collection of utility macros that you can use while writing the SQL for your own models. This package is, open-source public, and maintained by dbt Labs. +- `dbt_utils` as a [package](#packages-use-case): A collection of utility macros that you can use while writing the SQL for your own models. This package is, open-source public, and maintained by dbt Labs. - `jaffle_finance` as a [project use-case](#projects-use-case): Data models about the Jaffle Shop's revenue. This project is private and maintained by your colleagues on the Finance team. You want to select from some of this project's final models, as a starting point for your own work. @@ -99,7 +118,7 @@ There are a few cases where installing another internal project as a package can - Unified deployments — In a production environment, if the central data platform team of Jaffle Shop wanted to schedule the deployment of models across both `jaffle_finance` and `jaffle_marketing`, they could use dbt's [selection syntax](/reference/node-selection/syntax) to create a new "passthrough" project that installed both projects as packages. - Coordinated changes — In development, if you wanted to test the effects of a change to a public model in an upstream project (`jaffle_finance.monthly_revenue`) on a downstream model (`jaffle_marketing.roi_by_channel`) _before_ introducing changes to a staging or production environment, you can install the `jaffle_finance` package as a package within `jaffle_marketing`. The installation can point to a specific git branch, however, if you find yourself frequently needing to perform end-to-end testing across both projects, we recommend you re-examine if this represents a stable interface boundary. -These are the exceptions, rather than the rule. Installing another team's project as a package adds complexity, latency, and risk of unnecessary costs. By defining clear interface boundaries across teams, by serving one team's public models as "APIs" to another, and by enabling practitioners to develop with a more narrowly-defined scope, we can enable more people to contribute, with more confidence, while requiring less context upfront. +These are the exceptions, rather than the rule. Installing another team's project as a package adds complexity, latency, and risk of unnecessary costs. By defining clear interface boundaries across teams, by serving one team's public models as "APIs" to another, and by enabling practitioners to develop with a more narrowly defined scope, we can enable more people to contribute, with more confidence, while requiring less context upfront. ## FAQs From d7dee94f0c87e01ab2d5f1a30f3a8d312a7176cc Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 15:06:30 +0100 Subject: [PATCH 146/265] clarify --- website/docs/docs/build/packages.md | 24 ++++++++++++++--- .../govern/project-dependencies.md | 26 +++++++++++-------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/website/docs/docs/build/packages.md b/website/docs/docs/build/packages.md index 74e25262994..6756534fccf 100644 --- a/website/docs/docs/build/packages.md +++ b/website/docs/docs/build/packages.md @@ -3,7 +3,7 @@ title: "Packages" id: "packages" --- -## What is a package? + Software engineers frequently modularize code into libraries. These libraries help programmers operate with leverage: they can spend more time focusing on their unique business logic, and less time implementing code that someone else has already spent the time perfecting. In dbt, libraries like these are called _packages_. dbt's packages are so powerful because so many of the analytic problems we encountered are shared across organizations, for example: @@ -22,13 +22,14 @@ dbt _packages_ are in fact standalone dbt projects, with models and macros that * Models in the package will be materialized when you `dbt run`. * You can use `ref` in your own models to refer to models from the package. * You can use macros in the package in your own project. +* It's important to note that defining and installing dbt packages is different from [defining and installing Python packages](/docs/build/python-models#using-pypi-packages) -:::note Using Python packages - -Defining and installing dbt packages is different from [defining and installing Python packages](/docs/build/python-models#using-pypi-packages). +:::info Project Dependencies versus Packages + Packages are different to Project dependencies, a feature that allows cross-project `ref`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies) for more info about the difference between `dependencies.yml` and `packages.yml`. ::: + ## How do I add a package to my project? 1. Add a file named `dependencies.yml` or `packages.yml` to your dbt project. This should be at the same level as your `dbt_project.yml` file. 2. Specify the package(s) you wish to add using one of the supported syntaxes, for example: @@ -366,3 +367,18 @@ packages: ``` + +### About dependencies.yml + +There are some important differences between using a `dependencies.yml` compared to a `packages.yml` file: + +- `dependencies.yml` + - Primarily designed for dbt Mesh and cross-project reference workflow. + - Supports both Projects and non-private dbt packages (private packages aren't supported yet). + - Helps maintain your project's organization by allowing you to specify hub packages like `dbt_utils`, reducing the need for multiple YAML files. + - Does not support conditional configuration using Jinja-in-yaml (Refer to [FAQs](#faqs) for more info). + +- `packages.yml` + - Does not contribute to the dbt Mesh workflow. + - Serves as a list of dbt Packages (such as dbt projects) that you want to download into your root or parent dbt project. + - Can only include packages, including private packages (doesn't support Projects) diff --git a/website/docs/docs/collaborate/govern/project-dependencies.md b/website/docs/docs/collaborate/govern/project-dependencies.md index 13fc76bb743..698f551749a 100644 --- a/website/docs/docs/collaborate/govern/project-dependencies.md +++ b/website/docs/docs/collaborate/govern/project-dependencies.md @@ -5,8 +5,11 @@ sidebar_label: "Project dependencies" description: "Reference public models across dbt projects" --- -:::caution Available in Publib Preview for dbt Cloud Enterprise accounts -"Project" dependencies and cross-project `ref` are features of dbt Cloud Enterprise, currently in [Public Preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). To access these features while they are in beta, please contact your account team at dbt Labs. +:::info Available in Public Preview for dbt Cloud Enterprise accounts + +Project dependencies and cross-project `ref` are features available in [dbt Cloud Enterprise](https://www.getdbt.com/pricing), currently in [Public Preview](/docs/dbt-versions/product-lifecycles#dbt-cloud). + +Enterprise users can use these features by designating a [public model](/docs/collaborate/govern/model-access) and adding a [cross-project ref](#how-to-use-ref). ::: @@ -26,21 +29,22 @@ In order to add project dependencies and resolve cross-project `ref`, you must: - Use dbt v1.6 for **both** the upstream ("producer") project and the downstream ("consumer") project. - Have a deployment environment in the upstream ("producer") project [that is set to be your production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta) - Have a successful run of the upstream ("producer") project +- Have a multi-tenant or single-tenant [dbt Cloud Enterprise](https://www.getdbt.com/pricing) account -- IS DEPLOYMENT /TENANCY INFO RIGHT? ### About dependencies.yml -There are differences between using a `dependencies.yml` compared to a `packages.yml` file: +There are some important differences between using a `dependencies.yml` compared to a `packages.yml` file: -- **`dependencies.yml`** +- `dependencies.yml` - Primarily designed for dbt Mesh and cross-project reference workflow. - - Supports Projects and non-private dbt Packages (private packages aren't supported yet. Refer to [FAQs](#faqs) for more info). + - Supports both Projects and non-private dbt packages (private packages aren't supported yet). - Helps maintain your project's organization by allowing you to specify hub packages like `dbt_utils`, reducing the need for multiple YAML files. - - Does not support conditional configuration using Jinja-in-yaml + - Does not support conditional configuration using Jinja-in-yaml (Refer to [FAQs](#faqs) for more info). -- **`packages.yml`** -- Does not contribute to the dbt Mesh workflow. -- Serves as a list of dbt Packages (such as dbt projects) that you want to download into your root or parent dbt project. -- Can only include packages, including private packages (doesn't support Projects) +- `packages.yml` + - Does not contribute to the dbt Mesh workflow. + - Serves as a list of dbt Packages (such as dbt projects) that you want to download into your root or parent dbt project. + - Can only include packages, including private packages (doesn't support Projects) ## Example @@ -85,7 +89,7 @@ When you're building on top of another team's work, resolving the references in - You don't need to mirror any conditional configuration of the upstream project such as `vars`, environment variables, or `target.name`. You can reference them directly wherever the Finance team is building their models in production. Even if the Finance team makes changes like renaming the model, changing the name of its schema, or [bumping its version](/docs/collaborate/govern/model-versions), your `ref` would still resolve successfully. - You eliminate the risk of accidentally building those models with `dbt run` or `dbt build`. While you can select those models, you can't actually build them. This prevents unexpected warehouse costs and permissions issues. This also ensures proper ownership and cost allocation for each team's models. -### Usage +### How to use ref **Writing `ref`:** Models referenced from a `project`-type dependency must use [two-argument `ref`](/reference/dbt-jinja-functions/ref#two-argument-variant), including the project name: From eb39713b6310b1e59e5b97591b20a1d925811869 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 15:10:01 +0100 Subject: [PATCH 147/265] add guide link --- .../docs/docs/collaborate/govern/project-dependencies.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/website/docs/docs/collaborate/govern/project-dependencies.md b/website/docs/docs/collaborate/govern/project-dependencies.md index 698f551749a..e2020c95320 100644 --- a/website/docs/docs/collaborate/govern/project-dependencies.md +++ b/website/docs/docs/collaborate/govern/project-dependencies.md @@ -110,6 +110,8 @@ with monthly_revenue as ( **Cycle detection:** Currently, "project" dependencies can only go in one direction, meaning that the `jaffle_finance` project could not add a new model that depends, in turn, on `jaffle_marketing.roi_by_channel`. dbt will check for cycles across projects and raise errors if any are detected. We are considering support for this pattern in the future, whereby dbt would still check for node-level cycles while allowing cycles at the project level. +For more guidance on how to use dbt Mesh, refer to the dedicated [dbt Mesh guide](/guides/best-practices/how-we-mesh/mesh-1-intro). + ### Comparison If you were to instead install the `jaffle_finance` project as a `package` dependency, you would instead be pulling down its full source code and adding it to your runtime environment. This means: @@ -131,3 +133,7 @@ These are the exceptions, rather than the rule. Installing another team's projec If you're using private packages with the [git token method](/docs/build/packages#git-token-method), you must define them in the `packages.yml` file instead of the `dependencies.yml` file. This is because conditional rendering (like Jinja-in-yaml) is not supported.
+ + +## Related docs +- [dbt Mesh guide](/guides/best-practices/how-we-mesh/mesh-1-intro) From 99212dff03a7f424d8ea1841707c5232f92fedd2 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 13 Oct 2023 15:12:14 +0100 Subject: [PATCH 148/265] Update website/docs/reference/dbt-commands.md --- website/docs/reference/dbt-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index 2ee4415f409..0d5449eac5a 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -12,7 +12,7 @@ The following sections outline the commands supported by dbt and their relevant ### Available commands - + All commands in the table are compatible with either the dbt Cloud IDE, dbt Cloud CLI, or dbt Core. From efaf7ba3e915fe6a3ccd9f615dfed4b354600374 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 13 Oct 2023 15:13:11 +0100 Subject: [PATCH 149/265] Update dbt-commands.md --- website/docs/reference/dbt-commands.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index 0d5449eac5a..66e28010bb0 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -11,7 +11,6 @@ The following sections outline the commands supported by dbt and their relevant ### Available commands - All commands in the table are compatible with either the dbt Cloud IDE, dbt Cloud CLI, or dbt Core. @@ -44,7 +43,7 @@ You can run dbt commands in your specific tool by prefixing them with `dbt`. Fo - + Select the tabs that are relevant to your development workflow. For example, if you develop in the dbt Cloud IDE, select **dbt Cloud**. @@ -54,7 +53,7 @@ Select the tabs that are relevant to your development workflow. For example, if Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud) and use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. - [build](/reference/commands/build): build and test all selected resources (models, seeds, snapshots, tests) -- [clone](/reference/commands/clone): clone selected nodes from specified state (requires dbt 1.6 or higher) +- [clone](/reference/commands/clone): clone selected nodes from the specified state (requires dbt 1.6 or higher) - [compile](/reference/commands/compile): compiles (but does not run) the models in a project - [deps](/reference/commands/deps): downloads dependencies for a project - [docs](/reference/commands/cmd-docs) : generates documentation for a project @@ -75,7 +74,7 @@ Use the following dbt commands in the [dbt COre](/docs/core/about-dbt-core) and - [build](/reference/commands/build): build and test all selected resources (models, seeds, snapshots, tests) - [clean](/reference/commands/clean): deletes artifacts present in the dbt project -- [clone](/reference/commands/clone): clone selected models from specified state (requires dbt 1.6 or higher) +- [clone](/reference/commands/clone): clone selected models from the specified state (requires dbt 1.6 or higher) - [compile](/reference/commands/compile): compiles (but does not run) the models in a project - [debug](/reference/commands/debug): debugs dbt connections and projects - [deps](/reference/commands/deps): downloads dependencies for a project From c0a47631c0cb71fd8347d0706e4822981bb1b946 Mon Sep 17 00:00:00 2001 From: dave-connors-3 <73915542+dave-connors-3@users.noreply.github.com> Date: Fri, 13 Oct 2023 09:22:32 -0500 Subject: [PATCH 150/265] Update website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md --- website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 611d40a6567..1a5d7f090ea 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -6,7 +6,7 @@ hoverSnippet: Learn how to get started with dbt Mesh ## What is dbt Mesh? -Historically, building data teams has involved two extremes, building a centralized team or using embedded analysts. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts, allowing embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficultly of this model though is managing the compplexity of dependencies, goverance, and workflows between all groups — creating friction in monorepos or complexity and silos in multi-repos. Ideally, you want to teams to be able to work independently, but also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. +Historically, building data teams has involved two extremes, building a centralized team or using embedded analysts. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts allows embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficultly of this model is managing the complexity of dependencies, governance, and workflows between all groups — attempting to manage this can often create friction in monorepos or complexity and silos in multiple repos. Ideally, teams should be able to work independently and also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. dbt Mesh is not a product, but a pattern, enabled a convergence of several features in dbt Cloud. It’s inspired by dbt’s best practices and ideas from [data mesh](https://en.wikipedia.org/wiki/Data_mesh). These features include: From 31e921920f9d8a9f51f16d098281ef29a3f5a5aa Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Fri, 13 Oct 2023 09:27:18 -0500 Subject: [PATCH 151/265] dave edits on page one --- .../how-we-mesh/mesh-1-intro.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 611d40a6567..95c315bb22f 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -6,28 +6,28 @@ hoverSnippet: Learn how to get started with dbt Mesh ## What is dbt Mesh? -Historically, building data teams has involved two extremes, building a centralized team or using embedded analysts. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts, allowing embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficultly of this model though is managing the compplexity of dependencies, goverance, and workflows between all groups — creating friction in monorepos or complexity and silos in multi-repos. Ideally, you want to teams to be able to work independently, but also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. +Historically, building data teams has involved two extremes, building a centralized team or using embedded analysts. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts, allowing embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficulty of this model though is managing the compplexity of dependencies, goverance, and workflows between all groups — creating friction in monorepos or complexity and silos in multi-repos. Ideally, you want to teams to be able to work independently, but also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. -dbt Mesh is not a product, but a pattern, enabled a convergence of several features in dbt Cloud. It’s inspired by dbt’s best practices and ideas from [data mesh](https://en.wikipedia.org/wiki/Data_mesh). These features include: +dbt Mesh is not a product, it is a pattern enabled by a convergence of several features in dbt Cloud. It’s inspired by dbt’s best practices and ideas from [data mesh](https://en.wikipedia.org/wiki/Data_mesh). These features include: -- **Cross-project references** - this is the core feature that enables a mesh structure. `ref`s now work across projects in dbt Cloud-enabled projects on Enterprise plans. -- **Governance** - dbt Cloud’s new governance features allow you to manage access and permissions across projects. +- **Cross-project references** - this is foundational feature that enables a mesh structure. `ref`s now work across dbt Cloud projects on Enterprise plans. +- **Governance** - dbt's new governance features allow you to manage access to your dbt models both within and across projects. - **Groups** - groups allow you to assign models to subsets of models within a project. - - **Access** - access configs allow you to control who can view and reference models both within and across projects. -- **Versioning** - building a dbt Mesh involves treating your data models as stable APIs. To achieve this you need mechanisms to version your models and allow graceful adoption and deprecation of models as they evolve. -- **Contracts** - data contracts set strict expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream consumers. + - **Access** - access configs allow you to control who can reference models. +- **Versioning** - building a dbt Mesh involves treating your data models as stable APIs. Model versioning is the mechanism to allow graceful adoption and deprecation of models as they evolve. +- **Contracts** - data contracts set strict expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream comsumers' data products. ## Who is dbt Mesh for? -dbt Mesh is not for every organization! If you're just starting your dbt journey, don't worry about building a dbt Mesh right away, it increases some meta-complexity around managing your projects that could distract from building initial value in dbt. However, if you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring a dbt Mesh: +dbt Mesh is not for every organization! If you're just starting your dbt journey, don't worry about building a dbt Mesh right away. It increases some meta-complexity around managing your projects that could distract from building initial value in dbt. However, if you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring a dbt Mesh: - **The number of models** in your project is degrading performance and slowing down development. -- Teams have developed **separate workflows** and need to decouple development. +- Teams have developed **separate workflows** and need to decouple development from each other. - **Security and governance** requirements are increasing and would benefit from increased isolation. dbt Cloud is designed to coordinate the features above and simplify the meta-complexities (such as scoped CI and multi-project lineage) to solve for these problems. -## Learning goals +## Learning goals ✏️ - Understand the **purpose and tradeoffs** of building a dbt Mesh. - Develop an intuition for various **dbt Mesh patterns** and how to design a dbt Mesh for your organization. From d37f3d8abcc67d89f0372addcfbf12d51eaabdca Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Fri, 13 Oct 2023 09:28:44 -0500 Subject: [PATCH 152/265] tweak intro --- website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 4bd19c10c7e..4cd11ecea91 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -6,7 +6,7 @@ hoverSnippet: Learn how to get started with dbt Mesh ## What is dbt Mesh? -Historically, building data teams has involved two extremes, building a centralized team or using embedded analysts. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts allows embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficulty of this model is managing the complexity of dependencies, governance, and workflows between all groups — attempting to manage this can often create friction in monorepos or complexity and silos in multiple repos. Ideally, teams should be able to work independently and also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. +Historically, building data teams has involved two extremes: building a centralized team or using embedded analysts across your org. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts allows embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficulty of this model is managing the complexity of dependencies, governance, and workflows between all groups — attempting to manage this can often create friction in monorepos or complexity and silos in multiple repos. Ideally, teams should be able to work independently and also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. dbt Mesh is not a product, it is a pattern enabled by a convergence of several features in dbt Cloud. It’s inspired by dbt’s best practices and ideas from [data mesh](https://en.wikipedia.org/wiki/Data_mesh). These features include: From bc47f9896d1c4804b7b9e2a6ee4315d4485c2b6b Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Fri, 13 Oct 2023 09:40:28 -0500 Subject: [PATCH 153/265] tweak page 2 --- .../how-we-mesh/mesh-2-structures.md | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index e7d213dd2e4..5e34139cc13 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -6,29 +6,32 @@ hoverSnippet: Learn how to get started with dbt Mesh ## Exploring mesh patterns -Building a dbt Mesh is not a one-size-fits-all process. In fact, it's the opposite, it's about customizing your project structure to fit _your_ team and _your_ data. Often we've had to fit the data team and project structure into our company's org chart, or manage everything in one project to handle the constraints of our data and warehouse. dbt Mesh allows us to mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. Let's explore some language for discussing the design of these patterns. +Building a dbt Mesh is not a one-size-fits-all process. In fact, it's the opposite! It's about customizing your project structure to fit _your_ team and _your_ data. Often we've had to fit the data team and project structure into our company's org chart, or manage everything in one project to handle the constraints of our data and warehouse. dbt Mesh allows us to mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. -## Vertical splits +## DAG Splitting -Vertical splits are about separating out layers of transformation in the DAG order. Let's look at some examples. +The first (and perhaps most difficult!) decision when migrating to a mesh is deciding where to draw the line in your DAG to define the interfaces between the functional areas in your project. Let's explore some language for discussing the design of these patterns. +### Vertical splits + +Vertical splits separate out layers of transformation in the DAG order. Let's look at some examples. - **Splitting up staging and mart layers.** Creating a more tightly-controlled, shared set of components that other projects build on but can't edit. - **Isolating earlier models for security and governance requirements.** Separating out and masking PII data so that downstream consumers can't access it is a common use case for a vertical split. -- **Protecting complex or expensive data.** If you have a large or complex model that's expensive to run, you might want to isolate it so that it's safer from accidental selection and easier to debug when it has issues. +- **Protecting complex or expensive data.** If you have a large or complex model that's expensive to run, you might want to isolate it so that it's safer from accidental selection, independently deployable, and easier to debug when it has issues. -## Horizontal splits +### Horizontal splits -Horizonal splits are about splitting up the data based on source or domain. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. Let's consider some possibilites for horizontal splitting. +Horizonal splits separate your DAG based on source or domain. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. Let's consider some possibilites for horizontal splitting. -- **Team consumption patterns.** For example, splitting out marketing data and financial data. +- **Team consumption patterns.** For example, splitting out the marketing team's data flow into a separate project. - **Data from different sources.** For example, click event data and transactional ecommerce data. - **Team workflows.** If two embedded groups operate in different project management tools at different paces, or are staffed differently, you may want to split the projects up so they can move independently. ## Combining these divisions -- **These are not either/or techniques**. You can and should combine them in any way that makes sense for your organization. -- **Pick one type of split and focus on that first**. If you have a hub-and-spoke team topology for example, handle breaking out the central platform project before you split the remainder into domains. Then if you need to break those domains up vertically you can shift back to that. -- **DRY applies to underlying data not just code.** Regardless of your splits, you should not be sourcing the same rows and columns into multiple nodes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface error for conflicts and erodes the single source of truth we're trying to create in our dbt project. +- **These are not either/or techniques**. You should consider both types of divisions, and combine them in any way that makes sense for your organization. +- **Pick one type of split and focus on that first**. If you have a hub-and-spoke team topology for example, handle breaking out the central platform project before you split the remainder into domains. Then if you need to break those domains up horizontally you can focus on that after the fact. +- **DRY applies to underlying data not just code.** Regardless of your splits, you should not be sourcing the same rows and columns into multiple nodes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface area for conflicts and erodes the single source of truth we're trying to create in our dbt projects. ## Monorepo vs multi-repo From 0f1521194f9b1259791fc0779274a87e163d9ac1 Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Fri, 13 Oct 2023 10:37:05 -0500 Subject: [PATCH 154/265] replace the `TODO Dave` with content --- .../how-we-mesh/mesh-2-structures.md | 2 +- .../how-we-mesh/mesh-3-implementation.md | 118 ++++++++++++++++-- 2 files changed, 110 insertions(+), 10 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 5e34139cc13..921ceeece41 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -31,7 +31,7 @@ Horizonal splits separate your DAG based on source or domain. These splits are o - **These are not either/or techniques**. You should consider both types of divisions, and combine them in any way that makes sense for your organization. - **Pick one type of split and focus on that first**. If you have a hub-and-spoke team topology for example, handle breaking out the central platform project before you split the remainder into domains. Then if you need to break those domains up horizontally you can focus on that after the fact. -- **DRY applies to underlying data not just code.** Regardless of your splits, you should not be sourcing the same rows and columns into multiple nodes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface area for conflicts and erodes the single source of truth we're trying to create in our dbt projects. +- **DRY applies to underlying data not just code.** Regardless of your splits, you should not be sourcing the same rows and columns into multiple nodes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface area for conflicts and erodes the single source of truth we're trying to create in our dbt project. ## Monorepo vs multi-repo diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md index ae7f1d120b1..9a532885091 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md @@ -6,10 +6,22 @@ hoverSnippet: Learn how to get started with dbt Mesh Let's examine an outline of steps to start implementing a dbt Mesh in your organization. +## Our example project + +We've provided a set of example projects you can use to explore the topics covered here. If you want to follow along with the next section you can take the baseline [Jaffle Shop](https://github.com/dbt-labs/jaffle-shop) project, and we'll split it into 3 separate projects in a multi-repo dbt Mesh. Note that you'll need to leverage dbt Cloud for this, as cross-project references are powered via dbt Cloud's APIs. + +- **[Platform](https://github.com/dbt-labs/jaffle-shop-mesh-platform)** - containing our centralized staging models. +- **[Marketing](https://github.com/dbt-labs/jaffle-shop-mesh-marketing)** - containing our marketing marts. +- **[Finance](https://github.com/dbt-labs/jaffle-shop-mesh-finance)** - containing our finance marts. + +You can also just read along and look at the already ‘meshified’ versions of the project. + ## Research your current structure +While we've already decided how to break apart our jaffle shop project, the right place to start in the real world is understanding how your project is already being built and deployed: + - **Look at your selectors** to figure out how people are grouping models right now. -- **Examine jobs that you run**, look at how they're defined. +- **Examine jobs that you run**, look at how they are grouping and deploying models. - **Look at your lineage graph** to see how models are connected. - **Talk to teams** about what sort of separation is naturally existing right now. - Are there various domains people are focused on? @@ -18,14 +30,102 @@ Let's examine an outline of steps to start implementing a dbt Mesh in your organ ## Add groups and access -Once you have a sense of some initial groupings, implement group and access permissions within a project. +Once you have a sense of some initial groupings, the first step is to implement **group and access permissions** within a project. + +- First we'll create a [group](/docs/build/groups) to define the owner of a set of models. + +```yml +# in models/__groups.yml + +groups: + - name: marketing + owner: + - name: Ben Jaffleck + email: ben.jaffleck@jaffleshop.com +``` + +- Then, we can add models to that group using the `group:` key in the model's yml entry. + +```yml +# in models/marketing/__models.yml + +models: + - name: fct_marketing_model + group: marketing + - name: stg_marketing_model + group: marketing +``` + +- Once models are added to the group, we will **add [access](/docs/collaborate/govern/model-access) settings to the models** based on their connections between groups, *opting for the most private access that will maintain current functionality*. This means that any model that has *only* relationships to other models in the same group should be `private` , and any model that has cross-group relationships, or is a terminal node in the group DAG should be `protected` so that other parts of the DAG can continue to reference it. + +```yml +# in models/marketing/__models.yml + +models: + - name: fct_marketing_model + group: marketing + access: protected + - name: stg_marketing_model + group: marketing + access: private +``` + +- **Validate these groups by incrementally migrating your jobs** to execute these groups specifically via selection syntax. We would recommend doing this in parallel to your production jobs until you’re sure about them. This will help you feel out if you’ve drawn the lines in the right place. +- If you find yourself **consistently making changes across multiple groups** when you update logic, that’s a sign that **you may want to rethink your groupings**. + +## Split your projects + +- When you’ve **confirmed the right groups**, it's time to split your projects. + - **Do _one_ group at a time**! + - **Do _not_ refactor as you migrate**, however tempting that may be. Focus on getting 1-to-1 parity and log any issues you find in doing the migration for later. Once you’ve fully migrated the project then you can start optimizing it for its new life as part of your mesh. +- Start by splitting your project within the same repository for full git tracking and easy reversion if you need to start from scratch. +- **Move your grouped models into a subfolder**. This will include any model in the selected group, it's associated yml entry, as well as its parent or child resources as appropriate depending on where this group sits in your DAG. + - Note that just like in your dbt project, circular refereneces are not allowed! Project B cannot have parents and children in Project A, for example. +- Copy any macros used by the resources you moved. +- Create a new `packages.yml` file in your subdirectory with the packages that are used by the resources you moved. +- Create a new `dbt_project.yml` file in the subdirectory. +- For any model that has a cross-project dependency (this may be in the files you moved, or in the files that remain in your project): + - update the relevant `{{ ref() }}` function to have two arguments, where the first is the name of the source project and the second is the name of the model: e.g. `{{ ref('jaffle_shop', 'my_upstream_model') }}` + - Update the upstream, cross-project parents’ `access` configs to `public` , ensuring any project can safely `{{ ref() }}` those models. + - We *highly* recommend adding a [model contract](/docs/collaborate/govern/model-contracts) to the upstream models to ensure the data shape is consistent and reliable for your downstream consumers. +- **Create a `dependencies.yml` file** ([docs](/docs/collaborate/govern/project-dependencies)) for the downstream project, declaring the upstream project as a dependency. + +```yml + +# in dependencies.yml +projects: + - name: jaffle_shop +``` + + +## Connecting existing projects via the mesh + +Some organizations may already be coordinating across multiple dbt projects. Most often this is via: + +1. Installing parent projects as dbt packages +2. Using `{{ source() }}` functions to read the outputs of a parent project as inputs to a child project. + +This has a few drawbacks: + +1. If using packages, each project has to include *all* resources from *all* projects in its manifest, slowing down dbt and the development cycle. +2. If using sources, there are breakages in the lineage, as there's no real connection between the parent and child projects. -- TODO: Dave -- **Validate these groups by incrementally migrating your jobs** to be based on them. We would recommend in parallel to your production jobs until you’re sure about them. This will help you feel out if you’ve drawn the lines in the right place. +The migration steps here are much simpler than splitting up a monolith! -## Do the splits +1. If using the `package` method: + 1. In the parent project: + 1. mark all models being imported downstream as `public` and add a model contract. + 2. In the child project: + 1. Remove the package entry from `packages.yml` + 2. Add the upstream project to your `dependencies.yml` + 3. Update the `{{ ref() }}` functions to models from the upstream project to include the project name argument. +1. If using `source` method: + 1. In the parent project: + 1. mark all models being imported downstream as `public` and add a model contract. + 2. In the child project: + 2. Add the upstream project to your `dependencies.yml` + 3. Replace the `{{ source() }}` functions with cross project `{{ ref() }}` functions. + 4. Remove the unnecessary `source` definitions. -- When you’ve **confirmed the right groups** it's time to split the projects out. -- Once again, **use `dbt-meshify`** to pull chunks out into their own projects. - - **Do _one_ group at a time**, using the groups as your selectors. - - **Do _not_ refactor as you migrate**, however tempting that may be. Focus on getting 1-to-1 parity and log any issues you find in doing the migration for later. Once you’ve fully landed the project then you can start optimizing it for its new life as part of the mesh. +**** +We recommend using the `dbt-meshify` [command line tool]() to help you do this. From fde5c98f55c6c51c00144d29afbbcaadf72be1ec Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 16:52:45 +0100 Subject: [PATCH 155/265] fold in jerco's feedback --- website/docs/docs/build/packages.md | 10 ++++++++-- .../docs/collaborate/govern/project-dependencies.md | 11 +++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/build/packages.md b/website/docs/docs/build/packages.md index 6756534fccf..b2fae578bba 100644 --- a/website/docs/docs/build/packages.md +++ b/website/docs/docs/build/packages.md @@ -25,8 +25,14 @@ dbt _packages_ are in fact standalone dbt projects, with models and macros that * It's important to note that defining and installing dbt packages is different from [defining and installing Python packages](/docs/build/python-models#using-pypi-packages) -:::info Project Dependencies versus Packages - Packages are different to Project dependencies, a feature that allows cross-project `ref`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies) for more info about the difference between `dependencies.yml` and `packages.yml`. +:::info `dependencies.yml` has replaced `packages.yml` +Starting from dbt v1.6, `dependencies.yml` has replaced `packages.yml`. It can include both types of dependencies: packages and projects. + +- "Package" dependencies are a way of adding the source code from someone else's dbt project into your own, like a library. +- "Project" dependencies are a different way of building on top of someone else's work in dbt. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies) for more info. +- +You can rename `packages.yml` to `dependencies.yml`, _unless_ you need to use Jinja within your packages specification. For example,adding an environment variable with a git token in a private git package specification. + ::: diff --git a/website/docs/docs/collaborate/govern/project-dependencies.md b/website/docs/docs/collaborate/govern/project-dependencies.md index e2020c95320..1faa2f746a9 100644 --- a/website/docs/docs/collaborate/govern/project-dependencies.md +++ b/website/docs/docs/collaborate/govern/project-dependencies.md @@ -22,15 +22,18 @@ This year, dbt Labs is introducing an expanded notion of `dependencies` across m - **Projects** — A _new_ way to take a dependency on another project. Using a metadata service that runs behind the scenes, dbt Cloud resolves references on-the-fly to public models defined in other projects. You don't need to parse or run those upstream models yourself. Instead, you treat your dependency on those models as an API that returns a dataset. The maintainer of the public model is responsible for guaranteeing its quality and stability. +Starting in dbt v1.6 or higher, `packages.yml` has been renamed to `dependencies.yml`. However, if you need use Jinja within your packages config, such as an environment variable for your private package, you need to keep using `packages.yml` for your packages for now. Refer to [FAQs](#faqs) for more info. + ## Prerequisites In order to add project dependencies and resolve cross-project `ref`, you must: - Have the feature enabled (speak to your account team) -- Use dbt v1.6 for **both** the upstream ("producer") project and the downstream ("consumer") project. +- Use dbt v1.6 or higher for **both** the upstream ("producer") project and the downstream ("consumer") project. - Have a deployment environment in the upstream ("producer") project [that is set to be your production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta) - Have a successful run of the upstream ("producer") project -- Have a multi-tenant or single-tenant [dbt Cloud Enterprise](https://www.getdbt.com/pricing) account -- IS DEPLOYMENT /TENANCY INFO RIGHT? +- Have a multi-tenant or single-tenant [dbt Cloud Enterprise](https://www.getdbt.com/pricing) account (Azure ST is not supported but coming soon) + ## Example As an example, let's say you work on the Marketing team at the Jaffle Shop. The name of your team's project is `jaffle_marketing`: From 66836f046e9a4b290aee721117d58134160fd628 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 13 Oct 2023 16:54:59 +0100 Subject: [PATCH 156/265] clarify --- website/docs/docs/build/packages.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/website/docs/docs/build/packages.md b/website/docs/docs/build/packages.md index b2fae578bba..e3c45823b0b 100644 --- a/website/docs/docs/build/packages.md +++ b/website/docs/docs/build/packages.md @@ -26,12 +26,11 @@ dbt _packages_ are in fact standalone dbt projects, with models and macros that :::info `dependencies.yml` has replaced `packages.yml` -Starting from dbt v1.6, `dependencies.yml` has replaced `packages.yml`. It can include both types of dependencies: packages and projects. - -- "Package" dependencies are a way of adding the source code from someone else's dbt project into your own, like a library. -- "Project" dependencies are a different way of building on top of someone else's work in dbt. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies) for more info. +Starting from dbt v1.6, `dependencies.yml` has replaced `packages.yml`. This file can now contain both types of dependencies: "package" and "project" dependencies. +- "Package" dependencies lets you add source code from someone else's dbt project into your own, like a library. +- "Project" dependencies provide a different way to build on top of someone else's work in dbt. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies) for more info. - -You can rename `packages.yml` to `dependencies.yml`, _unless_ you need to use Jinja within your packages specification. For example,adding an environment variable with a git token in a private git package specification. +You can rename `packages.yml` to `dependencies.yml`, _unless_ you need to use Jinja within your packages specification. This could be necessary, for example, if you want to add an environment variable with a git token in a private git package specification. ::: From 6a5a3c4549ed5b3e5a08d437a78727b3147677c4 Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Fri, 13 Oct 2023 11:23:53 -0500 Subject: [PATCH 157/265] rewrite intro --- .../how-we-mesh/mesh-1-intro.md | 32 +++++++++++-------- .../how-we-mesh/mesh-4-conclusion.md | 9 ------ website/sidebars.js | 1 - 3 files changed, 18 insertions(+), 24 deletions(-) delete mode 100644 website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 4cd11ecea91..3dc9f86c010 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -6,30 +6,34 @@ hoverSnippet: Learn how to get started with dbt Mesh ## What is dbt Mesh? -Historically, building data teams has involved two extremes: building a centralized team or using embedded analysts across your org. More recently, hub-and-spoke models have become popular as a way to balance the tradeoffs: using a centralized platform team _and_ embedded analysts allows embeds to develop domain expertise while the central team focuses on building a strong operational foundation. A major difficulty of this model is managing the complexity of dependencies, governance, and workflows between all groups — attempting to manage this can often create friction in monorepos or complexity and silos in multiple repos. Ideally, teams should be able to work independently and also be able to collaborate; sharing data, code, and best practices. dbt Mesh provides the tooling for teams to finally achieve this. +Organizations of all sizes rely upon dbt to manage their data transformations, from small startups to large enterprises. At scale, it can be challenging to coordinate all the organizational and technical requirements demanded by your stakeholders within the scope of a single dbt project. To date, there also hasn't been a first-class way to effectively manage the dependencies, governance, and workflows between multiple dbt projects. -dbt Mesh is not a product, it is a pattern enabled by a convergence of several features in dbt Cloud. It’s inspired by dbt’s best practices and ideas from [data mesh](https://en.wikipedia.org/wiki/Data_mesh). These features include: +Regardless of your organization's size and complexity, dbt should empower data teams to work independently and collaboratively; sharing data, code, and best practices without sacrificing security or autonomy. dbt Mesh provides the tooling for teams to finally achieve this. -- **Cross-project references** - this is foundational feature that enables a mesh structure. `ref`s now work across dbt Cloud projects on Enterprise plans. +dbt Mesh is not a single product: it is a pattern enabled by a convergence of several features in dbt: + +- **[Cross-project references](/docs/collaborate/govern/project-dependencies#usage)** - this is the foundational feature that enables the multi-project deployments. `{{ ref() }}`s now work across dbt Cloud projects on Enterprise plans. +- **[dbt Explorer](/docs/collaborate/explore-projects)** - dbt Cloud's metadata-powered documentation platform, complete with full, cross-project lineage. - **Governance** - dbt's new governance features allow you to manage access to your dbt models both within and across projects. - - **Groups** - groups allow you to assign models to subsets of models within a project. - - **Access** - access configs allow you to control who can reference models. -- **Versioning** - building a dbt Mesh involves treating your data models as stable APIs. Model versioning is the mechanism to allow graceful adoption and deprecation of models as they evolve. -- **Contracts** - data contracts set strict expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream comsumers' data products. + - **[Groups](/docs/build/groups)** - groups allow you to assign models to subsets of models within a project. + - **[Access](/docs/collaborate/govern/model-access)** - access configs allow you to control who can reference models. +- **[Model Versions](/docs/collaborate/govern/model-versions)** - When coordinating across projects and teams, we recommend treating your data models as stable APIs. Model versioning is the mechanism to allow graceful adoption and deprecation of models as they evolve. +- **[Model Contracts](/docs/collaborate/govern/model-contracts)** - data contracts set explicit expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream comsumers' data products. ## Who is dbt Mesh for? -dbt Mesh is not for every organization! If you're just starting your dbt journey, don't worry about building a dbt Mesh right away. It increases some meta-complexity around managing your projects that could distract from building initial value in dbt. However, if you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring a dbt Mesh: +The multi-project architecture is for organizations with mature, complex transformation workflows in dbt who want to increase the flexibilty and performance of their dbt projects. If you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring this paradigm: - **The number of models** in your project is degrading performance and slowing down development. - Teams have developed **separate workflows** and need to decouple development from each other. - **Security and governance** requirements are increasing and would benefit from increased isolation. -dbt Cloud is designed to coordinate the features above and simplify the meta-complexities (such as scoped CI and multi-project lineage) to solve for these problems. +dbt Cloud is designed to coordinate the features above and simplify the complexity to solve for these problems. + +If you're just starting your dbt journey, don't worry about building a multi-project architecture right away. You can _incrementally_ adopt the features in this guide as you scale. The collection of features work effectively as independent tools. Familiarizing yourself with the tooling and features that make up a multi-project architecture, and how they can apply to your organization will help you make better decisions as you grow. -## Learning goals ✏️ +## Learning goals -- Understand the **purpose and tradeoffs** of building a dbt Mesh. -- Develop an intuition for various **dbt Mesh patterns** and how to design a dbt Mesh for your organization. -- Establish recommended steps to **incrementally adopt** a dbt Mesh pattern in your dbt implementation. -- Offer **tooling** to help you more quickly and easily implement your dbt Mesh plan. +- Understand the **purpose and tradeoffs** of building a multi-project architecture. +- Develop an intuition for various **dbt Mesh patterns** and how to design a multi-project architecture for your organization. +- Establish recommended steps to **incrementally adopt** these patterns in your dbt implementation. diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md b/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md deleted file mode 100644 index d96bbbf741e..00000000000 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-4-conclusion.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Go forth and mesh!" -description: Getting started with dbt Mesh patterns -hoverSnippet: Learn how to get started with dbt Mesh ---- - -dbt Mesh is a powerful new pattern for data transformation. It helps adapt teams and their data towards each other, rather than making arbitrary decisions based on the constraints of either one. By creating alignment between your people and data flows, developers can move faster, analysts can be more productive, and data consumers can be more confident in the data they use. - -It's important to reiterate that you can _incrementally_ adopt the ideas in this guide in your organization as you hit constraints. The collection of features tha enable dbt Mesh work effectively as independent tools, and there's no pressure to adopt this as the _right pattern_ to build with. That said, familiarizing yourself with the tooling and dbt Mesh concepts, as well as thinking through how they can apply to your organization, will help you make better decisions as you grow. We hope this guide has given you a good starting point to do that. diff --git a/website/sidebars.js b/website/sidebars.js index dab84017dd9..819c4d30779 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -952,7 +952,6 @@ const sidebarSettings = { items: [ "guides/best-practices/how-we-mesh/mesh-2-structures", "guides/best-practices/how-we-mesh/mesh-3-implementation", - "guides/best-practices/how-we-mesh/mesh-4-conclusion", ], }, { From c6f75fc29181a2991eb0f46f941448dbbd3bf2e0 Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Fri, 13 Oct 2023 12:25:23 -0500 Subject: [PATCH 158/265] updated mesh 2 --- .../how-we-mesh/mesh-2-structures.md | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 921ceeece41..38b1f96f12b 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -1,42 +1,52 @@ --- -title: "Deciding how to structure your mesh" +title: Deciding how to structure your mesh description: Getting started with dbt Mesh patterns hoverSnippet: Learn how to get started with dbt Mesh --- - ## Exploring mesh patterns -Building a dbt Mesh is not a one-size-fits-all process. In fact, it's the opposite! It's about customizing your project structure to fit _your_ team and _your_ data. Often we've had to fit the data team and project structure into our company's org chart, or manage everything in one project to handle the constraints of our data and warehouse. dbt Mesh allows us to mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. +When adopting a multi-project architecture, where do we draw the lines between our projects? + +How should we organize our data workflows in a world where instead of having a single dbt DAG, we have multiple projects speaking to each other, each comprised of their own DAG? + +Adopting the dbt Mesh pattern is not a one-size-fits-all process. In fact, it's the opposite! It's about customizing your project structure to fit _your_ team and _your_ data. Now we can mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. + +While there is not a single best way to implement this pattern, there are some common decisions points that will be helpful for you to consider. + +At a high level you’ll need to decide: + +- Where to draw the lines between your dbt Projects -- ie how do you determine where to split your DAG and which models go in which project? +- How to manage your code -- do you want multiple dbt Projects living in the same repository (mono-repo) or do you want to have multiple repos with one repo per project? + +## Define your project interfaces by splitting your DAG -## DAG Splitting +The first (and perhaps most difficult!) decision when migrating to a multi-project architecture is deciding where to draw the line in your DAG to define the interfaces between your projects. Let's explore some language for discussing the design of these patterns. -The first (and perhaps most difficult!) decision when migrating to a mesh is deciding where to draw the line in your DAG to define the interfaces between the functional areas in your project. Let's explore some language for discussing the design of these patterns. ### Vertical splits -Vertical splits separate out layers of transformation in the DAG order. Let's look at some examples. +Vertical splits separate out layers of transformation in DAG order. Let's look at some examples. -- **Splitting up staging and mart layers.** Creating a more tightly-controlled, shared set of components that other projects build on but can't edit. -- **Isolating earlier models for security and governance requirements.** Separating out and masking PII data so that downstream consumers can't access it is a common use case for a vertical split. -- **Protecting complex or expensive data.** If you have a large or complex model that's expensive to run, you might want to isolate it so that it's safer from accidental selection, independently deployable, and easier to debug when it has issues. +- **Splitting up staging and mart layers.** to create a more tightly-controlled, shared set of components that other projects build on but can't edit. +- **Isolating earlier models for security and governance requirements.** to separate out and mask PII data so that downstream consumers can't access it is a common use case for a vertical split. +- **Protecting complex or expensive data.** to isolate large or complex models that are expensive to run so that they are safe from accidental selection, independently deployable, and easier to debug when they have issues. ### Horizontal splits -Horizonal splits separate your DAG based on source or domain. These splits are often based around the shape and size of the data and how it's used, rather than the security or governance requirements. Let's consider some possibilites for horizontal splitting. +Horizonal splits separate your DAG based on source or domain. These splits are often based around the shape and size of the data and how it's used. Let's consider some possibilites for horizontal splitting. - **Team consumption patterns.** For example, splitting out the marketing team's data flow into a separate project. -- **Data from different sources.** For example, click event data and transactional ecommerce data. -- **Team workflows.** If two embedded groups operate in different project management tools at different paces, or are staffed differently, you may want to split the projects up so they can move independently. +- **Data from different sources.** For example, clickstream event data and transactional ecommerce data may need to be modeled independently of each other. +- **Team workflows.** For example, if two embedded groups who operate at different paces, you may want to split the projects up so they can move independently. -## Combining these divisions +### Combining these strategies -- **These are not either/or techniques**. You should consider both types of divisions, and combine them in any way that makes sense for your organization. +- **These are not either/or techniques**. You should consider both types of splits, and combine them in any way that makes sense for your organization. - **Pick one type of split and focus on that first**. If you have a hub-and-spoke team topology for example, handle breaking out the central platform project before you split the remainder into domains. Then if you need to break those domains up horizontally you can focus on that after the fact. -- **DRY applies to underlying data not just code.** Regardless of your splits, you should not be sourcing the same rows and columns into multiple nodes. Working within a mesh structure it becomes increasingly important that we don’t duplicate work, which creates surface area for conflicts and erodes the single source of truth we're trying to create in our dbt project. +- **DRY applies to underlying data not just code.** Regardless of your strategy, you should not be sourcing the same rows and columns into multiple nodes. When working within a mesh pattern it becomes increasingly important that we don't duplicate logic or data. -## Monorepo vs multi-repo +## Determine your git strategy -A dbt Mesh can exist as multiple projects in a single repo (monorepo) or as multiple projects in their own repositories (multi-repo). +A multi-project architecture can exist in a single repo (monorepo) or as multiple projects in their own repositories (multi-repo). -- **Monorepos are often easier to get started with**, but can become unwieldy as the number of models and teams grow. -- If you're a **smaller team** looking primarily to speed up and simplify development, a **monorepo** is likely the right choice. -- If you're a **larger team with multiple groups**, and need to decouple projects for security and enablement of different development styles and rhythms, a **multi-repo setup** is your best bet. +- If you're a **smaller team** looking primarily to speed up and simplify development, a **monorepo** is likely the right choice, but can become unwieldy as the number of projects, models and contributors grow. +- If you’re a **larger team with multiple groups**, and need to decouple projects for security and enablement of different development styles and rhythms, a **multi-repo setup** is your best bet. From 0d08cf76486d52ea537a40752131d01d63c7b8f0 Mon Sep 17 00:00:00 2001 From: rpourzand Date: Fri, 13 Oct 2023 10:45:26 -0700 Subject: [PATCH 159/265] Update tableau.md updated week number --- website/docs/docs/use-dbt-semantic-layer/tableau.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index 359b16682a9..2c64c9b76ae 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -57,11 +57,11 @@ Visit the [Tableau documentation](https://help.tableau.com/current/pro/desktop/e The following Tableau features aren't supported at this time, however, we may support some of this functionality in a future release: 1. Updating the data source page -2. Using "Extract" Mode - - Including `week` extraction +2. Using "Extract" mode to view yur data 3. Unioning Tables 4. Writing Custom SQL 5. Table Extensions 6. Cross Database Joins 7. All functions in Analysis --> Create Calculated Field 8. Filtering on a Date Part time dimension for a Cumulative metric type +9. Changing your date dimension to use "Week Number" From 14960125c79b76e04030d45c28813edb028df6a3 Mon Sep 17 00:00:00 2001 From: Dave Connors Date: Fri, 13 Oct 2023 12:46:03 -0500 Subject: [PATCH 160/265] tweaks --- .../how-we-mesh/mesh-3-implementation.md | 81 +++++++++---------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md index 9a532885091..bf866aedeb0 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md @@ -4,25 +4,11 @@ description: Getting started with dbt Mesh patterns hoverSnippet: Learn how to get started with dbt Mesh --- -Let's examine an outline of steps to start implementing a dbt Mesh in your organization. +As mentioned before, the key decision to migrating to a multi-project architecture is understanding how your project is already being grouped, built, and deployed. We can use this information to inform our decision to split our project apart. -## Our example project - -We've provided a set of example projects you can use to explore the topics covered here. If you want to follow along with the next section you can take the baseline [Jaffle Shop](https://github.com/dbt-labs/jaffle-shop) project, and we'll split it into 3 separate projects in a multi-repo dbt Mesh. Note that you'll need to leverage dbt Cloud for this, as cross-project references are powered via dbt Cloud's APIs. - -- **[Platform](https://github.com/dbt-labs/jaffle-shop-mesh-platform)** - containing our centralized staging models. -- **[Marketing](https://github.com/dbt-labs/jaffle-shop-mesh-marketing)** - containing our marketing marts. -- **[Finance](https://github.com/dbt-labs/jaffle-shop-mesh-finance)** - containing our finance marts. - -You can also just read along and look at the already ‘meshified’ versions of the project. - -## Research your current structure - -While we've already decided how to break apart our jaffle shop project, the right place to start in the real world is understanding how your project is already being built and deployed: - -- **Look at your selectors** to figure out how people are grouping models right now. -- **Examine jobs that you run**, look at how they are grouping and deploying models. -- **Look at your lineage graph** to see how models are connected. +- **Examine your jobs** which sets of models are most often built together? +- **Look at your lineage graph** how are models connected? +- **Look at your selectors** defined in `selectors.yml` - how are people already defining resource groups? - **Talk to teams** about what sort of separation is naturally existing right now. - Are there various domains people are focused on? - Are there various sizes, shapes, and sources of data that get handled separately (such as click event data)? @@ -30,7 +16,7 @@ While we've already decided how to break apart our jaffle shop project, the righ ## Add groups and access -Once you have a sense of some initial groupings, the first step is to implement **group and access permissions** within a project. +Once you have a sense of some initial groupings, the first step is to implement **group and access permissions** within a single project. - First we'll create a [group](/docs/build/groups) to define the owner of a set of models. @@ -71,24 +57,20 @@ models: ``` - **Validate these groups by incrementally migrating your jobs** to execute these groups specifically via selection syntax. We would recommend doing this in parallel to your production jobs until you’re sure about them. This will help you feel out if you’ve drawn the lines in the right place. -- If you find yourself **consistently making changes across multiple groups** when you update logic, that’s a sign that **you may want to rethink your groupings**. +- If you find yourself **consistently making changes across multiple groups** when you update logic, that’s a sign that **you may want to rethink your groups**. ## Split your projects -- When you’ve **confirmed the right groups**, it's time to split your projects. - - **Do _one_ group at a time**! - - **Do _not_ refactor as you migrate**, however tempting that may be. Focus on getting 1-to-1 parity and log any issues you find in doing the migration for later. Once you’ve fully migrated the project then you can start optimizing it for its new life as part of your mesh. -- Start by splitting your project within the same repository for full git tracking and easy reversion if you need to start from scratch. -- **Move your grouped models into a subfolder**. This will include any model in the selected group, it's associated yml entry, as well as its parent or child resources as appropriate depending on where this group sits in your DAG. - - Note that just like in your dbt project, circular refereneces are not allowed! Project B cannot have parents and children in Project A, for example. -- Copy any macros used by the resources you moved. -- Create a new `packages.yml` file in your subdirectory with the packages that are used by the resources you moved. -- Create a new `dbt_project.yml` file in the subdirectory. -- For any model that has a cross-project dependency (this may be in the files you moved, or in the files that remain in your project): - - update the relevant `{{ ref() }}` function to have two arguments, where the first is the name of the source project and the second is the name of the model: e.g. `{{ ref('jaffle_shop', 'my_upstream_model') }}` - - Update the upstream, cross-project parents’ `access` configs to `public` , ensuring any project can safely `{{ ref() }}` those models. - - We *highly* recommend adding a [model contract](/docs/collaborate/govern/model-contracts) to the upstream models to ensure the data shape is consistent and reliable for your downstream consumers. -- **Create a `dependencies.yml` file** ([docs](/docs/collaborate/govern/project-dependencies)) for the downstream project, declaring the upstream project as a dependency. +1. **Move your grouped models into a subfolder**. This will include any model in the selected group, it's associated yml entry, as well as its parent or child resources as appropriate depending on where this group sits in your DAG. + 1. Note that just like in your dbt project, circular refereneces are not allowed! Project B cannot have parents and children in Project A, for example. +2. **Create a new `dbt_project.yml` file** in the subdirectory. +3. **Copy any macros** used by the resources you moved. +4. **Create a new `packages.yml` file** in your subdirectory with the packages that are used by the resources you moved. +5. **Update `{{ ref }}` functions** — For any model that has a cross-project dependency (this may be in the files you moved, or in the files that remain in your project): + 1. Update the `{{ ref() }}` function to have two arguments, where the first is the name of the source project and the second is the name of the model: e.g. `{{ ref('jaffle_shop', 'my_upstream_model') }}` + 2. Update the upstream, cross-project parents’ `access` configs to `public` , ensuring any project can safely `{{ ref() }}` those models. + 3. We *highly* recommend adding a [model contract](/docs/collaborate/govern/model-contracts) to the upstream models to ensure the data shape is consistent and reliable for your downstream consumers. +6. **Create a `dependencies.yml` file** ([docs](/docs/collaborate/govern/project-dependencies)) for the downstream project, declaring the upstream project as a dependency. ```yml @@ -97,8 +79,15 @@ projects: - name: jaffle_shop ``` +### Best practices + +- When you’ve **confirmed the right groups**, it's time to split your projects. + - **Do *one* group at a time**! + - **Do *not* refactor as you migrate**, however tempting that may be. Focus on getting 1-to-1 parity and log any issues you find in doing the migration for later. Once you’ve fully migrated the project then you can start optimizing it for its new life as part of your mesh. +- Start by splitting your project within the same repository for full git tracking and easy reversion if you need to start from scratch. + -## Connecting existing projects via the mesh +## Connecting existing projects Some organizations may already be coordinating across multiple dbt projects. Most often this is via: @@ -114,7 +103,7 @@ The migration steps here are much simpler than splitting up a monolith! 1. If using the `package` method: 1. In the parent project: - 1. mark all models being imported downstream as `public` and add a model contract. + 1. mark all models being referenced downstream as `public` and add a model contract. 2. In the child project: 1. Remove the package entry from `packages.yml` 2. Add the upstream project to your `dependencies.yml` @@ -123,9 +112,19 @@ The migration steps here are much simpler than splitting up a monolith! 1. In the parent project: 1. mark all models being imported downstream as `public` and add a model contract. 2. In the child project: - 2. Add the upstream project to your `dependencies.yml` - 3. Replace the `{{ source() }}` functions with cross project `{{ ref() }}` functions. - 4. Remove the unnecessary `source` definitions. + 1. Add the upstream project to your `dependencies.yml` + 2. Replace the `{{ source() }}` functions with cross project `{{ ref() }}` functions. + 3. Remove the unnecessary `source` definitions. + +## Additional Resources +### Our example projects + +We've provided a set of example projects you can use to explore the topics covered here. We've split our [Jaffle Shop](https://github.com/dbt-labs/jaffle-shop) project into 3 separate projects in a multi-repo dbt Mesh. Note that you'll need to leverage dbt Cloud to use multi-project architecture, as cross-project references are powered via dbt Cloud's APIs. + +- **[Platform](https://github.com/dbt-labs/jaffle-shop-mesh-platform)** - containing our centralized staging models. +- **[Marketing](https://github.com/dbt-labs/jaffle-shop-mesh-marketing)** - containing our marketing marts. +- **[Finance](https://github.com/dbt-labs/jaffle-shop-mesh-finance)** - containing our finance marts. + +### dbt-meshify -**** -We recommend using the `dbt-meshify` [command line tool]() to help you do this. +We recommend using the `dbt-meshify` [command line tool]() to help you do this. This comes with CLI operations to automate most of the above steps. From 04987dc70ccf04b6c6e5c831346fab2b291c293c Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 13:59:23 -0400 Subject: [PATCH 161/265] update wording --- .../docs/guides/best-practices/how-we-mesh/mesh-2-structures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 38b1f96f12b..c263958d37b 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -46,7 +46,7 @@ Horizonal splits separate your DAG based on source or domain. These splits are o ## Determine your git strategy -A multi-project architecture can exist in a single repo (monorepo) or as multiple projects in their own repositories (multi-repo). +A multi-project architecture can exist in a single repo (monorepo) or as multiple projects, each in their own repositories (multi-repo). - If you're a **smaller team** looking primarily to speed up and simplify development, a **monorepo** is likely the right choice, but can become unwieldy as the number of projects, models and contributors grow. - If you’re a **larger team with multiple groups**, and need to decouple projects for security and enablement of different development styles and rhythms, a **multi-repo setup** is your best bet. From 6d82874240decf79dbd6c49880b88f8d44addf14 Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 14:00:23 -0400 Subject: [PATCH 162/265] update wording --- .../docs/guides/best-practices/how-we-mesh/mesh-2-structures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index c263958d37b..826f92b38a7 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -46,7 +46,7 @@ Horizonal splits separate your DAG based on source or domain. These splits are o ## Determine your git strategy -A multi-project architecture can exist in a single repo (monorepo) or as multiple projects, each in their own repositories (multi-repo). +A multi-project architecture can exist in a single repo (monorepo) or as multiple projects, with each one being in their own repository (multi-repo). - If you're a **smaller team** looking primarily to speed up and simplify development, a **monorepo** is likely the right choice, but can become unwieldy as the number of projects, models and contributors grow. - If you’re a **larger team with multiple groups**, and need to decouple projects for security and enablement of different development styles and rhythms, a **multi-repo setup** is your best bet. From 1c06f4af767bca31a37b4a692b3199eb664cd6cb Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 14:09:04 -0400 Subject: [PATCH 163/265] update mesh to dbt Mesh --- .../docs/guides/best-practices/how-we-mesh/mesh-2-structures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 826f92b38a7..caebc1b025b 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -1,5 +1,5 @@ --- -title: Deciding how to structure your mesh +title: Deciding how to structure your dbt Mesh description: Getting started with dbt Mesh patterns hoverSnippet: Learn how to get started with dbt Mesh --- From 811f602deb51cd7eb8c2dd182ea595dfe3fb37e5 Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 15:51:14 -0400 Subject: [PATCH 164/265] Update website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 3dc9f86c010..029cd7a0cd1 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -15,7 +15,7 @@ dbt Mesh is not a single product: it is a pattern enabled by a convergence of se - **[Cross-project references](/docs/collaborate/govern/project-dependencies#usage)** - this is the foundational feature that enables the multi-project deployments. `{{ ref() }}`s now work across dbt Cloud projects on Enterprise plans. - **[dbt Explorer](/docs/collaborate/explore-projects)** - dbt Cloud's metadata-powered documentation platform, complete with full, cross-project lineage. - **Governance** - dbt's new governance features allow you to manage access to your dbt models both within and across projects. - - **[Groups](/docs/build/groups)** - groups allow you to assign models to subsets of models within a project. + - **[Groups](/docs/collaborate/govern/model-access#groups)** - groups allow you to assign models to subsets within a project. - **[Access](/docs/collaborate/govern/model-access)** - access configs allow you to control who can reference models. - **[Model Versions](/docs/collaborate/govern/model-versions)** - When coordinating across projects and teams, we recommend treating your data models as stable APIs. Model versioning is the mechanism to allow graceful adoption and deprecation of models as they evolve. - **[Model Contracts](/docs/collaborate/govern/model-contracts)** - data contracts set explicit expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream comsumers' data products. From 25da30db2972611b4b4736e4a90a7317a3627aed Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 15:52:59 -0400 Subject: [PATCH 165/265] Apply suggestions from code review Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../guides/best-practices/how-we-mesh/mesh-1-intro.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 029cd7a0cd1..8f991f96372 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -16,15 +16,15 @@ dbt Mesh is not a single product: it is a pattern enabled by a convergence of se - **[dbt Explorer](/docs/collaborate/explore-projects)** - dbt Cloud's metadata-powered documentation platform, complete with full, cross-project lineage. - **Governance** - dbt's new governance features allow you to manage access to your dbt models both within and across projects. - **[Groups](/docs/collaborate/govern/model-access#groups)** - groups allow you to assign models to subsets within a project. - - **[Access](/docs/collaborate/govern/model-access)** - access configs allow you to control who can reference models. -- **[Model Versions](/docs/collaborate/govern/model-versions)** - When coordinating across projects and teams, we recommend treating your data models as stable APIs. Model versioning is the mechanism to allow graceful adoption and deprecation of models as they evolve. -- **[Model Contracts](/docs/collaborate/govern/model-contracts)** - data contracts set explicit expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream comsumers' data products. + - **[Access](/docs/collaborate/govern/model-access#access-modifiers)** - access configs allow you to control who can reference models. +- **[Model Versions](/docs/collaborate/govern/model-versions)** - when coordinating across projects and teams, we recommend treating your data models as stable APIs. Model versioning is the mechanism to allow graceful adoption and deprecation of models as they evolve. +- **[Model Contracts](/docs/collaborate/govern/model-contracts)** - data contracts set explicit expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream consumers' data products. ## Who is dbt Mesh for? -The multi-project architecture is for organizations with mature, complex transformation workflows in dbt who want to increase the flexibilty and performance of their dbt projects. If you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring this paradigm: +The multi-project architecture helps organizations with mature, complex transformation workflows in dbt increase the flexibility and performance of their dbt projects. If you're already using dbt and your project has started to experience any of the following, you're likely ready to start exploring this paradigm: -- **The number of models** in your project is degrading performance and slowing down development. +- The **number of models** in your project is degrading performance and slowing down development. - Teams have developed **separate workflows** and need to decouple development from each other. - **Security and governance** requirements are increasing and would benefit from increased isolation. From 4ae3be4cb3ba969410fb5ec6d79ebb4b298bbb88 Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 15:59:27 -0400 Subject: [PATCH 166/265] clean up wording --- .../best-practices/how-we-mesh/mesh-2-structures.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index caebc1b025b..4d904515f00 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -11,11 +11,11 @@ How should we organize our data workflows in a world where instead of having a s Adopting the dbt Mesh pattern is not a one-size-fits-all process. In fact, it's the opposite! It's about customizing your project structure to fit _your_ team and _your_ data. Now we can mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. -While there is not a single best way to implement this pattern, there are some common decisions points that will be helpful for you to consider. +While there is not a single best way to implement this pattern, there are some common decision points that will be helpful for you to consider. -At a high level you’ll need to decide: +At a high level, you’ll need to decide: -- Where to draw the lines between your dbt Projects -- ie how do you determine where to split your DAG and which models go in which project? +- Where to draw the lines between your dbt Projects -- i.e. how do you determine where to split your DAG and which models go in which project? - How to manage your code -- do you want multiple dbt Projects living in the same repository (mono-repo) or do you want to have multiple repos with one repo per project? ## Define your project interfaces by splitting your DAG @@ -32,17 +32,17 @@ Vertical splits separate out layers of transformation in DAG order. Let's look a ### Horizontal splits -Horizonal splits separate your DAG based on source or domain. These splits are often based around the shape and size of the data and how it's used. Let's consider some possibilites for horizontal splitting. +Horizontal splits separate your DAG based on source or domain. These splits are often based around the shape and size of the data and how it's used. Let's consider some possibilities for horizontal splitting. - **Team consumption patterns.** For example, splitting out the marketing team's data flow into a separate project. - **Data from different sources.** For example, clickstream event data and transactional ecommerce data may need to be modeled independently of each other. -- **Team workflows.** For example, if two embedded groups who operate at different paces, you may want to split the projects up so they can move independently. +- **Team workflows.** For example, if two embedded groups operate at different paces, you may want to split the projects up so they can move independently. ### Combining these strategies - **These are not either/or techniques**. You should consider both types of splits, and combine them in any way that makes sense for your organization. - **Pick one type of split and focus on that first**. If you have a hub-and-spoke team topology for example, handle breaking out the central platform project before you split the remainder into domains. Then if you need to break those domains up horizontally you can focus on that after the fact. -- **DRY applies to underlying data not just code.** Regardless of your strategy, you should not be sourcing the same rows and columns into multiple nodes. When working within a mesh pattern it becomes increasingly important that we don't duplicate logic or data. +- **DRY applies to underlying data, not just code.** Regardless of your strategy, you should not be sourcing the same rows and columns into multiple nodes. When working within a mesh pattern it becomes increasingly important that we don't duplicate logic or data. ## Determine your git strategy From cae5f847cca7acfd6f30454f9e65f6155cecc8cc Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 16:06:40 -0400 Subject: [PATCH 167/265] clean up wording on third page --- .../how-we-mesh/mesh-3-implementation.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md index bf866aedeb0..4561a6be1b7 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md @@ -4,10 +4,10 @@ description: Getting started with dbt Mesh patterns hoverSnippet: Learn how to get started with dbt Mesh --- -As mentioned before, the key decision to migrating to a multi-project architecture is understanding how your project is already being grouped, built, and deployed. We can use this information to inform our decision to split our project apart. +As mentioned before, the key decision in migrating to a multi-project architecture is understanding how your project is already being grouped, built, and deployed. We can use this information to inform our decision to split our project apart. -- **Examine your jobs** which sets of models are most often built together? -- **Look at your lineage graph** how are models connected? +- **Examine your jobs** - which sets of models are most often built together? +- **Look at your lineage graph** - how are models connected? - **Look at your selectors** defined in `selectors.yml` - how are people already defining resource groups? - **Talk to teams** about what sort of separation is naturally existing right now. - Are there various domains people are focused on? @@ -30,7 +30,7 @@ groups: email: ben.jaffleck@jaffleshop.com ``` -- Then, we can add models to that group using the `group:` key in the model's yml entry. +- Then, we can add models to that group using the `group:` key in the model's YAML entry. ```yml # in models/marketing/__models.yml @@ -61,7 +61,7 @@ models: ## Split your projects -1. **Move your grouped models into a subfolder**. This will include any model in the selected group, it's associated yml entry, as well as its parent or child resources as appropriate depending on where this group sits in your DAG. +1. **Move your grouped models into a subfolder**. This will include any model in the selected group, it's associated YAML entry, as well as its parent or child resources as appropriate depending on where this group sits in your DAG. 1. Note that just like in your dbt project, circular refereneces are not allowed! Project B cannot have parents and children in Project A, for example. 2. **Create a new `dbt_project.yml` file** in the subdirectory. 3. **Copy any macros** used by the resources you moved. From 311eb598ecba7f9a1eca783a6801eca9c8030765 Mon Sep 17 00:00:00 2001 From: Jason Ganz Date: Fri, 13 Oct 2023 16:27:11 -0400 Subject: [PATCH 168/265] Apply suggestions from code review Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../best-practices/how-we-mesh/mesh-2-structures.md | 12 ++++++------ .../how-we-mesh/mesh-3-implementation.md | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 4d904515f00..937515954af 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -5,11 +5,11 @@ hoverSnippet: Learn how to get started with dbt Mesh --- ## Exploring mesh patterns -When adopting a multi-project architecture, where do we draw the lines between our projects? +When adopting a multi-project architecture, where do you draw the lines between projects? -How should we organize our data workflows in a world where instead of having a single dbt DAG, we have multiple projects speaking to each other, each comprised of their own DAG? +How should you organize data workflows in a world where instead of having a single dbt DAG, you have multiple projects speaking to each other, each comprised of their own DAG? -Adopting the dbt Mesh pattern is not a one-size-fits-all process. In fact, it's the opposite! It's about customizing your project structure to fit _your_ team and _your_ data. Now we can mold our organizational knowledge graph to our organizational people graph, bringing people and data closer together rather than compromising one for the other. +Adopting the dbt Mesh pattern is not a one-size-fits-all process. In fact, it's the opposite! It's about customizing your project structure to fit _your_ team and _your_ data. Now you can mold your organizational knowledge graph to your organizational people graph, bringing people and data closer together rather than compromising one for the other. While there is not a single best way to implement this pattern, there are some common decision points that will be helpful for you to consider. @@ -26,9 +26,9 @@ The first (and perhaps most difficult!) decision when migrating to a multi-proje Vertical splits separate out layers of transformation in DAG order. Let's look at some examples. -- **Splitting up staging and mart layers.** to create a more tightly-controlled, shared set of components that other projects build on but can't edit. -- **Isolating earlier models for security and governance requirements.** to separate out and mask PII data so that downstream consumers can't access it is a common use case for a vertical split. -- **Protecting complex or expensive data.** to isolate large or complex models that are expensive to run so that they are safe from accidental selection, independently deployable, and easier to debug when they have issues. +- **Splitting up staging and mart layers** to create a more tightly-controlled, shared set of components that other projects build on but can't edit. +- **Isolating earlier models for security and governance requirements** to separate out and mask PII data so that downstream consumers can't access it is a common use case for a vertical split. +- **Protecting complex or expensive data** to isolate large or complex models that are expensive to run so that they are safe from accidental selection, independently deployable, and easier to debug when they have issues. ### Horizontal splits diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md index 4561a6be1b7..cfbbc7a1f28 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-3-implementation.md @@ -8,17 +8,17 @@ As mentioned before, the key decision in migrating to a multi-project architectu - **Examine your jobs** - which sets of models are most often built together? - **Look at your lineage graph** - how are models connected? -- **Look at your selectors** defined in `selectors.yml` - how are people already defining resource groups? -- **Talk to teams** about what sort of separation is naturally existing right now. +- **Look at your selectors** defined in `selectors.yml` - how do people already define resource groups? +- **Talk to teams** about what sort of separation naturally exists right now. - Are there various domains people are focused on? - Are there various sizes, shapes, and sources of data that get handled separately (such as click event data)? - Are there people focused on separate levels of transformation, such as landing and staging data or building marts? ## Add groups and access -Once you have a sense of some initial groupings, the first step is to implement **group and access permissions** within a single project. +Once you have a sense of some initial groupings, you can first implement **group and access permissions** within a single project. -- First we'll create a [group](/docs/build/groups) to define the owner of a set of models. +- First you can create a [group](/docs/build/groups) to define the owner of a set of models. ```yml # in models/__groups.yml @@ -42,7 +42,7 @@ models: group: marketing ``` -- Once models are added to the group, we will **add [access](/docs/collaborate/govern/model-access) settings to the models** based on their connections between groups, *opting for the most private access that will maintain current functionality*. This means that any model that has *only* relationships to other models in the same group should be `private` , and any model that has cross-group relationships, or is a terminal node in the group DAG should be `protected` so that other parts of the DAG can continue to reference it. +- Once you've added models to the group, you can **add [access](/docs/collaborate/govern/model-access) settings to the models** based on their connections between groups, *opting for the most private access that will maintain current functionality*. This means that any model that has *only* relationships to other models in the same group should be `private` , and any model that has cross-group relationships, or is a terminal node in the group DAG should be `protected` so that other parts of the DAG can continue to reference it. ```yml # in models/marketing/__models.yml From 939f6fe1aad2ed9356811cf2faeeb931816da714 Mon Sep 17 00:00:00 2001 From: rpourzand Date: Fri, 13 Oct 2023 14:19:44 -0700 Subject: [PATCH 169/265] Update tableau.md adding connector file!! --- website/docs/docs/use-dbt-semantic-layer/tableau.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index 2c64c9b76ae..131d9471cb1 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -22,7 +22,7 @@ The Tableau integration allows you to use worksheets to query the Semantic Layer ## Installing -1. Install this file () locally and add it to your default folder: +1. Download our [connector file](https://github.com/dbt-labs/semantic-layer-tableau-connector/releases/download/v1.0.0/dbt_semantic_layer.taco) locally and add it to your default folder: - Windows: `C:\Users\\[Windows User]\Documents\My Tableau Repository\Connectors` - Mac: `/Users/[user]/Documents/My Tableau Repository/Connectors` - Linux: `/opt/tableau/connectors` @@ -31,7 +31,7 @@ The Tableau integration allows you to use worksheets to query the Semantic Layer - Mac: `~/Library/Tableau/Drivers` - Linux: ` /opt/tableau/tableau_driver/jdbc` 3. Open Tableau Desktop and find the connector in the left-hand side called **dbt Semantic Layer by dbt Labs** -4. Connect with your Host, Environment ID, and service token information that's provided to you in your dbt Cloud Semantic Layer configuration. +4. Connect with your Host, Environment ID, and Service Token information that's provided to you in your dbt Cloud Semantic Layer configuration. ## Using the integration From 8486188855f4370126c5ae00be4f8159f000d61c Mon Sep 17 00:00:00 2001 From: rpourzand Date: Fri, 13 Oct 2023 14:39:22 -0700 Subject: [PATCH 170/265] Update tableau.md updating with authentication instructions --- website/docs/docs/use-dbt-semantic-layer/tableau.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/tableau.md b/website/docs/docs/use-dbt-semantic-layer/tableau.md index 131d9471cb1..31198d4d93c 100644 --- a/website/docs/docs/use-dbt-semantic-layer/tableau.md +++ b/website/docs/docs/use-dbt-semantic-layer/tableau.md @@ -16,7 +16,7 @@ The Tableau integration allows you to use worksheets to query the Semantic Layer 1. You must have [Tableau Desktop](https://www.tableau.com/en-gb/products/desktop) installed 2. Authenticate with either Tableau Server or Tableau Cloud -3. You need either a [JDBC URL](/docs/dbt-cloud-apis/sl-jdbc#connection-parameters) or a dbt Cloud account's [Environment ID](/docs/use-dbt-semantic-layer/setup-sl#set-up-dbt-semantic-layer) and [service token](/docs/dbt-cloud-apis/service-tokens) to log in. This account should be set up with the dbt Semantic Layer. +3. You need your dbt Cloud host, [Environment ID](/docs/use-dbt-semantic-layer/setup-sl#set-up-dbt-semantic-layer) and [service token](/docs/dbt-cloud-apis/service-tokens) to log in. This account should be set up with the dbt Semantic Layer. 4. Have a dbt Cloud Team or Enterprise [account](https://www.getdbt.com/pricing) and multi-tenant [deployment](/docs/cloud/about-cloud/regions-ip-addresses). (Single-Tenant coming soon) From b48cf3d23d7c95a8cc89d1d693606dafcc91701c Mon Sep 17 00:00:00 2001 From: "Leona B. Campbell" <3880403+runleonarun@users.noreply.github.com> Date: Fri, 13 Oct 2023 15:25:10 -0700 Subject: [PATCH 171/265] Update website/docs/docs/build/about-metricflow.md --- website/docs/docs/build/about-metricflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 9a52cf5a6ea..1cb7489c0ca 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -21,7 +21,7 @@ Before you start, consider the following guidelines: MetricFlow is a SQL query generation tool designed to streamline metric creation across different data dimensions for diverse business needs. - It operates through YAML files, where a semantic graph links language to data. This graph comprises [semantic models](/docs/build/semantic-models) (data entry points) and [metrics](/docs/build/metrics-overview) (functions for creating quantitative indicators). -- MetricFlow is a [BSL package](https://github.com/dbt-labs/metricflow) code is source available, and compatible with dbt v1.6 and higher. Data practitioners and enthusiasts are highly encouraged to contribute. +- MetricFlow is a [BSL package](https://github.com/dbt-labs/metricflow) with code source available, and compatible with dbt v1.6 and higher. Data practitioners and enthusiasts are highly encouraged to contribute. - As a part of the dbt Semantic Layer, MetricFlow empowers organizations to define metrics using YAML abstractions. - To query metric dimensions, dimension values, and validate configurations, use [MetricFlow commands](/docs/build/metricflow-commands). From 61e855519d0fa488f06be32776aae83af4cb9809 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:29:36 +0100 Subject: [PATCH 172/265] Update semantic-layer-2-setup.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- .../how-we-build-our-metrics/semantic-layer-2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md index 9674aa936e5..4e9aae42fbd 100644 --- a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md +++ b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md @@ -13,7 +13,7 @@ git clone git@github.com:dbt-labs/jaffle-sl-template.git cd path/to/project ``` -Next before we start writing code, we'll need to install MetricFlow as an extension of a dbt adapter from PyPI (dbt Core users only). The MetricFlow is compatible with Python versions 3.8 through 3.11. +Next, before you start writing code, you need to install MetricFlow as an extension of a dbt adapter from PyPI (dbt Core users only). The MetricFlow is compatible with Python versions 3.8 through 3.11. We'll use pip to install MetricFlow and our dbt adapter: From c19221d7817368a51c2d8b518b38e6a0bb512a9d Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:29:54 +0100 Subject: [PATCH 173/265] Update semantic-layer-2-setup.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- .../how-we-build-our-metrics/semantic-layer-2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md index 4e9aae42fbd..801227924dd 100644 --- a/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md +++ b/website/docs/guides/best-practices/how-we-build-our-metrics/semantic-layer-2-setup.md @@ -33,7 +33,7 @@ Lastly, to get to the pre-Semantic Layer starting state, checkout the `start-her git checkout start-here ``` -For more information you can [look at the docs](/docs/build/metricflow-commands) or checkout a [Quickstart](https://docs.getdbt.com/quickstarts) to get more familiar with setting up a dbt project. +For more information, refer to the [MetricFlow commands](/docs/build/metricflow-commands) or a [quickstart](/quickstarts) to get more familiar with setting up a dbt project. ## Basic commands From 0a1ddcff8d083156c4cfffd49da64a5c411e9bc0 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:30:02 +0100 Subject: [PATCH 174/265] Update sl-migration.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/guides/migration/sl-migration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/migration/sl-migration.md b/website/docs/guides/migration/sl-migration.md index edf887915cc..db5c4eaa80c 100644 --- a/website/docs/guides/migration/sl-migration.md +++ b/website/docs/guides/migration/sl-migration.md @@ -64,7 +64,7 @@ This step is only relevant to users who want the legacy and new semantic layer t 1. Create a new deployment environment in dbt Cloud and set the dbt version to 1.6 or higher. -2. Select **Only run on a custom branch** and point to the branch that has the updated metric definition +2. Select **Only run on a custom branch** and point to the branch that has the updated metric definition. 3. Set the deployment schema to a temporary migration schema, such as `tmp_sl_migration`. Optional, you can create a new database for the migration. From 3ffd40e0700410af9f17a639531f49da40a68f15 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:30:46 +0100 Subject: [PATCH 175/265] Update sl-migration.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/guides/migration/sl-migration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/migration/sl-migration.md b/website/docs/guides/migration/sl-migration.md index db5c4eaa80c..19ddc7fb079 100644 --- a/website/docs/guides/migration/sl-migration.md +++ b/website/docs/guides/migration/sl-migration.md @@ -68,7 +68,7 @@ This step is only relevant to users who want the legacy and new semantic layer t 3. Set the deployment schema to a temporary migration schema, such as `tmp_sl_migration`. Optional, you can create a new database for the migration. -4. Create a job to parse your project, such as `dbt parse`, and run it. Make sure this job succeeds, There needs to be a successful job in your environment in order to set up the semantic layer +4. Create a job to parse your project, such as `dbt parse`, and run it. Make sure this job succeeds. There needs to be a successful job in your environment in order to set up the semantic layer. 5. In **Account Settings** -> **Projects** -> **Project details**, click **Configure the Semantic Layer**. From d787279502ab5e9bfe952e43c16bbaaa604cc25f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:30:53 +0100 Subject: [PATCH 176/265] Update sl-migration.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/guides/migration/sl-migration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/migration/sl-migration.md b/website/docs/guides/migration/sl-migration.md index 19ddc7fb079..304deebd6f2 100644 --- a/website/docs/guides/migration/sl-migration.md +++ b/website/docs/guides/migration/sl-migration.md @@ -70,7 +70,7 @@ This step is only relevant to users who want the legacy and new semantic layer t 4. Create a job to parse your project, such as `dbt parse`, and run it. Make sure this job succeeds. There needs to be a successful job in your environment in order to set up the semantic layer. -5. In **Account Settings** -> **Projects** -> **Project details**, click **Configure the Semantic Layer**. +5. Select **Account Settings** -> **Projects** -> **Project details** and choose **Configure the Semantic Layer**. 6. Under **Environment**, select the deployment environment you created in the previous step. Save your configuration. From c20fbac8677d43289238beaa86155ef749cb4b2b Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:31:04 +0100 Subject: [PATCH 177/265] Update sl-migration.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/guides/migration/sl-migration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/migration/sl-migration.md b/website/docs/guides/migration/sl-migration.md index 304deebd6f2..8e42d5122aa 100644 --- a/website/docs/guides/migration/sl-migration.md +++ b/website/docs/guides/migration/sl-migration.md @@ -72,7 +72,7 @@ This step is only relevant to users who want the legacy and new semantic layer t 5. Select **Account Settings** -> **Projects** -> **Project details** and choose **Configure the Semantic Layer**. -6. Under **Environment**, select the deployment environment you created in the previous step. Save your configuration. +6. Under **Environment**, select the deployment environment you created in the previous step. Save your configuration. 7. In the **Project details** page, click **Generate service token** and grant it **Semantic Layer Only** and **Metadata Only** permissions. Save this token securely - you will need it to connect to the semantic layer. From 21caa8d83d8d8dca8b9ce42d4e1de4939acd78db Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:31:14 +0100 Subject: [PATCH 178/265] Update _new-sl-setup.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_new-sl-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_new-sl-setup.md b/website/snippets/_new-sl-setup.md index 07b579c420f..7cff4a16449 100644 --- a/website/snippets/_new-sl-setup.md +++ b/website/snippets/_new-sl-setup.md @@ -1,6 +1,6 @@ You can set up the dbt Semantic Layer in dbt Cloud at the environment and project level. Before you begin: -- Have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. (Single-Tenant coming soon) +- You must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. Single-tenant coming soon. - You must be part of the Owner group, and have the correct [license](/docs/cloud/manage-access/seats-and-users) and [permissions](/docs/cloud/manage-access/self-service-permissions) to configure the Semantic Layer: * Enterprise plan — Developer license with Account Admin permissions. Or Owner with a Developer license, assigned Project Creator, Database Admin, or Admin permissions. * Team plan — Owner with a Developer license. From 8dc336fff238a16efb24efe07562cd1416fe007f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:31:24 +0100 Subject: [PATCH 179/265] Update _new-sl-setup.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_new-sl-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_new-sl-setup.md b/website/snippets/_new-sl-setup.md index 7cff4a16449..ad248bc3ca9 100644 --- a/website/snippets/_new-sl-setup.md +++ b/website/snippets/_new-sl-setup.md @@ -7,7 +7,7 @@ You can set up the dbt Semantic Layer in dbt Cloud at the environment and projec - You must have a successful run in your new environment. :::tip -If you're using the legacy Semantic Layer, we **highly** recommend you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt v1.6 or higher to use the re-released dbt Semantic Layer. Refer to the dedicated [migration guide](/guides/migration/sl-migration) for more info. +If you're using the legacy Semantic Layer, dbt Labs strongly recommends that you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt version 1.6 or newer to use the latest dbt Semantic Layer. Refer to the dedicated [migration guide](/guides/migration/sl-migration) for details. ::: 1. In dbt Cloud, create a new [deployment environment](/docs/deploy/deploy-environments#create-a-deployment-environment) or use an existing environment on dbt 1.6 or higher. From 8e5f86e26cd91405a1d84a3f6c72b1b0d06348e4 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:31:35 +0100 Subject: [PATCH 180/265] Update _sl-connect-and-query-api.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-connect-and-query-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-connect-and-query-api.md b/website/snippets/_sl-connect-and-query-api.md index 41452e587c2..429f41c3bf6 100644 --- a/website/snippets/_sl-connect-and-query-api.md +++ b/website/snippets/_sl-connect-and-query-api.md @@ -1,6 +1,6 @@ You can query your metrics in a JDBC-enabled tool or use existing first-class integrations with the dbt Semantic Layer. -You must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment (Single-Tenant coming soon) +You must have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. Single-tenant coming soon. - To learn how to use the JDBC or GraphQL API and what tools you can query it with, refer to [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview). From 6aa30c2cdf61c1dbbf7652916a190473193c0787 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:31:50 +0100 Subject: [PATCH 181/265] Update _sl-create-semanticmodel.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-create-semanticmodel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-create-semanticmodel.md b/website/snippets/_sl-create-semanticmodel.md index a418258a336..6e0376ab10b 100644 --- a/website/snippets/_sl-create-semanticmodel.md +++ b/website/snippets/_sl-create-semanticmodel.md @@ -1,4 +1,4 @@ -The following steps will walk you through setting up semantic models. Semantic models consist of [entities](/docs/build/entities), [dimensions](/docs/build/dimensions), and [measures](/docs/build/measures). +The following steps describe how to set up semantic models. Semantic models consist of [entities](/docs/build/entities), [dimensions](/docs/build/dimensions), and [measures](/docs/build/measures). We highly recommend you read the overview of what a [semantic model](/docs/build/semantic-models) is before getting started. If you're working in the [Jaffle shop example](https://github.com/dbt-labs/jaffle-sl-template), delete the `orders.yml` config or delete the .yml extension so it's ignored during parsing. **We'll be rebuilding it step by step in this example.** From 0bc7354d3121e43d859b7a49b7c4b636268be45b Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:32:03 +0100 Subject: [PATCH 182/265] Update _sl-partner-links.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-partner-links.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index f54233abd3f..b09ed828ef9 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -18,7 +18,7 @@ The following tools integrate with the dbt Semantic Layer: Date: Sat, 14 Oct 2023 06:32:14 +0100 Subject: [PATCH 183/265] Update _sl-partner-links.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-partner-links.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index b09ed828ef9..4dfa3443f72 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -31,7 +31,7 @@ The following tools integrate with the dbt Semantic Layer:
Date: Sat, 14 Oct 2023 06:32:23 +0100 Subject: [PATCH 184/265] Update _sl-partner-links.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-partner-links.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-partner-links.md b/website/snippets/_sl-partner-links.md index 4dfa3443f72..59e5b54b7c0 100644 --- a/website/snippets/_sl-partner-links.md +++ b/website/snippets/_sl-partner-links.md @@ -45,7 +45,7 @@ The following tools integrate with the dbt Semantic Layer:
Date: Sat, 14 Oct 2023 06:32:30 +0100 Subject: [PATCH 185/265] Update _sl-run-prod-job.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-run-prod-job.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-run-prod-job.md b/website/snippets/_sl-run-prod-job.md index 31db07cfb86..cb725792fa5 100644 --- a/website/snippets/_sl-run-prod-job.md +++ b/website/snippets/_sl-run-prod-job.md @@ -1,4 +1,4 @@ -Once you’ve defined metrics in your dbt project, you can perform a job run in your deployment environment in dbt Cloud to materialize your metrics. The deployment environment is only supported for the dbt Semantic Layer at this moment. +Once you’ve defined metrics in your dbt project, you can perform a job run in your deployment environment in dbt Cloud to materialize your metrics. The deployment environment is only supported for the dbt Semantic Layer currently. 1. Go to **Deploy** in the navigation header 2. Select **Jobs** to re-run the job with the most recent code in the deployment environment. From b05bae1e7e9e68a56fb3204e7e4fe8ffb7eb53ef Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:32:40 +0100 Subject: [PATCH 186/265] Update _sl-run-prod-job.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-run-prod-job.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-run-prod-job.md b/website/snippets/_sl-run-prod-job.md index cb725792fa5..8dd38b58b38 100644 --- a/website/snippets/_sl-run-prod-job.md +++ b/website/snippets/_sl-run-prod-job.md @@ -1,6 +1,6 @@ Once you’ve defined metrics in your dbt project, you can perform a job run in your deployment environment in dbt Cloud to materialize your metrics. The deployment environment is only supported for the dbt Semantic Layer currently. -1. Go to **Deploy** in the navigation header +1. Select **Deploy** from the top navigation bar. 2. Select **Jobs** to re-run the job with the most recent code in the deployment environment. 3. Your metric should appear as a red node in the dbt Cloud IDE and dbt directed acyclic graphs (DAG). From 020ebe1b80bdb24cac0c0d390f787471bd4b1e2b Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:32:48 +0100 Subject: [PATCH 187/265] Update _sl-run-prod-job.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-run-prod-job.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-run-prod-job.md b/website/snippets/_sl-run-prod-job.md index 8dd38b58b38..a637b0b431e 100644 --- a/website/snippets/_sl-run-prod-job.md +++ b/website/snippets/_sl-run-prod-job.md @@ -1,7 +1,7 @@ Once you’ve defined metrics in your dbt project, you can perform a job run in your deployment environment in dbt Cloud to materialize your metrics. The deployment environment is only supported for the dbt Semantic Layer currently. 1. Select **Deploy** from the top navigation bar. -2. Select **Jobs** to re-run the job with the most recent code in the deployment environment. +2. Select **Jobs** to rerun the job with the most recent code in the deployment environment. 3. Your metric should appear as a red node in the dbt Cloud IDE and dbt directed acyclic graphs (DAG). From af55e69b67e3564bb67aa8bf91bd592f02b6c3d4 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:32:59 +0100 Subject: [PATCH 188/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 1902ef07496..1c73ac05770 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -1,4 +1,4 @@ -This section will explain how you can test and run MetricFlow commands with dbt Cloud or dbt Core (dbt Cloud IDE support coming soon). dbt Cloud IDE users can skip to [Run a production job](#run-a-production-job) to run a model. +This section explains how you can test and run MetricFlow commands with dbt Cloud or dbt Core (dbt Cloud IDE support coming soon). dbt Cloud IDE users can skip to [Run a production job](#run-a-production-job) to run a model. :::important Testing and querying metrics in the dbt Cloud IDE not yet supported From 0f2918f5edf23eb8cbe1f32d301aaff14604495e Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:33:09 +0100 Subject: [PATCH 189/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 1c73ac05770..229da41da8f 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -1,6 +1,6 @@ This section explains how you can test and run MetricFlow commands with dbt Cloud or dbt Core (dbt Cloud IDE support coming soon). dbt Cloud IDE users can skip to [Run a production job](#run-a-production-job) to run a model. -:::important Testing and querying metrics in the dbt Cloud IDE not yet supported +:::important Testing and querying metrics in the dbt Cloud IDE is currently not supported Support for running [MetricFlow commands](/docs/build/metricflow-commands) in the dbt Cloud IDE is not available but is coming soon. From 80228e224019144a7eac9a92c084e2ead696835a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:33:47 +0100 Subject: [PATCH 190/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 229da41da8f..b6d702e1776 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -17,7 +17,7 @@ You can use the **Preview** or **Compile** buttons in the IDE to run semantic va This section is exclusive to dbt Cloud CLI users (support for dbt Cloud IDE is coming soon). With dbt Cloud, you can: - Run MetricFlow commands right after installing the dbt Cloud CLI. They're integrated with dbt Cloud so you can use them immediately. -- Not worry about version control; your dbt Cloud account will manage it for you automatically. +- Your account will automatically manage version control for you. Refer to the following steps to get started: From 4e4c07d071e562d708fbce8720ff58b1f74cc59c Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:33:56 +0100 Subject: [PATCH 191/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index b6d702e1776..4e62b69cc44 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -16,7 +16,7 @@ You can use the **Preview** or **Compile** buttons in the IDE to run semantic va This section is exclusive to dbt Cloud CLI users (support for dbt Cloud IDE is coming soon). With dbt Cloud, you can: -- Run MetricFlow commands right after installing the dbt Cloud CLI. They're integrated with dbt Cloud so you can use them immediately. +- You can run MetricFlow commands after installing the dbt Cloud CLI. They're integrated with dbt Cloud so you can use them immediately. - Your account will automatically manage version control for you. Refer to the following steps to get started: From bcfd88afb0f8e5a3d225d6a41d38b7e386596569 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:34:05 +0100 Subject: [PATCH 192/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 4e62b69cc44..1474d74e523 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -14,7 +14,7 @@ You can use the **Preview** or **Compile** buttons in the IDE to run semantic va -This section is exclusive to dbt Cloud CLI users (support for dbt Cloud IDE is coming soon). With dbt Cloud, you can: +This section is for people using the dbt Cloud CLI (support for dbt Cloud IDE is coming soon). With dbt Cloud: - You can run MetricFlow commands after installing the dbt Cloud CLI. They're integrated with dbt Cloud so you can use them immediately. - Your account will automatically manage version control for you. From 8f87e8cba30584bba7753a952067f33ab7ce1cd9 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:34:15 +0100 Subject: [PATCH 193/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 1474d74e523..2b87e8de5f2 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -19,7 +19,7 @@ This section is for people using the dbt Cloud CLI (support for dbt Cloud IDE is - You can run MetricFlow commands after installing the dbt Cloud CLI. They're integrated with dbt Cloud so you can use them immediately. - Your account will automatically manage version control for you. -Refer to the following steps to get started: +To get started: 1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). 2. Navigate to your dbt project directory. From 3f45ba834f6fa323b0590dfd84df8177451631ab Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:34:35 +0100 Subject: [PATCH 194/265] Update sl-migration.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/guides/migration/sl-migration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/migration/sl-migration.md b/website/docs/guides/migration/sl-migration.md index 8e42d5122aa..56cd6dc9d80 100644 --- a/website/docs/guides/migration/sl-migration.md +++ b/website/docs/guides/migration/sl-migration.md @@ -74,7 +74,7 @@ This step is only relevant to users who want the legacy and new semantic layer t 6. Under **Environment**, select the deployment environment you created in the previous step. Save your configuration. -7. In the **Project details** page, click **Generate service token** and grant it **Semantic Layer Only** and **Metadata Only** permissions. Save this token securely - you will need it to connect to the semantic layer. +7. In the **Project details** page, click **Generate service token** and grant it **Semantic Layer Only** and **Metadata Only** permissions. Save this token securely. You will need it to connect to the semantic layer. At this point, both the new semantic layer and the old semantic layer will be running. The new semantic layer will be pointing at your migration branch with the updated metrics definitions. From 7f6a85e54c46d0d9850b3a0ea366dd12cd314c20 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:34:50 +0100 Subject: [PATCH 195/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 2b87e8de5f2..87ad2b45064 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -23,7 +23,7 @@ To get started: 1. Make sure you've installed the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). 2. Navigate to your dbt project directory. -3. Run a dbt command, such as `dbt parse`, `dbt run`, `dbt compile` or `dbt build`. If you don't, you'll receive an error message that begins with: `ensure that you've ran an artifacts....` +3. Run a dbt command, such as `dbt parse`, `dbt run`, `dbt compile`, or `dbt build`. If you don't, you'll receive an error message that begins with: "ensure that you've ran an artifacts...." - MetricFlow builds a semantic graph and generates a `semantic_manifest.json` file in dbt Cloud, which is stored in the `/target` directory. If using the Jaffle shop example, run `dbt seed && dbt run` to ensure the required data is in your data platform before proceeding. 4. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. From 80ba4836341d28086351deecafc33705bf17ed08 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:35:01 +0100 Subject: [PATCH 196/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 87ad2b45064..9831c7c0040 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -29,7 +29,7 @@ To get started: 4. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. 5. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` 6. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--compile` in the command line. -7. Commit and merge the code changes that contain the metric definitions. +7. Commit and merge the code changes that contain the metric definitions. To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. From 8939a8ab72ba1452deccf40bed5167ea39dc2a15 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:35:10 +0100 Subject: [PATCH 197/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 9831c7c0040..59cb44a29c6 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -28,7 +28,7 @@ To get started: 4. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. 5. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` -6. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--compile` in the command line. +6. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--compile` in the command line. 7. Commit and merge the code changes that contain the metric definitions. To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. From 9dbf3b862d71e542cfacef3920f4e68bbd1158b0 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:35:30 +0100 Subject: [PATCH 198/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 59cb44a29c6..6d95182484f 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -39,7 +39,7 @@ To streamline your metric querying process, you can connect to the [dbt Semantic -This step is for dbt Core users only. MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to instal MetricFlow on Windows or Linux operating systems: +This step is for dbt Core users only. MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to install MetricFlow on Windows or Linux operating systems: **Note** — The dbt Cloud CLI is highly recommended for the experience in defining and querying metrics in your dbt project on dbt Cloud or dbt Core with MetricFlow. If you're using dbt Core, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. From c75ad60d03bea3567f40df414af6272e37d9f054 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:35:42 +0100 Subject: [PATCH 199/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 6d95182484f..c1ddc50944a 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -41,7 +41,9 @@ To streamline your metric querying process, you can connect to the [dbt Semantic This step is for dbt Core users only. MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. You need to use `pip` to install MetricFlow on Windows or Linux operating systems: -**Note** — The dbt Cloud CLI is highly recommended for the experience in defining and querying metrics in your dbt project on dbt Cloud or dbt Core with MetricFlow. If you're using dbt Core, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. +:::note +The dbt Cloud CLI is strongly recommended to define and query metrics for your dbt project in dbt Cloud or dbt Core with MetricFlow. If you're using dbt Core, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. +::: 1. Install [MetricFlow](/docs/build/metricflow-commands) as an extension of a dbt adapter from PyPI. From 48a010a8b457edf8ac98ed1d59cefcdbd94697e5 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:35:54 +0100 Subject: [PATCH 200/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index c1ddc50944a..e7ee159a5dd 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -47,7 +47,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d 1. Install [MetricFlow](/docs/build/metricflow-commands) as an extension of a dbt adapter from PyPI. -2. Create or activate your virtual environment. `python -m venv venv` or `source your-venv/bin/activate` +2. Create or activate your virtual environment with `python -m venv venv` or `source your-venv/bin/activate`. 3. Run `pip install dbt-metricflow` - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` - **Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. From 654fc27a5e6e5cc98de1632e584f34f8e432b6fc Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:36:00 +0100 Subject: [PATCH 201/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index e7ee159a5dd..1aceab56c19 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -48,7 +48,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d 1. Install [MetricFlow](/docs/build/metricflow-commands) as an extension of a dbt adapter from PyPI. 2. Create or activate your virtual environment with `python -m venv venv` or `source your-venv/bin/activate`. -3. Run `pip install dbt-metricflow` +3. Run `pip install dbt-metricflow`. - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` - **Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. 4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. From 1c503c4c2eb58dac3ed5e4e81a95c2e3f3280648 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:36:31 +0100 Subject: [PATCH 202/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 1aceab56c19..4f9f39a0272 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -49,7 +49,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d 1. Install [MetricFlow](/docs/build/metricflow-commands) as an extension of a dbt adapter from PyPI. 2. Create or activate your virtual environment with `python -m venv venv` or `source your-venv/bin/activate`. 3. Run `pip install dbt-metricflow`. - - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. For example, for a Snowflake adapter run `pip install "dbt-metricflow[snowflake]"` + - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. As an example for a Snowflake adapter, run `pip install "dbt-metricflow[snowflake]"`. - **Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. 4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. From 2b7882cb5e8ddc6410982deff3e22408b45aaa34 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:36:49 +0100 Subject: [PATCH 203/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 4f9f39a0272..430af6d9089 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -50,7 +50,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d 2. Create or activate your virtual environment with `python -m venv venv` or `source your-venv/bin/activate`. 3. Run `pip install dbt-metricflow`. - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. As an example for a Snowflake adapter, run `pip install "dbt-metricflow[snowflake]"`. - - **Note**, you'll need to manage versioning between dbt Core, your adapter, and MetricFlow. + - You'll need to manage versioning between dbt Core, your adapter, and MetricFlow. 4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. 5. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. From 0bbfb565c8461011f215013fc32995cc994c4988 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:36:59 +0100 Subject: [PATCH 204/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 430af6d9089..5cc2901def8 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -52,7 +52,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d - You can install MetricFlow using PyPI as an extension of your dbt adapter in the command line. To install the adapter, run `pip install "dbt-metricflow[your_adapter_name]"` and add the adapter name at the end of the command. As an example for a Snowflake adapter, run `pip install "dbt-metricflow[snowflake]"`. - You'll need to manage versioning between dbt Core, your adapter, and MetricFlow. 4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. - - This will create the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before preceding to ensure the data exists in your warehouse. + - This creates the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before proceeding to ensure the data exists in your warehouse. 5. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. 6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` 7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. From e1becd10d6eec527b424ae5064d5ebd2f0a3331a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:37:14 +0100 Subject: [PATCH 205/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 5cc2901def8..0f940f77082 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -53,7 +53,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d - You'll need to manage versioning between dbt Core, your adapter, and MetricFlow. 4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. - This creates the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before proceeding to ensure the data exists in your warehouse. -5. Run `mf --help` to confirm you have MetricFlow installed and view the available commands. +5. Run `mf --help` to confirm you have MetricFlow installed and that you can view the available commands. 6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` 7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. 8. Run `mf validate-configs` to run validation on your semantic models and metrics. From 598e57b9bb57421166b2d1f086896003ef6327fa Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:37:24 +0100 Subject: [PATCH 206/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 0f940f77082..baa077732a9 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -26,7 +26,7 @@ To get started: 3. Run a dbt command, such as `dbt parse`, `dbt run`, `dbt compile`, or `dbt build`. If you don't, you'll receive an error message that begins with: "ensure that you've ran an artifacts...." - MetricFlow builds a semantic graph and generates a `semantic_manifest.json` file in dbt Cloud, which is stored in the `/target` directory. If using the Jaffle shop example, run `dbt seed && dbt run` to ensure the required data is in your data platform before proceeding. -4. Run `dbt sl --help` to confirm you have MetricFlow installed and view the available commands. +4. Run `dbt sl --help` to confirm you have MetricFlow installed and that you can view the available commands. 5. Run `dbt sl query --metrics --group-by ` to query the metrics and dimensions. For example, `dbt sl query --metrics order_total --group-by metric_time` 6. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--compile` in the command line. 7. Commit and merge the code changes that contain the metric definitions. From 84ef5451a5b5fe4f3ff07bfb7598b2448526ef74 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:37:35 +0100 Subject: [PATCH 207/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index baa077732a9..cb577985ea1 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -54,7 +54,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d 4. Run `dbt parse`. This allows MetricFlow to build a semantic graph and generate a `semantic_manifest.json`. - This creates the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before proceeding to ensure the data exists in your warehouse. 5. Run `mf --help` to confirm you have MetricFlow installed and that you can view the available commands. -6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time` +6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time`. 7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. 8. Run `mf validate-configs` to run validation on your semantic models and metrics. 9. Commit and merge the code changes that contain the metric definitions. From 89a8b0b1f0354791650eb00430245c3ce9d90f35 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:37:44 +0100 Subject: [PATCH 208/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index cb577985ea1..968d7971636 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -55,7 +55,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d - This creates the file in your `/target` directory. If you're working from the Jaffle shop example, run `dbt seed && dbt run` before proceeding to ensure the data exists in your warehouse. 5. Run `mf --help` to confirm you have MetricFlow installed and that you can view the available commands. 6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time`. -7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line.. +7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line. 8. Run `mf validate-configs` to run validation on your semantic models and metrics. 9. Commit and merge the code changes that contain the metric definitions. From 94a021026da14e8cab2d8f126b9ee3444fd75ee6 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:37:52 +0100 Subject: [PATCH 209/265] Update _sl-test-and-query-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_sl-test-and-query-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_sl-test-and-query-metrics.md b/website/snippets/_sl-test-and-query-metrics.md index 968d7971636..43ebd929cb3 100644 --- a/website/snippets/_sl-test-and-query-metrics.md +++ b/website/snippets/_sl-test-and-query-metrics.md @@ -57,7 +57,7 @@ The dbt Cloud CLI is strongly recommended to define and query metrics for your d 6. Run `mf query --metrics --group-by ` to query the metrics and dimensions. For example, `mf query --metrics order_total --group-by metric_time`. 7. Verify that the metric values are what you expect. To further understand how the metric is being generated, you can view the generated SQL if you type `--explain` in the command line. 8. Run `mf validate-configs` to run validation on your semantic models and metrics. -9. Commit and merge the code changes that contain the metric definitions. +9. Commit and merge the code changes that contain the metric definitions. To streamline your metric querying process, you can connect to the [dbt Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) to access your metrics programmatically. For SQL syntax, refer to [Querying the API for metric metadata](/docs/dbt-cloud-apis/sl-jdbc#querying-the-api-for-metric-metadata) to query metrics using the API. From 94e30f794eaa9654a38cc3b113b4418aeccf3548 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:37:59 +0100 Subject: [PATCH 210/265] Update _v2-sl-prerequisites.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_v2-sl-prerequisites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_v2-sl-prerequisites.md b/website/snippets/_v2-sl-prerequisites.md index e8911952642..7c86559cd9b 100644 --- a/website/snippets/_v2-sl-prerequisites.md +++ b/website/snippets/_v2-sl-prerequisites.md @@ -1,7 +1,7 @@ -- Have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. (Single-Tenant coming soon) +- Have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. Single-tenant coming soon. - Have both your production and development environments running dbt version 1.6 or higher. Refer to [upgrade in dbt Cloud](/docs/dbt-versions/upgrade-core-in-cloud) for more info. - Use Snowflake, BigQuery, Databricks, or Redshift - Create a successful run in the environment where you configure the Semantic Layer. From 57d0e38926664b6a315d518577455084b8b2b5f5 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:38:06 +0100 Subject: [PATCH 211/265] Update _v2-sl-prerequisites.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_v2-sl-prerequisites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_v2-sl-prerequisites.md b/website/snippets/_v2-sl-prerequisites.md index 7c86559cd9b..9e0887f331c 100644 --- a/website/snippets/_v2-sl-prerequisites.md +++ b/website/snippets/_v2-sl-prerequisites.md @@ -3,7 +3,7 @@ - Have a dbt Cloud Team or Enterprise [multi-tenant](/docs/cloud/about-cloud/regions-ip-addresses) deployment. Single-tenant coming soon. - Have both your production and development environments running dbt version 1.6 or higher. Refer to [upgrade in dbt Cloud](/docs/dbt-versions/upgrade-core-in-cloud) for more info. -- Use Snowflake, BigQuery, Databricks, or Redshift +- Use Snowflake, BigQuery, Databricks, or Redshift. - Create a successful run in the environment where you configure the Semantic Layer. - **Note:** Semantic Layer currently supports the Deployment environment for querying. (_development querying experience coming soon_) - Set up the [Semantic Layer API](/docs/dbt-cloud-apis/sl-api-overview) in the integrated tool to import metric definitions. From aa9c7c7aadcec8e3c5aba5fa6e0768792edc190a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:38:14 +0100 Subject: [PATCH 212/265] Update _v2-sl-prerequisites.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_v2-sl-prerequisites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_v2-sl-prerequisites.md b/website/snippets/_v2-sl-prerequisites.md index 9e0887f331c..65057acb340 100644 --- a/website/snippets/_v2-sl-prerequisites.md +++ b/website/snippets/_v2-sl-prerequisites.md @@ -7,7 +7,7 @@ - Create a successful run in the environment where you configure the Semantic Layer. - **Note:** Semantic Layer currently supports the Deployment environment for querying. (_development querying experience coming soon_) - Set up the [Semantic Layer API](/docs/dbt-cloud-apis/sl-api-overview) in the integrated tool to import metric definitions. - - **Note:** To access the API and query metrics in downstream tools, you must have a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. dbt Core or Developer accounts can define metrics but won't be able to dynamically query them.
+ - To access the API and query metrics in downstream tools, you must have a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. dbt Core or Developer accounts can define metrics but won't be able to dynamically query them.
- Understand [MetricFlow's](/docs/build/about-metricflow) key concepts, which powers the revamped dbt Semantic Layer.
From e5916a03b88c2ebceb4213d03bbea6cb519c9223 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:38:24 +0100 Subject: [PATCH 213/265] Update _v2-sl-prerequisites.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/snippets/_v2-sl-prerequisites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_v2-sl-prerequisites.md b/website/snippets/_v2-sl-prerequisites.md index 65057acb340..852730604d0 100644 --- a/website/snippets/_v2-sl-prerequisites.md +++ b/website/snippets/_v2-sl-prerequisites.md @@ -8,7 +8,7 @@ - **Note:** Semantic Layer currently supports the Deployment environment for querying. (_development querying experience coming soon_) - Set up the [Semantic Layer API](/docs/dbt-cloud-apis/sl-api-overview) in the integrated tool to import metric definitions. - To access the API and query metrics in downstream tools, you must have a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. dbt Core or Developer accounts can define metrics but won't be able to dynamically query them.
-- Understand [MetricFlow's](/docs/build/about-metricflow) key concepts, which powers the revamped dbt Semantic Layer. +- Understand [MetricFlow's](/docs/build/about-metricflow) key concepts, which powers the latest dbt Semantic Layer. From 0f748a49bb35e7aaef4f5252a7f7f890a52f6e89 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:38:35 +0100 Subject: [PATCH 214/265] Update about-metricflow.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/about-metricflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 1cb7489c0ca..0b5da858f9c 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -6,7 +6,7 @@ sidebar_label: About MetricFlow tags: [Metrics, Semantic Layer] --- -This guide introduces MetricFlow's fundamental ideas for new users. MetricFlow, which powers the dbt Semantic Layer, helps you define and manage the logic for your company's metrics. It's an opinionated set of abstractions and helps data consumers retrieve metric datasets from a data platform quickly and efficiently. +This guide introduces MetricFlow's fundamental ideas for people new to this feature. MetricFlow, which powers the dbt Semantic Layer, helps you define and manage the logic for your company's metrics. It's an opinionated set of abstractions and helps data consumers retrieve metric datasets from a data platform quickly and efficiently. MetricFlow handles SQL query construction and defines the specification for dbt semantic models and metrics. It allows you to define metrics in your dbt project and query them with [MetricFlow commands](/docs/build/metricflow-commands), whether in dbt Cloud or dbt Core. From 8abaf8f4c8f150f7e84891dba4a916eccc65791b Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:38:57 +0100 Subject: [PATCH 215/265] Update about-metricflow.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/about-metricflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 0b5da858f9c..ca0e2e14083 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -8,7 +8,7 @@ tags: [Metrics, Semantic Layer] This guide introduces MetricFlow's fundamental ideas for people new to this feature. MetricFlow, which powers the dbt Semantic Layer, helps you define and manage the logic for your company's metrics. It's an opinionated set of abstractions and helps data consumers retrieve metric datasets from a data platform quickly and efficiently. -MetricFlow handles SQL query construction and defines the specification for dbt semantic models and metrics. It allows you to define metrics in your dbt project and query them with [MetricFlow commands](/docs/build/metricflow-commands), whether in dbt Cloud or dbt Core. +MetricFlow handles SQL query construction and defines the specification for dbt semantic models and metrics. It allows you to define metrics in your dbt project and query them with [MetricFlow commands](/docs/build/metricflow-commands) whether in dbt Cloud or dbt Core. Before you start, consider the following guidelines: From 95b0a0d33793326dff2c9859053cb63603bf0ecc Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:39:15 +0100 Subject: [PATCH 216/265] Update about-metricflow.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/about-metricflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index ca0e2e14083..9c5bb1a078c 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -13,7 +13,7 @@ MetricFlow handles SQL query construction and defines the specification for dbt Before you start, consider the following guidelines: - Define metrics in YAML and query them using these [new metric specifications](https://github.com/dbt-labs/dbt-core/discussions/7456). -- You must be on dbt v1.6 or higher to use MetricFlow. [Upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to get started. +- You must be on [dbt version](/docs/dbt-versions/upgrade-core-in-cloud) 1.6 or higher to use MetricFlow. - Use MetricFlow with Snowflake, BigQuery, Databricks, Postgres (dbt Core only), or Redshift. - Unlock insights and query your metrics using the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and its diverse range of [available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations). You'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. From 1bb9d72dc945b1a2376a9680a4b49da9520b34ac Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:39:21 +0100 Subject: [PATCH 217/265] Update about-metricflow.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/about-metricflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index 9c5bb1a078c..a1be0a6b6d2 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -15,7 +15,7 @@ Before you start, consider the following guidelines: - Define metrics in YAML and query them using these [new metric specifications](https://github.com/dbt-labs/dbt-core/discussions/7456). - You must be on [dbt version](/docs/dbt-versions/upgrade-core-in-cloud) 1.6 or higher to use MetricFlow. - Use MetricFlow with Snowflake, BigQuery, Databricks, Postgres (dbt Core only), or Redshift. -- Unlock insights and query your metrics using the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and its diverse range of [available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations). You'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. +- Discover insights and query your metrics using the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and its diverse range of [available integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations). You must have a dbt Cloud account on the [Team or Enterprise plan](https://www.getdbt.com/pricing/). ## MetricFlow From a31861c5da1de7fdb7f3c68df7ac681270bda274 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:39:38 +0100 Subject: [PATCH 218/265] Update about-metricflow.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/about-metricflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/about-metricflow.md b/website/docs/docs/build/about-metricflow.md index a1be0a6b6d2..7908f39301a 100644 --- a/website/docs/docs/build/about-metricflow.md +++ b/website/docs/docs/build/about-metricflow.md @@ -21,7 +21,7 @@ Before you start, consider the following guidelines: MetricFlow is a SQL query generation tool designed to streamline metric creation across different data dimensions for diverse business needs. - It operates through YAML files, where a semantic graph links language to data. This graph comprises [semantic models](/docs/build/semantic-models) (data entry points) and [metrics](/docs/build/metrics-overview) (functions for creating quantitative indicators). -- MetricFlow is a [BSL package](https://github.com/dbt-labs/metricflow) with code source available, and compatible with dbt v1.6 and higher. Data practitioners and enthusiasts are highly encouraged to contribute. +- MetricFlow is a [BSL package](https://github.com/dbt-labs/metricflow) with code source available, and compatible with dbt version 1.6 and higher. Data practitioners and enthusiasts are highly encouraged to contribute. - As a part of the dbt Semantic Layer, MetricFlow empowers organizations to define metrics using YAML abstractions. - To query metric dimensions, dimension values, and validate configurations, use [MetricFlow commands](/docs/build/metricflow-commands). From eff421faa6a87b77b475aa434c595ae0f8a28abf Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:50:05 +0100 Subject: [PATCH 219/265] Update dbt-deps-auto-install.md --- .../release-notes/03-Oct-2023/dbt-deps-auto-install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md index da183714c4f..a2ac8e3c072 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md @@ -4,7 +4,7 @@ description: "October 2023 :The dbt Cloud IDE and dbt Cloud CLI auto-handles 'db sidebar_label: "Enhancement: dbt Cloud auto-installs 'dbt deps' on startup" tags: [Oct-2023, IDE] date: 2023-10-13 -sidebar_position: 08 +sidebar_position: 06 --- The dbt Cloud IDE and dbt Cloud CLI now automatically installs `dbt deps` when your environment starts or when necessary. Previously, it would prompt you to run `dbt deps` during initialization. However, you still need to run `dbt deps` if you modify your `packages.yml` or `dependencies.yml` file. From 48e76ddb2661893df96ee5a4a809757aa63d136e Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:51:20 +0100 Subject: [PATCH 220/265] Update measures.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/measures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/measures.md b/website/docs/docs/build/measures.md index 84a11ef7199..228e9d8b371 100644 --- a/website/docs/docs/build/measures.md +++ b/website/docs/docs/build/measures.md @@ -234,7 +234,7 @@ metrics: We can query the semi-additive metrics using the following syntax: -**dbt Cloud users**: +For dbt Cloud: ```bash dbt sl query --metrics mrr_by_end_of_month --dimensions metric_time__month --order metric_time__month From ad49497add32c4dcf8e910c3d8f700f322be02b0 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:51:37 +0100 Subject: [PATCH 221/265] Update measures.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/measures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/measures.md b/website/docs/docs/build/measures.md index 228e9d8b371..e06b5046976 100644 --- a/website/docs/docs/build/measures.md +++ b/website/docs/docs/build/measures.md @@ -241,7 +241,7 @@ dbt sl query --metrics mrr_by_end_of_month --dimensions metric_time__month --ord dbt sl query --metrics mrr_by_end_of_month --dimensions metric_time__week --order metric_time__week ``` -**dbt Core users**: +For dbt Core: ```bash mf query --metrics mrr_by_end_of_month --dimensions metric_time__month --order metric_time__month From 7691130260a6b94fd83048e61782a685b36a900f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:52:48 +0100 Subject: [PATCH 222/265] Update validation.md Remove installation requirement --- website/docs/docs/build/validation.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/website/docs/docs/build/validation.md b/website/docs/docs/build/validation.md index adfbc9c7906..02ce48729a4 100644 --- a/website/docs/docs/build/validation.md +++ b/website/docs/docs/build/validation.md @@ -12,9 +12,6 @@ These validations ensure that configuration files follow the expected schema, th The code that handles validation [can be found here](https://github.com/dbt-labs/dbt-semantic-interfaces/tree/main/dbt_semantic_interfaces/validations) for those who want to dive deeper into this topic. -## Prerequisites - -- You have installed [MetricFlow](https://github.com/dbt-labs/metricflow) ## Validations command From 13a53f3524978aa7ade4bdef90f47004eaabc9ad Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:54:40 +0100 Subject: [PATCH 223/265] Update derived-metrics.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- website/docs/docs/build/derived-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/derived-metrics.md b/website/docs/docs/build/derived-metrics.md index ab0fc3cb800..fc7961bbe7f 100644 --- a/website/docs/docs/build/derived-metrics.md +++ b/website/docs/docs/build/derived-metrics.md @@ -124,7 +124,7 @@ You can query any granularity and offset window combination. The following examp alias: bookings_7_days_ago ``` -When you run the query `dbt sl query --metrics d7_booking_change --group-by metric_time__month` (dbt Core users can use the `mf query` prefix) for the metric, here's how it's calculated: +When you run the query `dbt sl query --metrics d7_booking_change --group-by metric_time__month` for the metric, here's how it's calculated. For dbt Core, you can use the `mf query` prefix. 1. We retrieve the raw, unaggregated dataset with the specified measures and dimensions at the smallest level of detail, which is currently 'day'. 2. Then, we perform an offset join on the daily dataset, followed by performing a date trunc and aggregation to the requested granularity. From b70f4d7c68992bec6eb9a21991c73b0b3dc9e9dc Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:55:35 +0100 Subject: [PATCH 224/265] Update sl-ga.md --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 99be4cdd6f3..1d0172d4d1e 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -2,7 +2,7 @@ title: "Update: dbt Cloud Semantic Layer is Generally Available" description: "October 2023: dbt Cloud Semantic Layer is Generally Available for all users" sidebar_label: "Update: dbt Cloud Semantic Layer is GA" -sidebar_position: 07 +sidebar_position: 05 date: 2023-10-17 tags: [Oct-2023] --- From 5e98c245457f8c7acc0afa25603e3493ba7cd1d3 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 07:04:13 +0100 Subject: [PATCH 225/265] Update cloud-cli-pp.md --- .../docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md index 8e586211528..55d7f69f959 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md @@ -1,7 +1,7 @@ --- title: "New: Develop with the dbt Cloud CLI" description: "October 2023: Learn about the new dbt Cloud CLI development experience, now in public preview," -sidebar_position: 06 +sidebar_position: 04 sidebar_label: "New: Develop with the dbt Cloud CLI" tags: [Oct-2023, CLI, dbt Cloud] date: 2023-10-17 From da9518cd000b688dd824f634605f197a92d6d5e6 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 07:09:44 +0100 Subject: [PATCH 226/265] Update sl-ga.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 1d0172d4d1e..9d5a4471785 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -11,7 +11,7 @@ tags: [Oct-2023] If you're using the legacy Semantic Layer, we **highly** recommend you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt v1.6 or higher and [migrate](/guides/migration/sl-migration) to the re-released Semantic Layer. ::: -dbt Labs is thrilled to announce that the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) is now generally available to the public. It offers consistent data organization, improved governance, reduced costs, enhanced efficiency, and accessible data for better decision-making and collaboration across organizations. +dbt Labs is thrilled to announce that the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) is now generally available. It offers consistent data organization, improved governance, reduced costs, enhanced efficiency, and accessible data for better decision-making and collaboration across organizations. It aims to bring the best of modeling and semantics to downstream applications by introducing: From 8c1b7381fe346852c692282a08e189d7ddbea4e0 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 07:10:11 +0100 Subject: [PATCH 227/265] Update sl-ga.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 9d5a4471785..39df83b1e61 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -17,7 +17,7 @@ It aims to bring the best of modeling and semantics to downstream applications b - Brand new [integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) with Tableau, Google Sheets, Hex, Mode, and Lightdash. - New [Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) using GraphQL and JDBC to query metrics and build integrations. -- dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North American, EMEA, and APAC (Single-Tenant support coming soon). +- dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North America, EMEA, and APAC. Single-tenant support coming soon. - Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. (Support for scheduling exports as part of your dbt job is coming on db v1.7 or higher.) The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. dbt Cloud Developer plans and dbt Core users can use the dbt Cloud IDE or MetricFlow CLI to define metrics, but won't be able to query them with integrated tools. From bc3c8606cfa511d412aa169b5369f006fee21275 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 07:11:12 +0100 Subject: [PATCH 228/265] Update sl-ga.md Co-authored-by: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 39df83b1e61..45575c951f1 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -18,7 +18,7 @@ It aims to bring the best of modeling and semantics to downstream applications b - Brand new [integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) with Tableau, Google Sheets, Hex, Mode, and Lightdash. - New [Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) using GraphQL and JDBC to query metrics and build integrations. - dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North America, EMEA, and APAC. Single-tenant support coming soon. -- Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. (Support for scheduling exports as part of your dbt job is coming on db v1.7 or higher.) +- Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. Support for scheduling exports as part of your dbt job is coming soon with dbt version 1.7 or higher. The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. dbt Cloud Developer plans and dbt Core users can use the dbt Cloud IDE or MetricFlow CLI to define metrics, but won't be able to query them with integrated tools. From cde61c0b9ed19e19b9c859ddb55694eb2082f3ee Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Sat, 14 Oct 2023 07:30:11 +0100 Subject: [PATCH 229/265] Update metricflow-commands.md --- website/docs/docs/build/metricflow-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/metricflow-commands.md b/website/docs/docs/build/metricflow-commands.md index ddd33f0c3c8..bcf2c34effd 100644 --- a/website/docs/docs/build/metricflow-commands.md +++ b/website/docs/docs/build/metricflow-commands.md @@ -17,7 +17,7 @@ MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. MetricFlow is a dbt package that allows you to define and query metrics in your dbt project. You can use MetricFlow to query metrics in your dbt project in the dbt Cloud CLI, dbt Cloud IDE, or dbt Core. -**Note** — MetricFlow commands aren't supported in dbt Cloud jobs yet. If using GitHub Actions, you can `pip install metricflow` and run MetricFlow dbt Core commands as part of your CI checks on PRs. +**Note** — MetricFlow commands aren't supported in dbt Cloud jobs yet. However, you can add MetricFlow validations with your git provider (such as GitHub Actions) by installing MetricFlow (`pip install metricflow`). This allows you to run MetricFlow commands as part of your CI checks on PRs. From a36fe845250776554c36f77f06d5be99a34b1425 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 16 Oct 2023 03:41:25 -0400 Subject: [PATCH 230/265] readd venv info --- .../docs/docs/cloud/cloud-cli-installation.md | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index d5c61881ff8..4ec0d14b800 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -39,25 +39,44 @@ Otherwise, to switch back to dbt Core, uninstall the dbt Cloud CLI and follow th ::: -You can install dbt Core and plugins using pip because they are Python modules distributed on [PyPI](https://pypi.org/project/dbt/). +Before installing the dbt Cloud CLI, make sure you have Python installed and your virtual environment venv or pyenv . If you already have a Python environment configured, you can skip to the [pip installation step](#install-dbt-cloud-cli-in-pip). -1. We recommend [installing virtual environments (venv)](/docs/core/pip-install#using-virtual-environments) to namespace "cloud-cli" - - Venv name should be: `python3 -m venv dbt-cloud` and session should be activated with `source dbt-cloud/bin/activate`. +### Install a virtual environment -2. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: +We recommend using virtual environments (venv) to namespace `cloud-cli`. + +1. Create a new venv: + ```shell + python3 -m venv dbt-cloud + ``` + +2. Activate the virtual environment each time you create a shell window or session: + ```shell + source dbt-cloud/bin/activate # activate the environment for Mac and Linux OR + dbt-env\Scripts\activate # activate the environment for Windows + ``` + +3. (Mac and Linux only) Create an alias to activate your dbt environment with every new shell window or session. You can add the following to your shell's configuration file (for example, $HOME/.bashrc, $HOME/.zshrc) while replacing `` with the path to your virtual environment configuration: + ```shell + alias env_dbt='source /bin/activate' + ``` + +### Install dbt Cloud CLI in pip + +1. (Optional) If you already have dbt Core installed, this installation will override that package. Note your dbt Core version in case you need to reinstall it later: ```bash dbt --version ``` -3. Make sure you're in your virtual environment and run the following command to install the dbt Cloud CLI: +2. Make sure you're in your virtual environment and run the following command to install the dbt Cloud CLI: ```bash pip3 install dbt ``` -4. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core -5. Reinstall dbt Core using the version from Step 2. +3. (Optional) To revert back to dbt Core, first uninstall both the dbt Cloud CLI and dbt Core +4. Reinstall dbt Core using the version from Step 2. ```bash pip3 uninstall dbt-core dbt From 8e569176ccbcdade5863caa07f47833f59811674 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 16 Oct 2023 03:59:42 -0400 Subject: [PATCH 231/265] last min tweaks --- website/docs/docs/build/metricflow-commands.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/build/metricflow-commands.md b/website/docs/docs/build/metricflow-commands.md index bcf2c34effd..049b415d40e 100644 --- a/website/docs/docs/build/metricflow-commands.md +++ b/website/docs/docs/build/metricflow-commands.md @@ -8,7 +8,7 @@ tags: [Metrics, Semantic Layer] Once you define metrics in your dbt project, you can query metrics, dimensions, dimension values, and validate your configs using the MetricFlow commands. -MetricFlow allows you to define and query metrics in your dbt project in the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation),[dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud), or [dbt Core](/docs/core/installation). To experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. +MetricFlow allows you to define and query metrics in your dbt project in the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation), [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/develop-in-the-cloud), or [dbt Core](/docs/core/installation). To experience the power of the universal [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) and dynamically query those metrics in downstream tools, you'll need a dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) account. MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. @@ -17,7 +17,7 @@ MetricFlow is compatible with Python versions 3.8, 3.9, 3.10 and 3.11. MetricFlow is a dbt package that allows you to define and query metrics in your dbt project. You can use MetricFlow to query metrics in your dbt project in the dbt Cloud CLI, dbt Cloud IDE, or dbt Core. -**Note** — MetricFlow commands aren't supported in dbt Cloud jobs yet. However, you can add MetricFlow validations with your git provider (such as GitHub Actions) by installing MetricFlow (`pip install metricflow`). This allows you to run MetricFlow commands as part of your CI checks on PRs. +**Note** — MetricFlow commands aren't supported in dbt Cloud jobs yet. However, you can add MetricFlow validations with your git provider (such as GitHub Actions) by installing MetricFlow (`pip install metricflow`). This allows you to run MetricFlow commands as part of your continuous integration checks on PRs. @@ -73,11 +73,11 @@ Use the `dbt sl` prefix before the command name to execute them in dbt Cloud. Fo - [`list`](#list) — Retrieves metadata values. - [`list metrics`](#list-metrics) — Lists metrics with dimensions. - [`list dimensions`](#list) — Lists unique dimensions for metrics. +- [`list dimension-values`](#list-dimension-values) — List dimensions with metrics. - [`list entities`](#list-entities) — Lists all unique entities. - [`query`](#query) — Query metrics and dimensions you want to see in the command line interface. Refer to [query examples](#query-examples) to help you get started. Create Calculated Field -8. Filtering on a Date Part time dimension for a Cumulative metric type -9. Changing your date dimension to use "Week Number" +The following Tableau features aren't supported at this time, however, the dbt Semantic Layer may support some of this functionality in a future release: + +- Updating the data source page +- Using "Extract" mode to view yur data +- Unioning Tables +- Writing Custom SQL +- Table Extensions +- Cross Database Joins +- All functions in Analysis --> Create Calculated Field +- Filtering on a Date Part time dimension for a Cumulative metric type +- Changing your date dimension to use "Week Number" From 9c3114baa22bd175f82fe166d8c2272d442bc495 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 04:34:23 -0400 Subject: [PATCH 233/265] Update website/docs/reference/dbt-commands.md --- website/docs/reference/dbt-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/reference/dbt-commands.md b/website/docs/reference/dbt-commands.md index 66e28010bb0..1448d9849d3 100644 --- a/website/docs/reference/dbt-commands.md +++ b/website/docs/reference/dbt-commands.md @@ -70,7 +70,7 @@ Use the following dbt commands in the [dbt Cloud IDE](/docs/cloud/dbt-cloud-ide/ -Use the following dbt commands in the [dbt COre](/docs/core/about-dbt-core) and use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. +Use the following dbt commands in [dbt Core](/docs/core/about-dbt-core) and use the `dbt` prefix. For example, to run the `test` command, type `dbt test`. - [build](/reference/commands/build): build and test all selected resources (models, seeds, snapshots, tests) - [clean](/reference/commands/clean): deletes artifacts present in the dbt project From 8de23fdf65fba4f8d96a8a811bc02e032c263f14 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 04:56:08 -0400 Subject: [PATCH 234/265] Update website/sidebars.js --- website/sidebars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/website/sidebars.js b/website/sidebars.js index aabb2b67488..8aba4acda4c 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -151,6 +151,7 @@ const sidebarSettings = { "docs/cloud/secure/about-privatelink", "docs/cloud/secure/snowflake-privatelink", "docs/cloud/secure/redshift-privatelink", + "docs/cloud/secure/postgres-privatelink", "docs/cloud/secure/databricks-privatelink", "docs/cloud/secure/ip-restrictions", ], From dc1f66ffa5fcd82984b48dd4ebe183bef578ffe0 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 05:21:18 -0400 Subject: [PATCH 235/265] Update website/sidebars.js --- website/sidebars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/website/sidebars.js b/website/sidebars.js index 8aba4acda4c..eec85a07fad 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -1232,6 +1232,7 @@ const sidebarSettings = { "community/resources/oss-expectations", "community/resources/oss-projects", "community/resources/contributor-license-agreements", + "community/resources/jobs-terms-and-conditions", "community/resources/speaking-at-a-meetup", ], }, From 4db6c9113778700c93b8fdd99621d68135c3deb7 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 05:21:27 -0400 Subject: [PATCH 236/265] Update website/sidebars.js --- website/sidebars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/website/sidebars.js b/website/sidebars.js index eec85a07fad..d5b481928de 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -543,6 +543,7 @@ const sidebarSettings = { link: { type: "doc", id: "docs/dbt-cloud-apis/sl-api-overview" }, items: [ "docs/dbt-cloud-apis/sl-jdbc", + "docs/dbt-cloud-apis/sl-graphql", "docs/dbt-cloud-apis/sl-manifest", ], }, From 92db08f19eeb4603503fa15db637047b4606a23f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 06:20:58 -0400 Subject: [PATCH 237/265] Update website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md --- .../docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md index 55d7f69f959..ede6be68ce0 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md @@ -1,5 +1,5 @@ --- -title: "New: Develop with the dbt Cloud CLI" +title: "New: dbt Cloud CLI in Public Preview" description: "October 2023: Learn about the new dbt Cloud CLI development experience, now in public preview," sidebar_position: 04 sidebar_label: "New: Develop with the dbt Cloud CLI" From d20b7552eb1002146229779ce6a9c5d097c5bfed Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 06:23:17 -0400 Subject: [PATCH 238/265] Update website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md --- .../docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md index ede6be68ce0..47ab947d22b 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md @@ -28,4 +28,4 @@ Some of the unique capabilities of this dbt Cloud CLI include: - Development workflow for dbt Semantic Layer - Speedier, lower cost builds -For more info, check out [dbt Cloud CLI](/docs/cloud/cloud-cli-installation). +Refer to [dbt Cloud CLI](/docs/cloud/cloud-cli-installation) to learn more. From d6fe5689a68cc3fd204dfef0cdad9342a55ab67a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 11:51:58 -0400 Subject: [PATCH 239/265] Update packages.md --- website/docs/docs/build/packages.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/website/docs/docs/build/packages.md b/website/docs/docs/build/packages.md index e3c45823b0b..8d18a55e949 100644 --- a/website/docs/docs/build/packages.md +++ b/website/docs/docs/build/packages.md @@ -373,17 +373,3 @@ packages: -### About dependencies.yml - -There are some important differences between using a `dependencies.yml` compared to a `packages.yml` file: - -- `dependencies.yml` - - Primarily designed for dbt Mesh and cross-project reference workflow. - - Supports both Projects and non-private dbt packages (private packages aren't supported yet). - - Helps maintain your project's organization by allowing you to specify hub packages like `dbt_utils`, reducing the need for multiple YAML files. - - Does not support conditional configuration using Jinja-in-yaml (Refer to [FAQs](#faqs) for more info). - -- `packages.yml` - - Does not contribute to the dbt Mesh workflow. - - Serves as a list of dbt Packages (such as dbt projects) that you want to download into your root or parent dbt project. - - Can only include packages, including private packages (doesn't support Projects) From 55ef79c70c675be2be7f447afa518c97d73bc3b0 Mon Sep 17 00:00:00 2001 From: Greg McKeon Date: Mon, 16 Oct 2023 09:52:36 -0700 Subject: [PATCH 240/265] Update cloud-cli-installation.md add untap command if users have dbt tapped. --- website/docs/docs/cloud/cloud-cli-installation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 4ec0d14b800..1333c6e7558 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -100,6 +100,7 @@ Before you begin, make sure you have [Homebrew installed](http://brew.sh/) in yo 2. Install the dbt Cloud CLI with Homebrew: ```bash + brew untap dbt-labs/dbt brew tap dbt-labs/dbt-cli brew install dbt ``` From 593442b89275d653f7d84a82cf2b5fa015a2730d Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 14:28:21 -0400 Subject: [PATCH 241/265] Update sl-ga.md --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 45575c951f1..2c2e62376ca 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -20,7 +20,7 @@ It aims to bring the best of modeling and semantics to downstream applications b - dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North America, EMEA, and APAC. Single-tenant support coming soon. - Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. Support for scheduling exports as part of your dbt job is coming soon with dbt version 1.7 or higher. -The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. dbt Cloud Developer plans and dbt Core users can use the dbt Cloud IDE or MetricFlow CLI to define metrics, but won't be able to query them with integrated tools. +The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. dbt Cloud Developer plans and dbt Core users can define metrics but won't be able to query them with integrated tools. From 5528ce01661b299783c244c41299bc093c04f17f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 14:30:03 -0400 Subject: [PATCH 242/265] Update sl-ga.md --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 2c2e62376ca..f6028d775a8 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -15,7 +15,7 @@ dbt Labs is thrilled to announce that the [dbt Semantic Layer](/docs/use-dbt-sem It aims to bring the best of modeling and semantics to downstream applications by introducing: -- Brand new [integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) with Tableau, Google Sheets, Hex, Mode, and Lightdash. +- Brand new [integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) such as Tableau, Google Sheets, Hex, Mode, and Lightdash. - New [Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) using GraphQL and JDBC to query metrics and build integrations. - dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North America, EMEA, and APAC. Single-tenant support coming soon. - Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. Support for scheduling exports as part of your dbt job is coming soon with dbt version 1.7 or higher. From 04dcac4fbdc85c6993ee48bd5e01817b6d353fa6 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 19:00:41 -0400 Subject: [PATCH 243/265] Update website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md --- .../release-notes/03-Oct-2023/dbt-deps-auto-install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md index a2ac8e3c072..1d43fa1f754 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md @@ -3,7 +3,7 @@ title: "Enhancement: dbt Cloud auto-installs 'dbt deps' on startup" description: "October 2023 :The dbt Cloud IDE and dbt Cloud CLI auto-handles 'dbt deps' on startup; manual run needed for 'packages.yml' changes. Available for multi-tenant users (single-tenant support coming soon) and applies to all dbt versions." sidebar_label: "Enhancement: dbt Cloud auto-installs 'dbt deps' on startup" tags: [Oct-2023, IDE] -date: 2023-10-13 +date: 2023-10-17 sidebar_position: 06 --- From 949d2f6c56f8d04fc373c95626b485c16fc05d30 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 19:32:18 -0400 Subject: [PATCH 244/265] Update dbt-deps-auto-install.md add greg's note --- .../03-Oct-2023/dbt-deps-auto-install.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md index 1d43fa1f754..33d13c44517 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md @@ -7,6 +7,15 @@ date: 2023-10-17 sidebar_position: 06 --- -The dbt Cloud IDE and dbt Cloud CLI now automatically installs `dbt deps` when your environment starts or when necessary. Previously, it would prompt you to run `dbt deps` during initialization. However, you still need to run `dbt deps` if you modify your `packages.yml` or `dependencies.yml` file. +The dbt Cloud IDE and dbt Cloud CLI now automatically installs `dbt deps` when your environment starts or when necessary. Previously, it would prompt you to run `dbt deps` during initialization. This improved workflow is available to all multi-tenant dbt Cloud users (Single-tenant support coming next week) and applies to dbt versions. + +However, you should still run the `dbt deps` command in these situations: + +- When you make changes to the `packages.yml` or `dependencies.yml` file. +- When you update the package version in the `packages.yml` or `dependencies.yml` file. (From dbt v1.7 or higher) +- If you edit the `dependencies.yml` file and the number of packages remains the same, run `dbt deps`. (Note that this is a known bug dbt Labs will fix in the future.) + + + From 8639720bd69cf65d17b5e2ea14e59818f59904d4 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 16 Oct 2023 19:41:48 -0400 Subject: [PATCH 245/265] add billing info --- .../release-notes/03-Oct-2023/cloud-cli-pp.md | 2 +- .../dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md index 47ab947d22b..d96b82636f8 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/cloud-cli-pp.md @@ -2,7 +2,7 @@ title: "New: dbt Cloud CLI in Public Preview" description: "October 2023: Learn about the new dbt Cloud CLI development experience, now in public preview," sidebar_position: 04 -sidebar_label: "New: Develop with the dbt Cloud CLI" +sidebar_label: "New: dbt Cloud CLI in Public Preview" tags: [Oct-2023, CLI, dbt Cloud] date: 2023-10-17 --- diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index f6028d775a8..482f5e6d198 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -8,7 +8,7 @@ tags: [Oct-2023] --- :::important -If you're using the legacy Semantic Layer, we **highly** recommend you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt v1.6 or higher and [migrate](/guides/migration/sl-migration) to the re-released Semantic Layer. +If you're using the legacy Semantic Layer, we **highly** recommend you [upgrade your dbt version](/docs/dbt-versions/upgrade-core-in-cloud) to dbt v1.6 or higher and [migrate](/guides/migration/sl-migration) to the latest Semantic Layer. ::: dbt Labs is thrilled to announce that the [dbt Semantic Layer](/docs/use-dbt-semantic-layer/dbt-sl) is now generally available. It offers consistent data organization, improved governance, reduced costs, enhanced efficiency, and accessible data for better decision-making and collaboration across organizations. @@ -18,12 +18,12 @@ It aims to bring the best of modeling and semantics to downstream applications b - Brand new [integrations](/docs/use-dbt-semantic-layer/avail-sl-integrations) such as Tableau, Google Sheets, Hex, Mode, and Lightdash. - New [Semantic Layer APIs](/docs/dbt-cloud-apis/sl-api-overview) using GraphQL and JDBC to query metrics and build integrations. - dbt Cloud [multi-tenant regional](/docs/cloud/about-cloud/regions-ip-addresses) support for North America, EMEA, and APAC. Single-tenant support coming soon. -- Use the APIs to call an export (a way for you to build tables in your data platform), then access them in your preferred BI tool. Support for scheduling exports as part of your dbt job is coming soon with dbt version 1.7 or higher. +- Use the APIs to call an export (a way to build tables in your data platform), then access them in your preferred BI tool. Starting from dbt v1.7 or higher, you will be able to schedule exports as part of your dbt job. -The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. dbt Cloud Developer plans and dbt Core users can define metrics but won't be able to query them with integrated tools. - - - + +The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. +- Team and Enterprise customers can use 1,000 Queried Units per month for no additional cost on a limited trial basis, subject to reasonable use limitations. Refer to [Billing](/docs/cloud/billing) for more information. +- dbt Cloud Developer plans and dbt Core users can define metrics but won't be able to query them with integrated tools. From d56251ba1f6b4ae117cb9077de7efd1bf4da91a9 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 16 Oct 2023 21:30:14 -0400 Subject: [PATCH 246/265] remove line --- website/docs/docs/collaborate/govern/project-dependencies.md | 1 - 1 file changed, 1 deletion(-) diff --git a/website/docs/docs/collaborate/govern/project-dependencies.md b/website/docs/docs/collaborate/govern/project-dependencies.md index 1faa2f746a9..793b79923cf 100644 --- a/website/docs/docs/collaborate/govern/project-dependencies.md +++ b/website/docs/docs/collaborate/govern/project-dependencies.md @@ -27,7 +27,6 @@ Starting in dbt v1.6 or higher, `packages.yml` has been renamed to `dependencies ## Prerequisites In order to add project dependencies and resolve cross-project `ref`, you must: -- Have the feature enabled (speak to your account team) - Use dbt v1.6 or higher for **both** the upstream ("producer") project and the downstream ("consumer") project. - Have a deployment environment in the upstream ("producer") project [that is set to be your production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta) - Have a successful run of the upstream ("producer") project From d9c44bbfdd5eb04ea2559eb608c395155c5134ae Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 16 Oct 2023 21:44:44 -0400 Subject: [PATCH 247/265] fix build error --- website/docs/docs/core/about-core-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/core/about-core-setup.md b/website/docs/docs/core/about-core-setup.md index 7794b481f72..a4d5ff09ee3 100644 --- a/website/docs/docs/core/about-core-setup.md +++ b/website/docs/docs/core/about-core-setup.md @@ -3,7 +3,7 @@ title: About dbt Core setup id: about-core-setup description: "Configuration settings for dbt Core." sidebar_label: "About dbt Core setup" -pagination_next: "docs/core/about-the-cli" +pagination_next: "docs/core/about-dbt-core" pagination_prev: null --- From abd221d89b0e8b15a66d15a9f5e452d5fcae35ae Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 16 Oct 2023 21:51:41 -0400 Subject: [PATCH 248/265] updat elink --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 482f5e6d198..98c0176c4ad 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -23,7 +23,7 @@ It aims to bring the best of modeling and semantics to downstream applications b The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. -- Team and Enterprise customers can use 1,000 Queried Units per month for no additional cost on a limited trial basis, subject to reasonable use limitations. Refer to [Billing](/docs/cloud/billing) for more information. +- Team and Enterprise customers can use 1,000 Queried Units per month for no additional cost on a limited trial basis, subject to reasonable use limitations. Refer to [Billing](/docs/cloud/billing#what-counts-as-a-query-unit) for more information. - dbt Cloud Developer plans and dbt Core users can define metrics but won't be able to query them with integrated tools. From e38f2966ff7e6a43d7a786cefc5b5153d62bc4aa Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:10:55 -0700 Subject: [PATCH 249/265] Update website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md --- website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md index 8f991f96372..ba1660a8d82 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-1-intro.md @@ -12,7 +12,7 @@ Regardless of your organization's size and complexity, dbt should empower data t dbt Mesh is not a single product: it is a pattern enabled by a convergence of several features in dbt: -- **[Cross-project references](/docs/collaborate/govern/project-dependencies#usage)** - this is the foundational feature that enables the multi-project deployments. `{{ ref() }}`s now work across dbt Cloud projects on Enterprise plans. +- **[Cross-project references](/docs/collaborate/govern/project-dependencies#how-to-use-ref)** - this is the foundational feature that enables the multi-project deployments. `{{ ref() }}`s now work across dbt Cloud projects on Enterprise plans. - **[dbt Explorer](/docs/collaborate/explore-projects)** - dbt Cloud's metadata-powered documentation platform, complete with full, cross-project lineage. - **Governance** - dbt's new governance features allow you to manage access to your dbt models both within and across projects. - **[Groups](/docs/collaborate/govern/model-access#groups)** - groups allow you to assign models to subsets within a project. From 0f54d3e3fcc6a09ad9fe06a580b0472158484336 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:47:04 -0700 Subject: [PATCH 250/265] Update website/docs/docs/cloud/configure-cloud-cli.md --- website/docs/docs/cloud/configure-cloud-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/configure-cloud-cli.md b/website/docs/docs/cloud/configure-cloud-cli.md index 9664c7742bb..952afad2066 100644 --- a/website/docs/docs/cloud/configure-cloud-cli.md +++ b/website/docs/docs/cloud/configure-cloud-cli.md @@ -14,7 +14,7 @@ import CloudCLIFlag from '/snippets/_cloud-cli-flag.md'; ## Prerequisites - You must set up a project in dbt Cloud. - - **Note** — If you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. + - **Note** — If you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need a [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. - You must have your [personal development credentials](/docs/dbt-cloud-environments#set-developer-credentials) set for that project. The dbt Cloud CLI will use these credentials, stored securely in dbt Cloud, to communicate with your data platform. - You must [enroll](/docs/dbt-versions/experimental-features) in the dbt Cloud beta features. - To enroll, navigate to your **Profile Settings** and enable the **Beta** flag under **Experimental Features**. From 230b92b3d1c6adcf987b0b9b8fe61eb62564a292 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:47:34 -0700 Subject: [PATCH 251/265] Update website/docs/docs/cloud/cloud-cli-installation.md --- website/docs/docs/cloud/cloud-cli-installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/cloud-cli-installation.md b/website/docs/docs/cloud/cloud-cli-installation.md index 1333c6e7558..f46c795a2ce 100644 --- a/website/docs/docs/cloud/cloud-cli-installation.md +++ b/website/docs/docs/cloud/cloud-cli-installation.md @@ -200,7 +200,7 @@ After installation, you can [configure](/docs/cloud/configure-cloud-cli) the dbt For example, you can execute `dbt compile` to compile a project using dbt Cloud. -Note, that if you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. +Note, that if you're using the dbt Cloud CLI, you can connect to your data platform directly in the dbt Cloud interface and don't need a [`profiles.yml`](/docs/core/connect-data-platform/profiles.yml) file. ## FAQs From 3464fc07033b124676cdf5d39b6fcab22d32ccb7 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:50:07 -0700 Subject: [PATCH 252/265] Update build-metrics-intro.md --- website/docs/docs/build/build-metrics-intro.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/build/build-metrics-intro.md b/website/docs/docs/build/build-metrics-intro.md index a97e2f4b7ed..cdac51224ed 100644 --- a/website/docs/docs/build/build-metrics-intro.md +++ b/website/docs/docs/build/build-metrics-intro.md @@ -21,6 +21,12 @@ MetricFlow allows you to:
+ + - - Date: Mon, 16 Oct 2023 23:09:33 -0700 Subject: [PATCH 253/265] Update website/docs/docs/collaborate/govern/project-dependencies.md --- website/docs/docs/collaborate/govern/project-dependencies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/collaborate/govern/project-dependencies.md b/website/docs/docs/collaborate/govern/project-dependencies.md index 3a111667c03..3633da899c9 100644 --- a/website/docs/docs/collaborate/govern/project-dependencies.md +++ b/website/docs/docs/collaborate/govern/project-dependencies.md @@ -23,7 +23,7 @@ This year, dbt Labs is introducing an expanded notion of `dependencies` across m - **Projects** — A _new_ way to take a dependency on another project. Using a metadata service that runs behind the scenes, dbt Cloud resolves references on-the-fly to public models defined in other projects. You don't need to parse or run those upstream models yourself. Instead, you treat your dependency on those models as an API that returns a dataset. The maintainer of the public model is responsible for guaranteeing its quality and stability. -Starting in dbt v1.6 or higher, `packages.yml` has been renamed to `dependencies.yml`. However, if you need use Jinja within your packages config, such as an environment variable for your private package, you need to keep using `packages.yml` for your packages for now. Refer to [FAQs](#faqs) for more info. +Starting in dbt v1.6 or higher, `packages.yml` has been renamed to `dependencies.yml`. However, if you need use Jinja within your packages config, such as an environment variable for your private package, you need to keep using `packages.yml` for your packages for now. Refer to the [FAQs](#faqs) for more info. ## Prerequisites From cc7f3f4612daebecf784b6fa6f3092c0ac060483 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 16 Oct 2023 23:11:57 -0700 Subject: [PATCH 254/265] Update website/docs/docs/collaborate/govern/project-dependencies.md --- website/docs/docs/collaborate/govern/project-dependencies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/collaborate/govern/project-dependencies.md b/website/docs/docs/collaborate/govern/project-dependencies.md index 3633da899c9..9a1d8b59b68 100644 --- a/website/docs/docs/collaborate/govern/project-dependencies.md +++ b/website/docs/docs/collaborate/govern/project-dependencies.md @@ -139,4 +139,4 @@ If you're using private packages with the [git token method](/docs/build/package ## Related docs -- [dbt Mesh guide](/guides/best-practices/how-we-mesh/mesh-1-intro) +- Refer to the [dbt Mesh](/guides/best-practices/how-we-mesh/mesh-1-intro) guide for more guidance on how to use dbt Mesh. From 3d163d2668db65c0e794850ec3439a81e04c7641 Mon Sep 17 00:00:00 2001 From: Jordan Stein Date: Mon, 16 Oct 2023 23:55:17 -0700 Subject: [PATCH 255/265] add saved queries --- website/docs/docs/build/saved-queries.md | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 website/docs/docs/build/saved-queries.md diff --git a/website/docs/docs/build/saved-queries.md b/website/docs/docs/build/saved-queries.md new file mode 100644 index 00000000000..37b23a180a8 --- /dev/null +++ b/website/docs/docs/build/saved-queries.md @@ -0,0 +1,36 @@ +--- +title: Saved Queries +id: saved-queries +description: "Saved queries are a way to save commonly used queries in MetricFlow. They can be used to save time and avoid writing the same query over and over again." +sidebar_label: "Saved Queries" +tags: [Metrics, Semantic Layer] +--- + +Saved queries are a way to save commonly used queries in MetricFlow. You can group metrics, dimensions and filters that are logically related into a saved query. The spec for defining a saved query is below: + + Parameter | Description | Type | +| --------- | ----------- | ---- | +| `name` | The name of the metric. | Required | +| `description` | The description of the metric. | Optional | +| `metrics` | The metrics included in the saved query. | Required | +| `group_bys` | The value that will be displayed in downstream tools. | Required | +| `where` | Filter applied to the query. | Optional | + +An example of a saved query is below: + +```yaml +saved_query: + name: p0_booking + description: Booking-related metrics that are of the highest priority. + metrics: + - bookings + - instant_bookings + group_bys: + - TimeDimension('metric_time', 'day') + - Dimension('listing__capacity_latest') + where: + - "{{ Dimension('listing__capacity_latest') }} > 3" +``` + +FAQs and Usage Notes: +* Dimensions refrenced in the group by or where must be common across all metrics in a saved query. From 7f109eeb53ae0d3dce71bb79e783750f5abda6da Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 17 Oct 2023 06:36:34 -0400 Subject: [PATCH 256/265] Update sl-ga.md --- .../docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md | 1 - 1 file changed, 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md index 482f5e6d198..87586fcc59a 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/sl-ga.md @@ -23,7 +23,6 @@ It aims to bring the best of modeling and semantics to downstream applications b The dbt Semantic Layer is available to [dbt Cloud Team or Enterprise](https://www.getdbt.com/) multi-tenant plans on dbt v1.6 or higher. -- Team and Enterprise customers can use 1,000 Queried Units per month for no additional cost on a limited trial basis, subject to reasonable use limitations. Refer to [Billing](/docs/cloud/billing) for more information. - dbt Cloud Developer plans and dbt Core users can define metrics but won't be able to query them with integrated tools. From f2f63d0664cc5f6ed9827c03c055750249add85e Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 17 Oct 2023 06:55:32 -0400 Subject: [PATCH 257/265] Update saved-queries.md --- website/docs/docs/build/saved-queries.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/build/saved-queries.md b/website/docs/docs/build/saved-queries.md index 37b23a180a8..f5dac1f5da8 100644 --- a/website/docs/docs/build/saved-queries.md +++ b/website/docs/docs/build/saved-queries.md @@ -6,7 +6,9 @@ sidebar_label: "Saved Queries" tags: [Metrics, Semantic Layer] --- -Saved queries are a way to save commonly used queries in MetricFlow. You can group metrics, dimensions and filters that are logically related into a saved query. The spec for defining a saved query is below: +Saved queries are a way to save commonly used queries in MetricFlow. You can group metrics, dimensions and filters that are logically related into a saved query. + +To define a saved query, refer to the following specification: Parameter | Description | Type | | --------- | ----------- | ---- | From 5a04b8f957e45f6414128e23c48c215788d56387 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 17 Oct 2023 06:55:37 -0400 Subject: [PATCH 258/265] Update saved-queries.md --- website/docs/docs/build/saved-queries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/saved-queries.md b/website/docs/docs/build/saved-queries.md index f5dac1f5da8..7e02406e3d0 100644 --- a/website/docs/docs/build/saved-queries.md +++ b/website/docs/docs/build/saved-queries.md @@ -18,7 +18,7 @@ To define a saved query, refer to the following specification: | `group_bys` | The value that will be displayed in downstream tools. | Required | | `where` | Filter applied to the query. | Optional | -An example of a saved query is below: +The following is an example of a saved query: ```yaml saved_query: From 5954ab56b20b3a522ec30b2e013fe9433d491b2d Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 17 Oct 2023 06:55:42 -0400 Subject: [PATCH 259/265] Update saved-queries.md --- website/docs/docs/build/saved-queries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/saved-queries.md b/website/docs/docs/build/saved-queries.md index 7e02406e3d0..6b90c7e7fd8 100644 --- a/website/docs/docs/build/saved-queries.md +++ b/website/docs/docs/build/saved-queries.md @@ -34,5 +34,5 @@ saved_query: - "{{ Dimension('listing__capacity_latest') }} > 3" ``` -FAQs and Usage Notes: +### FAQs * Dimensions refrenced in the group by or where must be common across all metrics in a saved query. From aa16197b25d2aa0365fea7358ad5962e83a93d9f Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 17 Oct 2023 06:55:48 -0400 Subject: [PATCH 260/265] Update saved-queries.md --- website/docs/docs/build/saved-queries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/saved-queries.md b/website/docs/docs/build/saved-queries.md index 6b90c7e7fd8..ffd8853254e 100644 --- a/website/docs/docs/build/saved-queries.md +++ b/website/docs/docs/build/saved-queries.md @@ -35,4 +35,4 @@ saved_query: ``` ### FAQs -* Dimensions refrenced in the group by or where must be common across all metrics in a saved query. +* All metrics in a saved query need to use the same dimensions in the `group_by` or `where` clauses. From 175b255cd47f6a31d69d84f549bd07b468302f5a Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 17 Oct 2023 05:33:31 -0700 Subject: [PATCH 261/265] Update saved-queries.md --- website/docs/docs/build/saved-queries.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/website/docs/docs/build/saved-queries.md b/website/docs/docs/build/saved-queries.md index ffd8853254e..ced198d14f1 100644 --- a/website/docs/docs/build/saved-queries.md +++ b/website/docs/docs/build/saved-queries.md @@ -1,12 +1,16 @@ --- -title: Saved Queries +title: Saved queries id: saved-queries description: "Saved queries are a way to save commonly used queries in MetricFlow. They can be used to save time and avoid writing the same query over and over again." -sidebar_label: "Saved Queries" +sidebar_label: "Saved queries" tags: [Metrics, Semantic Layer] --- -Saved queries are a way to save commonly used queries in MetricFlow. You can group metrics, dimensions and filters that are logically related into a saved query. +:::info Saved queries coming soon +Saved queries isn't currently available in MetricFlow but support is coming soon. + ::: + +Saved queries are a way to save commonly used queries in MetricFlow. You can group metrics, dimensions, and filters that are logically related into a saved query. To define a saved query, refer to the following specification: @@ -15,7 +19,7 @@ To define a saved query, refer to the following specification: | `name` | The name of the metric. | Required | | `description` | The description of the metric. | Optional | | `metrics` | The metrics included in the saved query. | Required | -| `group_bys` | The value that will be displayed in downstream tools. | Required | +| `group_bys` | The value displayed in downstream tools. | Required | | `where` | Filter applied to the query. | Optional | The following is an example of a saved query: @@ -35,4 +39,5 @@ saved_query: ``` ### FAQs + * All metrics in a saved query need to use the same dimensions in the `group_by` or `where` clauses. From dadcd0a1a4fdceb4c6f2cbe6c42543410a74998c Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 17 Oct 2023 05:37:49 -0700 Subject: [PATCH 262/265] add versioning --- website/dbt-versions.js | 4 ++++ website/sidebars.js | 1 + 2 files changed, 5 insertions(+) diff --git a/website/dbt-versions.js b/website/dbt-versions.js index 8689547fd67..910c4a6ef4d 100644 --- a/website/dbt-versions.js +++ b/website/dbt-versions.js @@ -174,6 +174,10 @@ exports.versionedPages = [ { "page": "reference/resource-configs/grants", "firstVersion": "1.2", + }, + { + "page": "docs/build/saved-queries", + "firstVersion": "1.7", } ] diff --git a/website/sidebars.js b/website/sidebars.js index beb282cfb14..fb0dfdaf559 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -297,6 +297,7 @@ const sidebarSettings = { "docs/build/about-metricflow", "docs/build/join-logic", "docs/build/validation", + "docs/build/saved-queries", "docs/build/metricflow-time-spine", "docs/build/metricflow-commands", ], From 63de44d3ebe297a96f051b10a5df92dc1f32bec4 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 17 Oct 2023 06:59:29 -0700 Subject: [PATCH 263/265] add landing page --- website/docs/docs/use-dbt-semantic-layer/dbt-sl.md | 6 ++++-- website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md | 2 -- website/sidebars.js | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md b/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md index ecb6b51a87b..8868c68ed20 100644 --- a/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/dbt-sl.md @@ -5,6 +5,8 @@ description: "Learn how the dbt Semantic Layer enables data teams to centrally d sidebar_label: "About the dbt Semantic Layer" tags: [Semantic Layer] hide_table_of_contents: true +pagination_next: "docs/use-dbt-semantic-layer/quickstart-sl" +pagination_prev: null --- @@ -54,8 +56,8 @@ plan="dbt Cloud Team or Enterprise" icon="dbt-bit"/> diff --git a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md index 14a07daa85a..d0e5df18d94 100644 --- a/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md +++ b/website/docs/docs/use-dbt-semantic-layer/quickstart-sl.md @@ -6,8 +6,6 @@ sidebar_label: "Get started with the dbt Semantic Layer" tags: [Semantic Layer] meta: api_name: dbt Semantic Layer APIs -pagination_next: "docs/use-dbt-semantic-layer/setup-sl" -pagination_prev: null --- diff --git a/website/sidebars.js b/website/sidebars.js index fb0dfdaf559..fc87c1142c7 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -457,8 +457,9 @@ const sidebarSettings = { type: "category", label: "Use the dbt Semantic Layer", collapsed: true, - link: { type: "doc", id: "docs/use-dbt-semantic-layer/quickstart-sl" }, + link: { type: "doc", id: "docs/use-dbt-semantic-layer/dbt-sl" }, items: [ + "docs/use-dbt-semantic-layer/dbt-sl", "docs/use-dbt-semantic-layer/quickstart-sl", "docs/use-dbt-semantic-layer/setup-sl", "docs/use-dbt-semantic-layer/sl-architecture", From b65b0dc1c5a70175750179cb9df0811ee6d7567d Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 17 Oct 2023 07:02:13 -0700 Subject: [PATCH 264/265] fix callout --- website/docs/docs/build/saved-queries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/saved-queries.md b/website/docs/docs/build/saved-queries.md index ced198d14f1..39a4b2e52fd 100644 --- a/website/docs/docs/build/saved-queries.md +++ b/website/docs/docs/build/saved-queries.md @@ -8,7 +8,7 @@ tags: [Metrics, Semantic Layer] :::info Saved queries coming soon Saved queries isn't currently available in MetricFlow but support is coming soon. - ::: +::: Saved queries are a way to save commonly used queries in MetricFlow. You can group metrics, dimensions, and filters that are logically related into a saved query. From c721a7f5929e46e34c6b45ead403a94e421dfeb5 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 17 Oct 2023 08:47:39 -0700 Subject: [PATCH 265/265] tweak --- .../release-notes/03-Oct-2023/dbt-deps-auto-install.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md index 33d13c44517..80963a9d550 100644 --- a/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md +++ b/website/docs/docs/dbt-versions/release-notes/03-Oct-2023/dbt-deps-auto-install.md @@ -13,8 +13,8 @@ This improved workflow is available to all multi-tenant dbt Cloud users (Single- However, you should still run the `dbt deps` command in these situations: -- When you make changes to the `packages.yml` or `dependencies.yml` file. -- When you update the package version in the `packages.yml` or `dependencies.yml` file. (From dbt v1.7 or higher) +- When you make changes to the `packages.yml` or `dependencies.yml` file during a session +- When you update the package version in the `packages.yml` or `dependencies.yml` file. - If you edit the `dependencies.yml` file and the number of packages remains the same, run `dbt deps`. (Note that this is a known bug dbt Labs will fix in the future.)

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 Vs^9s94@fcqfv2mV%Q~loCIHxj!UO;S literal 0 HcmV?d00001 From 02207fe917bdeebc8f302c7da384aac5d5dd1e2b Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 11 Oct 2023 13:38:54 +0100 Subject: [PATCH 104/265] better pic --- .../docs/cloud/about-cloud-develop-defer.md | 2 +- .../img/docs/dbt-cloud/defer-toggle.jpg | Bin 467442 -> 426911 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/about-cloud-develop-defer.md b/website/docs/docs/cloud/about-cloud-develop-defer.md index 438105a8378..77c92b8b32d 100644 --- a/website/docs/docs/cloud/about-cloud-develop-defer.md +++ b/website/docs/docs/cloud/about-cloud-develop-defer.md @@ -28,7 +28,7 @@ To enable 'Defer' in the dbt Cloud IDE, toggle the **Defer to production** butto For example, if you were to start developing on a new branch with [nothing in your development schema](/reference/node-selection/defer#usage), edit a single model, and run `dbt build -s state:modified` — only the edited model would run. Any `{{ ref() }}` functions will point to the production location of the referenced models. - + ### Defer in dbt Cloud CLI diff --git a/website/static/img/docs/dbt-cloud/defer-toggle.jpg b/website/static/img/docs/dbt-cloud/defer-toggle.jpg index 08efa0b2dd1cebf8a3acb140ae8e574dbf32091a..7bd5a1c12837c9d1b85e4d51d0d569f6ccd35a82 100644 GIT binary patch literal 426911 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�$pZ$^7%>^0W0uqj-!o&S_n{fR-;Q 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