From f6d9ce5dd2543b433e6cf11df97bb7b3f3ddd7c0 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 23 Oct 2024 16:55:14 +0100 Subject: [PATCH 01/29] add optimization tip --- website/docs/docs/deploy/ci-jobs.md | 18 +++++++++++------- website/docs/docs/deploy/job-commands.md | 11 ++++++++--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index 0bdf9e711f5..b4d5bf30223 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -6,11 +6,7 @@ description: "Learn how to create and set up CI checks to test code changes befo You can set up [continuous integration](/docs/deploy/continuous-integration) (CI) jobs to run when someone opens a new pull request (PR) in your dbt Git repository. By running and testing only _modified_ models, dbt Cloud ensures these jobs are as efficient and resource conscientious as possible on your data platform. -## Set up CI jobs {#set-up-ci-jobs} - -dbt Labs recommends that you create your CI job in a dedicated dbt Cloud [deployment environment](/docs/deploy/deploy-environments#create-a-deployment-environment) that's connected to a staging database. Having a separate environment dedicated for CI will provide better isolation between your temporary CI schema builds and your production data builds. Additionally, sometimes teams need their CI jobs to be triggered when a PR is made to a branch other than main. If your team maintains a staging branch as part of your release process, having a separate environment will allow you to set a [custom branch](/faqs/Environments/custom-branch-settings) and, accordingly, the CI job in that dedicated environment will be triggered only when PRs are made to the specified custom branch. To learn more, refer to [Get started with CI tests](/guides/set-up-ci). - -### Prerequisites +## Prerequisites - You have a dbt Cloud account. - CI features: - For both the [concurrent CI checks](/docs/deploy/continuous-integration#concurrent-ci-checks) and [smart cancellation of stale builds](/docs/deploy/continuous-integration#smart-cancellation) features, your dbt Cloud account must be on the [Team or Enterprise plan](https://www.getdbt.com/pricing/). @@ -20,6 +16,9 @@ dbt Labs recommends that you create your CI job in a dedicated dbt Cloud [deploy - Set up a [connection with your Git provider](/docs/cloud/git/git-configuration-in-dbt-cloud). This integration lets dbt Cloud run jobs on your behalf for job triggering. - If you're using a native [GitLab](/docs/cloud/git/connect-gitlab) integration, you need a paid or self-hosted account that includes support for GitLab webhooks and [project access tokens](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html). If you're using GitLab Free, merge requests will trigger CI jobs but CI job status updates (success or failure of the job) will not be reported back to GitLab. +## Set up CI jobs {#set-up-ci-jobs} + +dbt Labs recommends that you create your CI job in a dedicated dbt Cloud [deployment environment](/docs/deploy/deploy-environments#create-a-deployment-environment) that's connected to a staging database. Having a separate environment dedicated for CI will provide better isolation between your temporary CI schema builds and your production data builds. Additionally, sometimes teams need their CI jobs to be triggered when a PR is made to a branch other than main. If your team maintains a staging branch as part of your release process, having a separate environment will allow you to set a [custom branch](/faqs/Environments/custom-branch-settings) and, accordingly, the CI job in that dedicated environment will be triggered only when PRs are made to the specified custom branch. To learn more, refer to [Get started with CI tests](/guides/set-up-ci). To make CI job creation easier, many options on the **CI job** page are set to default values that dbt Labs recommends that you use. If you don't want to use the defaults, you can change them. @@ -38,8 +37,13 @@ To make CI job creation easier, many options on the **CI job** page are set to d - **Commands** — By default, it includes the `dbt build --select state:modified+` command. This informs dbt Cloud to build only new or changed models and their downstream dependents. Importantly, state comparison can only happen when there is a deferred environment selected to compare state to. Click **Add command** to add more [commands](/docs/deploy/job-commands) that you want to be invoked when this job runs. - **Linting** — Enable this option for dbt to [lint the SQL files](/docs/deploy/continuous-integration#sql-linting) in your project as the first step in `dbt run`. If this check runs into an error, dbt can either **Fail job run** or **Continue running job**. - **Run compare changes** — Enable this option to compare the last applied state of the production environment (if one exists) with the latest changes from the pull request, and identify what those differences are. To enable record-level comparison and primary key analysis, you must add a [primary key constraint](/reference/resource-properties/constraints) or [uniqueness test](/reference/resource-properties/data-tests#unique). Otherwise, you'll receive a "Primary key missing" error message in dbt Cloud. - + To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). + + :::info Optimization tip + When you enable the **Run compare changes** checkbox, if you have large models that take a long time to compare, you can exclude them from the comparison to speed up the CI job. Use the [custom dbt syntax](/docs/deploy/job-commands#advanced-ci-compare-changes)
`--select state:modified --exclude model_name` to skip specific models or groups of models with tags. + ::: + - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. :::info @@ -49,7 +53,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d - **Run timeout** — Cancel the CI job if the run time exceeds the timeout value. You can use this option to help ensure that a CI check doesn't consume too much of your warehouse resources. If you enable the **Run compare changes** option, the timeout value defaults to `3600` (one hour) to prevent long-running comparisons. -1. (optional) Options in the **Advanced settings** section: +2. (optional) Options in the **Advanced settings** section: - **Environment variables** — Define [environment variables](/docs/build/environment-variables) to customize the behavior of your project when this CI job runs. You can specify that a CI job is running in a _Staging_ or _CI_ environment by setting an environment variable and modifying your project code to behave differently, depending on the context. It's common for teams to process only a subset of data for CI runs, using environment variables to branch logic in their dbt project code. - **Target name** — Define the [target name](/docs/build/custom-target-names). Similar to **Environment Variables**, this option lets you customize the behavior of the project. You can use this option to specify that a CI job is running in a _Staging_ or _CI_ environment by setting the target name and modifying your project code to behave differently, depending on the context. - **dbt version** — By default, it’s set to inherit the [dbt version](/docs/dbt-versions/core) from the environment. dbt Labs strongly recommends that you don't change the default setting. This option to change the version at the job level is useful only when you upgrade a project to the next dbt version; otherwise, mismatched versions between the environment and job can lead to confusing behavior. diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index abea687f4db..a82b4a2a546 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -42,14 +42,19 @@ For every job, you have the option to select the [Generate docs on run](/docs/co You can add or remove as many dbt commands as necessary for every job. However, you need to have at least one dbt command. There are few commands listed as "dbt Cloud CLI" or "dbt Core" in the [dbt Command reference page](/reference/dbt-commands) page. This means they are meant for use in dbt Core or dbt Cloud CLI, and not in dbt Cloud IDE. - :::tip Using selectors -Use [selectors](/reference/node-selection/syntax) as a powerful way to select and execute portions of your project in a job run. For example, to run tests for one_specific_model, use the selector: `dbt test --select one_specific_model`. The job will still run if a selector doesn't match any models. +Use [selectors](/reference/node-selection/syntax) as a powerful way to select and execute portions of your project in a job run. For example, to run tests for one _specific_ model, use the selector: `dbt test --select one_specific_model`. The job will still run if a selector doesn't match any models. ::: -**Job outcome** — During a job run, the commands are "chained" together and executed as run steps. If one of the run steps in the chain fails, then the subsequent steps aren't executed, and the job will fail. +#### Advanced CI compare changes +For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. + +For example, to exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. + +#### Job outcome +During a job run, the commands are "chained" together and executed as run steps. If one of the run steps in the chain fails, then the subsequent steps aren't executed, and the job will fail. In the following example image, the first four run steps are successful. However, if the fifth run step (`dbt run --select state:modified+ --full-refresh --fail-fast`) fails, then the next run steps aren't executed, and the entire job fails. The failed job returns a non-zero [exit code](/reference/exit-codes) and "Error" job status: From b47f065c6d08bf20154a3f2ea982bf9507f77262 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:58:41 +0100 Subject: [PATCH 02/29] Update ci-jobs.md --- website/docs/docs/deploy/ci-jobs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index b4d5bf30223..34b4874858c 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -53,7 +53,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d - **Run timeout** — Cancel the CI job if the run time exceeds the timeout value. You can use this option to help ensure that a CI check doesn't consume too much of your warehouse resources. If you enable the **Run compare changes** option, the timeout value defaults to `3600` (one hour) to prevent long-running comparisons. -2. (optional) Options in the **Advanced settings** section: +1. (optional) Options in the **Advanced settings** section: - **Environment variables** — Define [environment variables](/docs/build/environment-variables) to customize the behavior of your project when this CI job runs. You can specify that a CI job is running in a _Staging_ or _CI_ environment by setting an environment variable and modifying your project code to behave differently, depending on the context. It's common for teams to process only a subset of data for CI runs, using environment variables to branch logic in their dbt project code. - **Target name** — Define the [target name](/docs/build/custom-target-names). Similar to **Environment Variables**, this option lets you customize the behavior of the project. You can use this option to specify that a CI job is running in a _Staging_ or _CI_ environment by setting the target name and modifying your project code to behave differently, depending on the context. - **dbt version** — By default, it’s set to inherit the [dbt version](/docs/dbt-versions/core) from the environment. dbt Labs strongly recommends that you don't change the default setting. This option to change the version at the job level is useful only when you upgrade a project to the next dbt version; otherwise, mismatched versions between the environment and job can lead to confusing behavior. From 3cd60d599b6143b1f36e2189568e9b545291f71c Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:59:22 +0100 Subject: [PATCH 03/29] Update website/docs/docs/deploy/job-commands.md --- website/docs/docs/deploy/job-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index a82b4a2a546..5879005faa1 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -49,7 +49,7 @@ Use [selectors](/reference/node-selection/syntax) as a powerful way to select an ::: #### Advanced CI compare changes -For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. +For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use a custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. For example, to exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. From 7c9ccb2214e0229c13e4ca0d746f77bddd9f5937 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 23 Oct 2024 17:11:20 +0100 Subject: [PATCH 04/29] reuben's updates --- website/docs/docs/deploy/ci-jobs.md | 2 +- website/docs/docs/deploy/job-commands.md | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index b4d5bf30223..74579b257b3 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -41,7 +41,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). :::info Optimization tip - When you enable the **Run compare changes** checkbox, if you have large models that take a long time to compare, you can exclude them from the comparison to speed up the CI job. Use the [custom dbt syntax](/docs/deploy/job-commands#advanced-ci-compare-changes)
`--select state:modified --exclude model_name` to skip specific models or groups of models with tags. + When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the `--exclude` flag. Use [custom dbt syntaxes](/docs/deploy/job-commands#advanced-ci-compare-changes) for the list of syntaxes to modify the selection criteria. ::: - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index a82b4a2a546..71c55a74295 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -48,10 +48,14 @@ Use [selectors](/reference/node-selection/syntax) as a powerful way to select an ::: -#### Advanced CI compare changes -For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. +#### Advanced CI compare changes syntaxs +For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. -For example, to exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. +Here are some examples of how you can customize the comparison command: + +- To exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. +- To exclude models based on tags, use `--select state modified --exclude tag:tagname_a tag:tagname_b`. +- To include models that were directly modified and also those one step downstream, use `--select state:modified+1`. #### Job outcome During a job run, the commands are "chained" together and executed as run steps. If one of the run steps in the chain fails, then the subsequent steps aren't executed, and the job will fail. From 1d8f8b69dbdb04c0a1c0229a4a9efbb18ebe2721 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 23 Oct 2024 17:18:05 +0100 Subject: [PATCH 05/29] update header --- website/docs/docs/deploy/ci-jobs.md | 4 ++-- website/docs/docs/deploy/job-commands.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index abd3fb41a7b..c717279685e 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -41,7 +41,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). :::info Optimization tip - When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the `--exclude` flag. Use [custom dbt syntaxes](/docs/deploy/job-commands#advanced-ci-compare-changes) for the list of syntaxes to modify the selection criteria. + When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the `--exclude` flag. Use [custom commands](/docs/deploy/job-commands#advanced-ci-compare-changes) to modify the selection criteria. ::: - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. @@ -53,7 +53,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d - **Run timeout** — Cancel the CI job if the run time exceeds the timeout value. You can use this option to help ensure that a CI check doesn't consume too much of your warehouse resources. If you enable the **Run compare changes** option, the timeout value defaults to `3600` (one hour) to prevent long-running comparisons. -1. (optional) Options in the **Advanced settings** section: +2. (optional) Options in the **Advanced settings** section: - **Environment variables** — Define [environment variables](/docs/build/environment-variables) to customize the behavior of your project when this CI job runs. You can specify that a CI job is running in a _Staging_ or _CI_ environment by setting an environment variable and modifying your project code to behave differently, depending on the context. It's common for teams to process only a subset of data for CI runs, using environment variables to branch logic in their dbt project code. - **Target name** — Define the [target name](/docs/build/custom-target-names). Similar to **Environment Variables**, this option lets you customize the behavior of the project. You can use this option to specify that a CI job is running in a _Staging_ or _CI_ environment by setting the target name and modifying your project code to behave differently, depending on the context. - **dbt version** — By default, it’s set to inherit the [dbt version](/docs/dbt-versions/core) from the environment. dbt Labs strongly recommends that you don't change the default setting. This option to change the version at the job level is useful only when you upgrade a project to the next dbt version; otherwise, mismatched versions between the environment and job can lead to confusing behavior. diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index 250cc7106c6..ccb6648a748 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -48,7 +48,7 @@ Use [selectors](/reference/node-selection/syntax) as a powerful way to select an ::: -#### Advanced CI compare changes +#### Compare changes custom commands For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use a custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. Here are some examples of how you can customize the comparison command: From f104df6e0f456a59c6934a5fa873a8dbc92da068 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:35:24 +0100 Subject: [PATCH 06/29] Update website/docs/docs/deploy/job-commands.md --- website/docs/docs/deploy/job-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index ccb6648a748..cb5ba5ab2e4 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -55,7 +55,7 @@ Here are some examples of how you can customize the comparison command: - To exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. - To exclude models based on tags, use `--select state modified --exclude tag:tagname_a tag:tagname_b`. -- To include models that were directly modified and also those one step downstream, use `--select state:modified+1`. +- To include models that were directly modified and also those one step downstream, use `--select state:modified+`. #### Job outcome During a job run, the commands are "chained" together and executed as run steps. If one of the run steps in the chain fails, then the subsequent steps aren't executed, and the job will fail. From be7c9d1419e81ed60157cbf9d0fe4f1df4fab9c2 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:36:53 +0100 Subject: [PATCH 07/29] Update website/docs/docs/deploy/job-commands.md --- website/docs/docs/deploy/job-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index cb5ba5ab2e4..ccb6648a748 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -55,7 +55,7 @@ Here are some examples of how you can customize the comparison command: - To exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. - To exclude models based on tags, use `--select state modified --exclude tag:tagname_a tag:tagname_b`. -- To include models that were directly modified and also those one step downstream, use `--select state:modified+`. +- To include models that were directly modified and also those one step downstream, use `--select state:modified+1`. #### Job outcome During a job run, the commands are "chained" together and executed as run steps. If one of the run steps in the chain fails, then the subsequent steps aren't executed, and the job will fail. From 0c3b98377a73a999f566ccf873fb156fe4037feb Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 23 Oct 2024 17:39:10 +0100 Subject: [PATCH 08/29] add url img --- website/docs/docs/deploy/advanced-ci.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/docs/deploy/advanced-ci.md b/website/docs/docs/deploy/advanced-ci.md index e3f7cc7c9ae..71938d97301 100644 --- a/website/docs/docs/deploy/advanced-ci.md +++ b/website/docs/docs/deploy/advanced-ci.md @@ -3,6 +3,7 @@ title: "Advanced CI" id: "advanced-ci" sidebar_label: "Advanced CI" description: "Advanced CI enables developers to compare changes by demonstrating the changes the code produces." +image: /img/docs/dbt-cloud/example-ci-compare-changes-tab.png --- # Advanced CI From 169fcd798c66dcf2162f7b6aad8802288cf50a89 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 28 Oct 2024 17:17:53 +0000 Subject: [PATCH 09/29] Update website/docs/docs/deploy/ci-jobs.md --- website/docs/docs/deploy/ci-jobs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index c717279685e..bdfeebb9cf7 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -41,7 +41,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). :::info Optimization tip - When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the `--exclude` flag. Use [custom commands](/docs/deploy/job-commands#advanced-ci-compare-changes) to modify the selection criteria. + When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Use [custom commands](/docs/deploy/job-commands#advanced-ci-compare-changes) to modify the selection criteria. ::: - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. From 5a6ed0cdfcbdc8463edae86a33f97ed33102a14a Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 28 Oct 2024 17:19:45 +0000 Subject: [PATCH 10/29] Update website/docs/docs/deploy/ci-jobs.md --- website/docs/docs/deploy/ci-jobs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index bdfeebb9cf7..f1b0a0fb253 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -41,7 +41,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). :::info Optimization tip - When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Use [custom commands](/docs/deploy/job-commands#advanced-ci-compare-changes) to modify the selection criteria. + When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Use [custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) to modify the selection criteria. ::: - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. From 44a9a4053f1c7c93e48160ac50176e6cc181c63b Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 30 Oct 2024 13:55:13 +0000 Subject: [PATCH 11/29] Update website/docs/docs/deploy/ci-jobs.md --- website/docs/docs/deploy/ci-jobs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index 17568af3c7c..5fe3d460952 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -41,7 +41,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). :::info Optimization tip - When you enable the **Run compare changes** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Use [custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) to modify the selection criteria. + When you enable the **dbt compare** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Use [custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) to modify the selection criteria. ::: - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. From a0e441e39302342004efc67324e8c98ec517498a Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 30 Oct 2024 14:00:53 +0000 Subject: [PATCH 12/29] add rn --- website/docs/docs/dbt-versions/release-notes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/docs/docs/dbt-versions/release-notes.md b/website/docs/docs/dbt-versions/release-notes.md index 2fdb0207774..423ee936049 100644 --- a/website/docs/docs/dbt-versions/release-notes.md +++ b/website/docs/docs/dbt-versions/release-notes.md @@ -18,6 +18,10 @@ Release notes are grouped by month for both multi-tenant and virtual private clo \* The official release date for this new format of release notes is May 15th, 2024. Historical release notes for prior dates may not reflect all available features released earlier this year or their tenancy availability. +## November 2024 + +- **Enhancement**: For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use a custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Refer to [Compare changes custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) for examples of how to customize the comparison command. + ## October 2024 - **Fix:** Previously, POST requests to the Jobs API with invalid `cron` strings would return HTTP response status code 500s but would update the underlying entity. Now, POST requests to the Jobs API with invalid `cron` strings will result in status code 400s, without the underlying entity being updated. From 00ceba84c9ab2e8e8ce6741aafb3a769a92e0f3f Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:52:56 +0000 Subject: [PATCH 13/29] Update website/docs/docs/deploy/job-commands.md Co-authored-by: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> --- website/docs/docs/deploy/job-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index ccb6648a748..765e0a713b1 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -51,7 +51,7 @@ Use [selectors](/reference/node-selection/syntax) as a powerful way to select an #### Compare changes custom commands For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use a custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. -Here are some examples of how you can customize the comparison command: +The following examples highlight how you can customize the comparison command: - To exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. - To exclude models based on tags, use `--select state modified --exclude tag:tagname_a tag:tagname_b`. From ccbef5105e9888ce542637223328d288361a304a Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:55:34 +0000 Subject: [PATCH 14/29] Update website/docs/docs/dbt-versions/release-notes.md Co-authored-by: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> --- website/docs/docs/dbt-versions/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes.md b/website/docs/docs/dbt-versions/release-notes.md index 423ee936049..79e41584926 100644 --- a/website/docs/docs/dbt-versions/release-notes.md +++ b/website/docs/docs/dbt-versions/release-notes.md @@ -20,7 +20,7 @@ Release notes are grouped by month for both multi-tenant and virtual private clo ## November 2024 -- **Enhancement**: For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use a custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Refer to [Compare changes custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) for examples of how to customize the comparison command. +- **Enhancement**: For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can optimize performance when running comparisons by using custom dbt syntax to exclude specific large models (or groups of models with tags). Refer to [Compare changes custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) for examples of how to customize the comparison command. ## October 2024 From bb4dd651f35c523c2dda6965caadfc2ab032ffac Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 4 Nov 2024 10:09:11 +0000 Subject: [PATCH 15/29] add more context --- website/docs/docs/deploy/job-commands.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index 765e0a713b1..2e1cbc38619 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -53,9 +53,20 @@ For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#com The following examples highlight how you can customize the comparison command: -- To exclude the large `fct_orders` model from the comparison, use the `--select state:modified --exclude fct_orders` syntax. -- To exclude models based on tags, use `--select state modified --exclude tag:tagname_a tag:tagname_b`. -- To include models that were directly modified and also those one step downstream, use `--select state:modified+1`. +- Exclude the large `fct_orders` model from the comparison to run a CI job on fewer or smaller models and reduce job time/resource consumption. Use the following command: + + ```sql + --select state:modified --exclude fct_orders + ``` +- Exclude models based on tags for scenarios like when models share a common feature or function. Use the following command: + + ```sql + --select state modified --exclude tag:tagname_a tag:tagname_b + ``` +- Include models that were directly modified and also those one step downstream using the `modified+1` selector. Use the following command: + ```sql + --select state:modified+1 + ``` #### Job outcome During a job run, the commands are "chained" together and executed as run steps. If one of the run steps in the chain fails, then the subsequent steps aren't executed, and the job will fail. From 17e974adc9de0e6da34b936317f6f2266b6fac76 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 5 Nov 2024 09:31:45 +0000 Subject: [PATCH 16/29] Update job-commands.md Co-authored-by: Joel Labes --- website/docs/docs/deploy/job-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index 2e1cbc38619..20b815bec9f 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -44,7 +44,7 @@ You can add or remove as many dbt commands as necessary for every job. However, :::tip Using selectors -Use [selectors](/reference/node-selection/syntax) as a powerful way to select and execute portions of your project in a job run. For example, to run tests for one _specific_ model, use the selector: `dbt test --select one_specific_model`. The job will still run if a selector doesn't match any models. +Use [selectors](/reference/node-selection/syntax) as a powerful way to select and execute portions of your project in a job run. For example, to run tests for `one_specific_model`, use the selector: `dbt test --select one_specific_model`. The job will still run if a selector doesn't match any models. ::: From 87429f325ff88a66ba1425ac21118555a4a94b0b Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 5 Nov 2024 12:52:34 +0000 Subject: [PATCH 17/29] add img --- website/docs/docs/deploy/ci-jobs.md | 4 +++- website/docs/docs/deploy/job-commands.md | 6 ++++-- website/static/img/docs/deploy/dbt-compare.jpg | Bin 0 -> 208824 bytes 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 website/static/img/docs/deploy/dbt-compare.jpg diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index 5fe3d460952..8cc17311e25 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -41,7 +41,9 @@ To make CI job creation easier, many options on the **CI job** page are set to d To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). :::info Optimization tip - When you enable the **dbt compare** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Use [custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) to modify the selection criteria. + When you enable the **dbt compare** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Refer to [compare changes custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) for more details. + + Additionally, if you set [`event_time`](/docs/build/incremental-microbatch#relevant-configs) in your models/seeds/snapshots/sources, it allows you to compare matching date ranges between tables by filtering to overlapping date ranges. This is useful for faster CI workflow or custom sampling set ups. ::: - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. diff --git a/website/docs/docs/deploy/job-commands.md b/website/docs/docs/deploy/job-commands.md index 20b815bec9f..88456d22f25 100644 --- a/website/docs/docs/deploy/job-commands.md +++ b/website/docs/docs/deploy/job-commands.md @@ -49,9 +49,11 @@ Use [selectors](/reference/node-selection/syntax) as a powerful way to select an ::: #### Compare changes custom commands -For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can use a custom dbt syntax to exclude specific large models (or groups of models with tags) to optimize running the comparison. Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. +For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled and selected the **dbt compare** checkbox, you can add custom dbt commands to optimize running the comparison (for example, to exclude specific large models, or groups of models with tags). Running comparisons on large models can significantly increase the time it takes for CI jobs to complete. -The following examples highlight how you can customize the comparison command: + + +The following examples highlight how you can customize the dbt compare command box: - Exclude the large `fct_orders` model from the comparison to run a CI job on fewer or smaller models and reduce job time/resource consumption. Use the following command: diff --git a/website/static/img/docs/deploy/dbt-compare.jpg b/website/static/img/docs/deploy/dbt-compare.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7f27d31efa395c2f190cfa9d54cff6add12e4a5 GIT binary patch literal 208824 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 z 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⪙ZA;#d(vJebXQe?G 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 z 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⁣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 g|DS}fFNv4U6s}`lvvS#=0e(~zG#{79J$v Date: Tue, 5 Nov 2024 12:53:10 +0000 Subject: [PATCH 18/29] add link --- website/docs/docs/deploy/advanced-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/advanced-ci.md b/website/docs/docs/deploy/advanced-ci.md index b24cf37b523..f8254b62e95 100644 --- a/website/docs/docs/deploy/advanced-ci.md +++ b/website/docs/docs/deploy/advanced-ci.md @@ -23,7 +23,7 @@ dbt Labs plans to provide additional Advanced CI features in the near future. Mo ## Compare changes feature {#compare-changes} -For [CI jobs](/docs/deploy/ci-jobs) that have the **dbt compare** option enabled, dbt Cloud compares the changes between the last applied state of the production environment (defaulting to deferral for lower compute costs) and the latest changes from the pull request, whenever a pull request is opened or new commits are pushed. +For [CI jobs](/docs/deploy/ci-jobs) that have the [**dbt compare** option enabled](/docs/deploy/ci-jobs#set-up-ci-jobs), dbt Cloud compares the changes between the last applied state of the production environment (defaulting to deferral for lower compute costs) and the latest changes from the pull request, whenever a pull request is opened or new commits are pushed. dbt reports the comparison differences in: From 6a7e23aacc30bf6829f61861cb2e007a89ee0a37 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Tue, 12 Nov 2024 12:31:51 +0000 Subject: [PATCH 19/29] update sql linting to ga --- .../docs/cloud/dbt-cloud-ide/lint-format.md | 3 ++- .../docs/docs/dbt-versions/release-notes.md | 1 + website/docs/docs/deploy/ci-jobs.md | 4 ++-- .../docs/deploy/continuous-integration.md | 22 ++++++++++++------- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/website/docs/docs/cloud/dbt-cloud-ide/lint-format.md b/website/docs/docs/cloud/dbt-cloud-ide/lint-format.md index d14435a97e0..abd3c86d4a8 100644 --- a/website/docs/docs/cloud/dbt-cloud-ide/lint-format.md +++ b/website/docs/docs/cloud/dbt-cloud-ide/lint-format.md @@ -81,7 +81,7 @@ To configure your own linting rules: :::tip Configure dbtonic linting rules -Refer to the [SQLFluff config file](https://github.com/dbt-labs/jaffle-shop-template/blob/main/.sqlfluff) to add the dbt code (or dbtonic) rules we use for our own projects: +Refer to the [Jaffle shop SQLFluff config file](https://github.com/dbt-labs/jaffle-shop-template/blob/main/.sqlfluff) for dbt-specific (or dbtonic) linting rules we use for our own projects:

dbtonic config code example provided by dbt Labs @@ -231,3 +231,4 @@ To avoid this, break up your model into smaller models (files) so that they are - [User interface](/docs/cloud/dbt-cloud-ide/ide-user-interface) - [Keyboard shortcuts](/docs/cloud/dbt-cloud-ide/keyboard-shortcuts) +- [SQL linting in CI jobs](/docs/deploy/continuous-integration#sql-linting) diff --git a/website/docs/docs/dbt-versions/release-notes.md b/website/docs/docs/dbt-versions/release-notes.md index 6759a026e02..85ec50daf64 100644 --- a/website/docs/docs/dbt-versions/release-notes.md +++ b/website/docs/docs/dbt-versions/release-notes.md @@ -19,6 +19,7 @@ Release notes are grouped by month for both multi-tenant and virtual private clo \* The official release date for this new format of release notes is May 15th, 2024. Historical release notes for prior dates may not reflect all available features released earlier this year or their tenancy availability. ## November 2024 +- **New**: SQL linting in CI jobs is now generally available in dbt Cloud. You can enable SQL linting in your CI jobs, using [SQLFluff](https://sqlfluff.com/), to automatically lint all SQL files in your project as a run step before your CI job builds. Refer to [SQL linting](/docs/deploy/continuous-integration#sql-linting) for more information. - **Fix**: This update improves [dbt Semantic Layer Tableau integration](/docs/cloud-integrations/semantic-layer/tableau) making query parsing more reliable. Some key fixes include: - Error messages for unsupported joins between saved queries and ALL tables. - Improved handling of queries when multiple tables are selected in a data source. diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index 7ab7f65796d..2b690ff6aae 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -14,7 +14,7 @@ dbt Labs recommends that you create your CI job in a dedicated dbt Cloud [deploy - You have a dbt Cloud account. - CI features: - For both the [concurrent CI checks](/docs/deploy/continuous-integration#concurrent-ci-checks) and [smart cancellation of stale builds](/docs/deploy/continuous-integration#smart-cancellation) features, your dbt Cloud account must be on the [Team or Enterprise plan](https://www.getdbt.com/pricing/). - - The [SQL linting](/docs/deploy/continuous-integration#sql-linting) feature is currently available in [beta](/docs/dbt-versions/product-lifecycles#dbt-cloud) to a limited group of users and is gradually being rolled out. If you're in the beta, the **Linting** option is available for use. + - For the [SQL linting](/docs/deploy/continuous-integration#sql-linting) feature, you should have [SQLFluff configured](/docs/deploy/continuous-integration#to-configure-sqlfluff-linting) in your project. - [Advanced CI](/docs/deploy/advanced-ci) features: - For the [compare changes](/docs/deploy/advanced-ci#compare-changes) feature, your dbt Cloud account must be on the [Enterprise plan](https://www.getdbt.com/pricing/) and have enabled Advanced CI features. Please ask your [dbt Cloud administrator to enable](/docs/cloud/account-settings#account-access-to-advanced-ci-features) this feature for you. After enablement, the **dbt compare** option becomes available in the CI job settings. - Set up a [connection with your Git provider](/docs/cloud/git/git-configuration-in-dbt-cloud). This integration lets dbt Cloud run jobs on your behalf for job triggering. @@ -36,7 +36,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d 4. Options in the **Execution settings** section: - **Commands** — By default, this includes the `dbt build --select state:modified+` command. This informs dbt Cloud to build only new or changed models and their downstream dependents. Importantly, state comparison can only happen when there is a deferred environment selected to compare state to. Click **Add command** to add more [commands](/docs/deploy/job-commands) that you want to be invoked when this job runs. - - **Linting** — Enable this option for dbt to [lint the SQL files](/docs/deploy/continuous-integration#sql-linting) in your project as the first step in `dbt run`. If this check runs into an error, dbt can either **Stop running on error** or **Continue running on error**. + - **Linting** — Enable this option for dbt to [lint the SQL files](/docs/deploy/continuous-integration#sql-linting) in your project as the first step in `dbt run`. If this check runs into an error, dbt can either **Stop running on error** or **Continue running on error**. - **dbt compare** — Enable this option to compare the last applied state of the production environment (if one exists) with the latest changes from the pull request, and identify what those differences are. To enable record-level comparison and primary key analysis, you must add a [primary key constraint](/reference/resource-properties/constraints) or [uniqueness test](/reference/resource-properties/data-tests#unique). Otherwise, you'll receive a "Primary key missing" error message in dbt Cloud. To review the comparison report, navigate to the [Compare tab](/docs/deploy/run-visibility#compare-tab) in the job run's details. A summary of the report is also available from the pull request in your Git provider (see the [CI report example](#example-ci-report)). diff --git a/website/docs/docs/deploy/continuous-integration.md b/website/docs/docs/deploy/continuous-integration.md index 4e152b0a97e..d50b6f44eb4 100644 --- a/website/docs/docs/deploy/continuous-integration.md +++ b/website/docs/docs/deploy/continuous-integration.md @@ -31,10 +31,10 @@ dbt Cloud deletes the temporary schema from your  w The [dbt Cloud scheduler](/docs/deploy/job-scheduler) executes CI jobs differently from other deployment jobs in these important ways: -- **Concurrent CI checks** — CI runs triggered by the same dbt Cloud CI job execute concurrently (in parallel), when appropriate. -- **Smart cancellation of stale builds** — Automatically cancels stale, in-flight CI runs when there are new commits to the PR. -- **Run slot treatment** — CI runs don't consume a run slot. -- **SQL linting** — When enabled, automatically lints all SQL files in your project as a run step before your CI job builds. +- [**Concurrent CI checks**](#concurrent-ci-checks) — CI runs triggered by the same dbt Cloud CI job execute concurrently (in parallel), when appropriate. +- [**Smart cancellation of stale builds**](#smart-cancellation-of-stale-builds) — Automatically cancels stale, in-flight CI runs when there are new commits to the PR. +- [**Run slot treatment**](#run-slot-treatment) — CI runs don't consume a run slot. +- [**SQL linting**](#sql-linting) — When enabled, automatically lints all SQL files in your project as a run step before your CI job builds. ### Concurrent CI checks @@ -56,10 +56,16 @@ When you push a new commit to a PR, dbt Cloud enqueues a new CI run for the late CI runs don't consume run slots. This guarantees a CI check will never block a production run. -### SQL linting +### SQL linting -When enabled for your CI job, dbt invokes [SQLFluff](https://sqlfluff.com/) which is a modular and configurable SQL linter that warns you of complex functions, syntax, formatting, and compilation errors. By default, it lints all the changed SQL files in your project (compared to the last deferred production state). +When [enabled for your CI job](/docs/deploy/ci-jobs#set-up-ci-jobs), dbt invokes [SQLFluff](https://sqlfluff.com/) which is a modular and configurable SQL linter that warns you of complex functions, syntax, formatting, and compilation errors. By default, it lints all the changed SQL files in your project (compared to the last deferred production state). -If the linter runs into errors, you can specify whether dbt should stop running the job on error or continue running it on error. When failing jobs, it helps reduce compute costs by avoiding builds for pull requests that don't meet your SQL code quality CI check. +If the linter runs into errors, you can specify whether dbt should stop running the job on error or continue running it on error. When failing jobs, it helps reduce compute costs by avoiding builds for pull requests that don't meet your SQL code quality CI check. -You can use [SQLFluff Configuration Files](https://docs.sqlfluff.com/en/stable/configuration/setting_configuration.html#configuration-files) to override the default linting behavior in dbt. Create an `.sqlfluff` configuration file in your project, add your linting rules to it, and dbt Cloud will use them when linting. For complete details, refer to [Custom Usage](https://docs.sqlfluff.com/en/stable/gettingstarted.html#custom-usage) in the SQLFluff documentation. +#### To configure SQLFluff linting: + +- Use [SQLFluff Configuration Files](https://docs.sqlfluff.com/en/stable/configuration/setting_configuration.html#configuration-files) to override the default linting behavior in dbt. +- Create a `.sqlfluff` configuration file in your project, add your linting rules to it, and dbt Cloud will use them when linting. + - When configuring, you can use `dbt` as the templater (for example, `templater = dbt`) + - If you’re using the dbt Cloud IDE, dbt Cloud CLI, or any other editor, refer to [Customize linting](/docs/cloud/dbt-cloud-ide/lint-format#customize-linting) for guidance on how to add dbt-specific (or dbtonic) linting rules we use for own project. +- For complete details, refer to [Custom Usage](https://docs.sqlfluff.com/en/stable/gettingstarted.html#custom-usage) in the SQLFluff documentation. From ec9e2acfe97c442269c4fa96a09f40624e127b87 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 12 Nov 2024 15:39:45 +0000 Subject: [PATCH 20/29] Update continuous-integration.md --- website/docs/docs/deploy/continuous-integration.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/deploy/continuous-integration.md b/website/docs/docs/deploy/continuous-integration.md index d50b6f44eb4..848d5a0ac93 100644 --- a/website/docs/docs/deploy/continuous-integration.md +++ b/website/docs/docs/deploy/continuous-integration.md @@ -5,7 +5,7 @@ description: "You can set up continuous integration (CI) checks to test every si pagination_next: "docs/deploy/advanced-ci" --- -To implement a continuous integration (CI) workflow in dbt Cloud, you can set up automation that tests code changes by running [CI jobs](/docs/deploy/ci-jobs) before merging to production. dbt Cloud tracks the state of what’s running in your production environment so, when you run a CI job, only the modified data assets in your pull request (PR) and their downstream dependencies are built and tested in a staging schema. You can also view the status of the CI checks (tests) directly from within the PR; this information is posted to your Git provider as soon as a CI job completes. Additionally, you can enable settings in your Git provider that allow PRs only with successful CI checks be approved for merging. +To implement a continuous integration (CI) workflow in dbt Cloud, you can set up automation that tests code changes by running [CI jobs](/docs/deploy/ci-jobs) before merging to production. dbt Cloud tracks the state of what’s running in your production environment so, when you run a CI job, only the modified data assets in your pull request (PR) and their downstream dependencies are built and tested in a staging schema. You can also view the status of the CI checks (tests) directly from within the PR; this information is posted to your Git provider as soon as a CI job completes. Additionally, you can enable settings in your Git provider that allow PRs only with successful CI checks to be approved for merging. @@ -13,11 +13,11 @@ Using CI helps: - Provide increased confidence and assurances that project changes will work as expected in production. - Reduce the time it takes to push code changes to production, through build and test automation, leading to better business outcomes. -- Allow organizations to make code changes in a standardized and governed way that ensure code quality without sacrificing speed. +- Allow organizations to make code changes in a standardized and governed way that ensures code quality without sacrificing speed. ## How CI works -When you [set up CI jobs](/docs/deploy/ci-jobs#set-up-ci-jobs), dbt Cloud listens for notification from your Git provider indicating that a new PR has been opened or updated with new commits. When dbt Cloud receives one of these notifications, it enqueues a new run of the CI job. +When you [set up CI jobs](/docs/deploy/ci-jobs#set-up-ci-jobs), dbt Cloud listens for a notification from your Git provider indicating that a new PR has been opened or updated with new commits. When dbt Cloud receives one of these notifications, it enqueues a new run of the CI job. dbt Cloud builds and tests models, semantic models, metrics, and saved queries affected by the code change in a temporary schema, unique to the PR. This process ensures that the code builds without error and that it matches the expectations as defined by the project's dbt tests. The unique schema name follows the naming convention `dbt_cloud_pr__` (for example, `dbt_cloud_pr_1862_1704`) and can be found in the run details for the given run, as shown in the following image: @@ -40,7 +40,7 @@ The [dbt Cloud scheduler](/docs/deploy/job-scheduler) executes CI jobs different When you have teammates collaborating on the same dbt project creating pull requests on the same dbt repository, the same CI job will get triggered. Since each run builds into a dedicated, temporary schema that’s tied to the pull request, dbt Cloud can safely execute CI runs _concurrently_ instead of _sequentially_ (differing from what is done with deployment dbt Cloud jobs). Because no one needs to wait for one CI run to finish before another one can start, with concurrent CI checks, your whole team can test and integrate dbt code faster. -Below describes the conditions when CI checks are run concurrently and when they’re not: +The following describes the conditions when CI checks are run concurrently and when they’re not: - CI runs with different PR numbers execute concurrently. - CI runs with the _same_ PR number and _different_ commit SHAs execute serially because they’re building into the same schema. dbt Cloud will run the latest commit and cancel any older, stale commits. For details, refer to [Smart cancellation of stale builds](#smart-cancellation). @@ -56,9 +56,11 @@ When you push a new commit to a PR, dbt Cloud enqueues a new CI run for the late CI runs don't consume run slots. This guarantees a CI check will never block a production run. -### SQL linting +### SQL linting -When [enabled for your CI job](/docs/deploy/ci-jobs#set-up-ci-jobs), dbt invokes [SQLFluff](https://sqlfluff.com/) which is a modular and configurable SQL linter that warns you of complex functions, syntax, formatting, and compilation errors. By default, it lints all the changed SQL files in your project (compared to the last deferred production state). +Available for [dbt Cloud Versionless](/docs/dbt-versions/versionless-cloud) and dbt Cloud Team or Enterprise accounts. + +When [enabled for your CI job](/docs/deploy/ci-jobs#set-up-ci-jobs), dbt invokes [SQLFluff](https://sqlfluff.com/) which is a modular and configurable SQL linter that warns you of complex functions, syntax, formatting, and compilation errors. By default, it lints all the changed SQL files in your project (compared to the last deferred production state). If the linter runs into errors, you can specify whether dbt should stop running the job on error or continue running it on error. When failing jobs, it helps reduce compute costs by avoiding builds for pull requests that don't meet your SQL code quality CI check. From e9791f486e50aeca5773dab4dc9e9827a4946d07 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 12 Nov 2024 15:41:50 +0000 Subject: [PATCH 21/29] Update ci-jobs.md --- website/docs/docs/deploy/ci-jobs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index 2b690ff6aae..89f397a0eba 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -14,7 +14,7 @@ dbt Labs recommends that you create your CI job in a dedicated dbt Cloud [deploy - You have a dbt Cloud account. - CI features: - For both the [concurrent CI checks](/docs/deploy/continuous-integration#concurrent-ci-checks) and [smart cancellation of stale builds](/docs/deploy/continuous-integration#smart-cancellation) features, your dbt Cloud account must be on the [Team or Enterprise plan](https://www.getdbt.com/pricing/). - - For the [SQL linting](/docs/deploy/continuous-integration#sql-linting) feature, you should have [SQLFluff configured](/docs/deploy/continuous-integration#to-configure-sqlfluff-linting) in your project. + - [SQL linting](/docs/deploy/continuous-integration#sql-linting) is available on [dbt Cloud Versionless](/docs/dbt-versions/versionless-cloud) and to dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) accounts. You should have [SQLFluff configured](/docs/deploy/continuous-integration#to-configure-sqlfluff-linting) in your project. - [Advanced CI](/docs/deploy/advanced-ci) features: - For the [compare changes](/docs/deploy/advanced-ci#compare-changes) feature, your dbt Cloud account must be on the [Enterprise plan](https://www.getdbt.com/pricing/) and have enabled Advanced CI features. Please ask your [dbt Cloud administrator to enable](/docs/cloud/account-settings#account-access-to-advanced-ci-features) this feature for you. After enablement, the **dbt compare** option becomes available in the CI job settings. - Set up a [connection with your Git provider](/docs/cloud/git/git-configuration-in-dbt-cloud). This integration lets dbt Cloud run jobs on your behalf for job triggering. From 3434494dbd80a3c535547cf792442f70a3c9d4b9 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 12 Nov 2024 15:42:37 +0000 Subject: [PATCH 22/29] Update release-notes.md --- website/docs/docs/dbt-versions/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes.md b/website/docs/docs/dbt-versions/release-notes.md index 85ec50daf64..81d79ea238c 100644 --- a/website/docs/docs/dbt-versions/release-notes.md +++ b/website/docs/docs/dbt-versions/release-notes.md @@ -19,7 +19,7 @@ Release notes are grouped by month for both multi-tenant and virtual private clo \* The official release date for this new format of release notes is May 15th, 2024. Historical release notes for prior dates may not reflect all available features released earlier this year or their tenancy availability. ## November 2024 -- **New**: SQL linting in CI jobs is now generally available in dbt Cloud. You can enable SQL linting in your CI jobs, using [SQLFluff](https://sqlfluff.com/), to automatically lint all SQL files in your project as a run step before your CI job builds. Refer to [SQL linting](/docs/deploy/continuous-integration#sql-linting) for more information. +- **New**: SQL linting in CI jobs is now generally available in dbt Cloud. You can enable SQL linting in your CI jobs, using [SQLFluff](https://sqlfluff.com/), to automatically lint all SQL files in your project as a run step before your CI job builds. SQLFluff linting is available on [dbt Cloud Versionless](/docs/dbt-versions/versionless-cloud) and to dbt Cloud [Team or Enterprise](https://www.getdbt.com/pricing/) accounts. Refer to [SQL linting](/docs/deploy/continuous-integration#sql-linting) for more information. - **Fix**: This update improves [dbt Semantic Layer Tableau integration](/docs/cloud-integrations/semantic-layer/tableau) making query parsing more reliable. Some key fixes include: - Error messages for unsupported joins between saved queries and ALL tables. - Improved handling of queries when multiple tables are selected in a data source. From ccc79fc87cfc0c325e3561e3fcd12b47540af430 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Mon, 18 Nov 2024 08:35:17 -0500 Subject: [PATCH 23/29] Update website/docs/docs/deploy/continuous-integration.md --- website/docs/docs/deploy/continuous-integration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/continuous-integration.md b/website/docs/docs/deploy/continuous-integration.md index 848d5a0ac93..d372e210ab9 100644 --- a/website/docs/docs/deploy/continuous-integration.md +++ b/website/docs/docs/deploy/continuous-integration.md @@ -69,5 +69,5 @@ If the linter runs into errors, you can specify whether dbt should stop running - Use [SQLFluff Configuration Files](https://docs.sqlfluff.com/en/stable/configuration/setting_configuration.html#configuration-files) to override the default linting behavior in dbt. - Create a `.sqlfluff` configuration file in your project, add your linting rules to it, and dbt Cloud will use them when linting. - When configuring, you can use `dbt` as the templater (for example, `templater = dbt`) - - If you’re using the dbt Cloud IDE, dbt Cloud CLI, or any other editor, refer to [Customize linting](/docs/cloud/dbt-cloud-ide/lint-format#customize-linting) for guidance on how to add dbt-specific (or dbtonic) linting rules we use for own project. + - If you’re using the dbt Cloud IDE, dbt Cloud CLI, or any other editor, refer to [Customize linting](/docs/cloud/dbt-cloud-ide/lint-format#customize-linting) for guidance on how to add the dbt-specific (or dbtonic) linting rules we use for own project. - For complete details, refer to [Custom Usage](https://docs.sqlfluff.com/en/stable/gettingstarted.html#custom-usage) in the SQLFluff documentation. From 4a7775f67b68b56988be86a60c51020958789051 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:08:23 -0500 Subject: [PATCH 24/29] Update website/docs/docs/deploy/ci-jobs.md --- website/docs/docs/deploy/ci-jobs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/ci-jobs.md b/website/docs/docs/deploy/ci-jobs.md index 12db0137ca6..9e9fc540828 100644 --- a/website/docs/docs/deploy/ci-jobs.md +++ b/website/docs/docs/deploy/ci-jobs.md @@ -43,7 +43,7 @@ To make CI job creation easier, many options on the **CI job** page are set to d :::info Optimization tip When you enable the **dbt compare** checkbox, you can customize the comparison command to optimize your CI job. For example, if you have large models that take a long time to compare, you can exclude them to speed up the process using the [`--exclude` flag](/reference/node-selection/exclude). Refer to [compare changes custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) for more details. - Additionally, if you set [`event_time`](/docs/build/incremental-microbatch#relevant-configs) in your models/seeds/snapshots/sources, it allows you to compare matching date ranges between tables by filtering to overlapping date ranges. This is useful for faster CI workflow or custom sampling set ups. + Additionally, if you set [`event_time`](/reference/resource-configs/event-time) in your models/seeds/snapshots/sources, it allows you to compare matching date ranges between tables by filtering to overlapping date ranges. This is useful for faster CI workflow or custom sampling set ups. ::: - **Compare changes against an environment (Deferral)** — By default, it’s set to the **Production** environment if you created one. This option allows dbt Cloud to check the state of the code in the PR against the code running in the deferred environment, so as to only check the modified code, instead of building the full table or the entire DAG. From ff8fe0fc3ec61925adae79a06906792d4681985d Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:29:25 -0500 Subject: [PATCH 25/29] Update website/docs/docs/deploy/continuous-integration.md --- website/docs/docs/deploy/continuous-integration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/continuous-integration.md b/website/docs/docs/deploy/continuous-integration.md index d372e210ab9..dde52dfadc0 100644 --- a/website/docs/docs/deploy/continuous-integration.md +++ b/website/docs/docs/deploy/continuous-integration.md @@ -66,7 +66,7 @@ If the linter runs into errors, you can specify whether dbt should stop running #### To configure SQLFluff linting: -- Use [SQLFluff Configuration Files](https://docs.sqlfluff.com/en/stable/configuration/setting_configuration.html#configuration-files) to override the default linting behavior in dbt. +- (Optional) Use [SQLFluff Configuration Files](https://docs.sqlfluff.com/en/stable/configuration/setting_configuration.html#configuration-files) to override the default linting behavior in dbt. - Create a `.sqlfluff` configuration file in your project, add your linting rules to it, and dbt Cloud will use them when linting. - When configuring, you can use `dbt` as the templater (for example, `templater = dbt`) - If you’re using the dbt Cloud IDE, dbt Cloud CLI, or any other editor, refer to [Customize linting](/docs/cloud/dbt-cloud-ide/lint-format#customize-linting) for guidance on how to add the dbt-specific (or dbtonic) linting rules we use for own project. From 0b4c329bb4140a9cc8f08043cae7c2436ba2486a Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:30:16 -0500 Subject: [PATCH 26/29] Update continuous-integration.md --- website/docs/docs/deploy/continuous-integration.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/deploy/continuous-integration.md b/website/docs/docs/deploy/continuous-integration.md index dde52dfadc0..38ce34678ce 100644 --- a/website/docs/docs/deploy/continuous-integration.md +++ b/website/docs/docs/deploy/continuous-integration.md @@ -65,8 +65,9 @@ When [enabled for your CI job](/docs/deploy/ci-jobs#set-up-ci-jobs), dbt invokes If the linter runs into errors, you can specify whether dbt should stop running the job on error or continue running it on error. When failing jobs, it helps reduce compute costs by avoiding builds for pull requests that don't meet your SQL code quality CI check. #### To configure SQLFluff linting: +You can optionally configure SQLFluff linting rules to override default linting behavior. -- (Optional) Use [SQLFluff Configuration Files](https://docs.sqlfluff.com/en/stable/configuration/setting_configuration.html#configuration-files) to override the default linting behavior in dbt. +- Use [SQLFluff Configuration Files](https://docs.sqlfluff.com/en/stable/configuration/setting_configuration.html#configuration-files) to override the default linting behavior in dbt. - Create a `.sqlfluff` configuration file in your project, add your linting rules to it, and dbt Cloud will use them when linting. - When configuring, you can use `dbt` as the templater (for example, `templater = dbt`) - If you’re using the dbt Cloud IDE, dbt Cloud CLI, or any other editor, refer to [Customize linting](/docs/cloud/dbt-cloud-ide/lint-format#customize-linting) for guidance on how to add the dbt-specific (or dbtonic) linting rules we use for own project. From 7258c4e9dc0e876584da81556bcd89d23c512546 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:34:29 -0500 Subject: [PATCH 27/29] Update website/docs/docs/dbt-versions/release-notes.md --- website/docs/docs/dbt-versions/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes.md b/website/docs/docs/dbt-versions/release-notes.md index 0f23a8cfc0b..5bd9867d8db 100644 --- a/website/docs/docs/dbt-versions/release-notes.md +++ b/website/docs/docs/dbt-versions/release-notes.md @@ -20,7 +20,7 @@ Release notes are grouped by month for both multi-tenant and virtual private clo ## November 2024 -- **Enhancement**: For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can optimize performance when running comparisons by using custom dbt syntax to exclude specific large models (or groups of models with tags). Refer to [Compare changes custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) for examples of how to customize the comparison command. +- **Enhancement**: For users that have Advanced CI's [compare changes](/docs/deploy/advanced-ci#compare-changes) feature enabled, you can optimize performance when running comparisons by using custom dbt syntax to customize deferral usage, exclude specific large models (or groups of models with tags), and more. Refer to [Compare changes custom commands](/docs/deploy/job-commands#compare-changes-custom-commands) for examples of how to customize the comparison command. - **New**: Use the [`dbt_valid_to_current`](/reference/resource-configs/dbt_valid_to_current) config to set a custom indicator for the value of `dbt_valid_to` in current snapshot records (like a future date). By default, this value is `NULL`. When configured, dbt will use the specified value instead of `NULL` for `dbt_valid_to` for current records in the snapshot table. This feature is available in dbt Cloud Versionless and dbt Core v1.9 and later. - **New**: Use the [`event_time`](/reference/resource-configs/event-time) configuration to specify "at what time did the row occur." This configuration is required for [Incremental microbatch](/docs/build/incremental-microbatch) and can be added to ensure you're comparing overlapping times in [Advanced CI's compare changes](/docs/deploy/advanced-ci). Available in dbt Cloud Versionless and dbt Core v1.9 and higher. - **Fix**: This update improves [dbt Semantic Layer Tableau integration](/docs/cloud-integrations/semantic-layer/tableau) making query parsing more reliable. Some key fixes include: From 33eb377efd046edd9343c3f203fdf82af237c14e Mon Sep 17 00:00:00 2001 From: Jeremy Yeo Date: Thu, 21 Nov 2024 05:56:36 +1300 Subject: [PATCH 28/29] Update snowflake-privatelink.md (#6511) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What are you changing in this pull request and why? We don't support AWS private internal stages - clear up confusion. https://dbt-labs.slack.com/archives/C03U5QJEWLC/p1731966478738089?thread_ts=1731965485.432319&cid=C03U5QJEWLC ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-jeremyyeo-patch-3-dbt-labs.vercel.app/docs/cloud/secure/snowflake-privatelink --------- Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> Co-authored-by: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> --- .../docs/cloud/secure/snowflake-privatelink.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/cloud/secure/snowflake-privatelink.md b/website/docs/docs/cloud/secure/snowflake-privatelink.md index b943791292f..dc0cb64ba31 100644 --- a/website/docs/docs/cloud/secure/snowflake-privatelink.md +++ b/website/docs/docs/cloud/secure/snowflake-privatelink.md @@ -97,12 +97,18 @@ Once dbt Cloud support completes the configuration, you can start creating new c 4. Configure the remaining data platform details. 5. Test your connection and save it. -## Enable the connection in Snowflake +### Enable the connection in Snowflake hosted on Azure + +:::note + +AWS private internal stages are not currently supported. + +::: To complete the setup, follow the remaining steps from the Snowflake setup guides. The instructions vary based on the platform: -- [Snowflake AWS PrivateLink](https://docs.snowflake.com/en/user-guide/admin-security-privatelink) - [Snowflake Azure Private Link](https://docs.snowflake.com/en/user-guide/privatelink-azure) +- [Azure private endpoints for internal stages](https://docs.snowflake.com/en/user-guide/private-internal-stages-azure) There are some nuances for each connection and you will need a Snowflake administrator. As the Snowflake administrator, call the `SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS` function using the privateEndpointResourceID value as the function argument. This authorizes access to the Snowflake internal stage through the private endpoint. @@ -110,14 +116,12 @@ There are some nuances for each connection and you will need a Snowflake adminis USE ROLE ACCOUNTADMIN; --- AWS PrivateLink -SELECT SYSTEMS$AUTHORIZE_STATE_PRIVATELINK_ACCESS ( `AWS VPC ID` ); - -- Azure Private Link -SELECT SYSTEMS$AUTHORIZE_STATE_PRIVATELINK_ACCESS ( `AZURE PRIVATE ENDPOINT RESOURCE ID` ); +SELECT SYSTEMS$AUTHORIZE_STAGE_PRIVATELINK_ACCESS ( `AZURE PRIVATE ENDPOINT RESOURCE ID` ); ``` + ## Configuring Network Policies If your organization uses [Snowflake Network Policies](https://docs.snowflake.com/en/user-guide/network-policies) to restrict access to your Snowflake account, you will need to add a network rule for dbt Cloud. From 00ddfc21f0932b03f6bcf746de107cd864e28eb5 Mon Sep 17 00:00:00 2001 From: Pieter Ennes Date: Wed, 20 Nov 2024 18:19:02 +0100 Subject: [PATCH 29/29] Fix materialized view label (#6370) ## What are you changing in this pull request and why? The materialized view materialization is named `materialized_view` in snake case, not `materialized view`, at least for the Postgres adapter. The docs didn't reflect this. ## Checklist - [x] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [x] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [x] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). - [ ] Check whether this is also true for adapters other than Postgres. Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- website/docs/docs/build/materializations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/materializations.md b/website/docs/docs/build/materializations.md index 5deb1e7ce92..723acf87414 100644 --- a/website/docs/docs/build/materializations.md +++ b/website/docs/docs/build/materializations.md @@ -111,7 +111,7 @@ When using the `table` materialization, your model is rebuilt as a