From 26b663ac788756ceb7f8d314f900b07a411e964e Mon Sep 17 00:00:00 2001 From: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:52:32 -0700 Subject: [PATCH] Model-level notifications (#6218) 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? Beta docs for model-level notifications - [x] New page - [x] Update sidebar so new page is below Job notifications page - [x] Add feature card to two landing pages ## 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] Needs PM review ADDING PAGE (if so, uncomment): - [x] Add/remove page in `website/sidebars.js` - [x] Provide a unique filename for new pages --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-ly-docs-beta-model-notifications-dbt-labs.vercel.app/docs/deploy/deployment-overview - https://docs-getdbt-com-git-ly-docs-beta-model-notifications-dbt-labs.vercel.app/docs/deploy/model-notifications - https://docs-getdbt-com-git-ly-docs-beta-model-notifications-dbt-labs.vercel.app/docs/deploy/monitor-jobs --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../docs/docs/deploy/deployment-overview.md | 6 ++ .../docs/docs/deploy/model-notifications.md | 87 ++++++++++++++++++ website/docs/docs/deploy/monitor-jobs.md | 1 + website/sidebars.js | 1 + .../example-enable-model-notifications.png | Bin 0 -> 41733 bytes 5 files changed, 95 insertions(+) create mode 100644 website/docs/docs/deploy/model-notifications.md create mode 100644 website/static/img/docs/dbt-cloud/example-enable-model-notifications.png diff --git a/website/docs/docs/deploy/deployment-overview.md b/website/docs/docs/deploy/deployment-overview.md index 11575e6b0b7..9382634812f 100644 --- a/website/docs/docs/deploy/deployment-overview.md +++ b/website/docs/docs/deploy/deployment-overview.md @@ -79,6 +79,12 @@ Learn how to use dbt Cloud's features to help your team ship timely and quality link="/docs/deploy/job-notifications" icon="dbt-bit"/> + + + +Set up dbt to notify the appropriate model owners through email about issues as soon as they occur, while the job is still running. Model owners can specify which statuses to receive notifications about: + +- `Success` and `Fails` for models +- `Warning`, `Success`, and `Fails` for tests + +With model-level notifications, model owners can be the first ones to know about issues before anyone else (like the stakeholders). + +:::info Beta feature + +This 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, please contact the Support team at support@getdbt.com for assistance or questions. + +::: + +To be timely and keep the number of notifications to a reasonable amount when multiple models or tests trigger them, dbt observes the following guidelines when notifying the owners: + +- Send a notification to each unique owner/email during a job run about any models (with status of failure/success) or tests (with status of warning/failure/success). Each owner receives only one notification, the initial one. +- Don't send any notifications about subsequent models or tests while a dbt job is still running. +- At the end of a job run, each owner receives a notification, for each of the statuses they specified to be notified about, with a list of models and tests that have that status. + +Create configuration YAML files in your project for dbt to send notifications about the status of your models and tests. + +## Prerequisites +- Your dbt Cloud administrator has [enabled the appropriate account setting](#enable-access-to-model-notifications) for you. +- Your environment(s) must be on ["Versionless"](/docs/dbt-versions/versionless-cloud). + + +## Configure groups + +Add your group configuration in either the `dbt_project.yml` or `groups.yml` file. For example: + +```yml +version: 2 + +groups: + - name: finance + description: "Models related to the finance department" + owner: + # 'name' or 'email' is required + name: "Finance Team" + email: finance@dbtlabs.com + slack: finance-data + + - name: marketing + description: "Models related to the marketing department" + owner: + name: "Marketing Team" + email: marketing@dbtlabs.com + slack: marketing-data +``` + +## Set up models + +Set up your model configuration in either the `dbt_project.yml` or `groups.yml` file; doing this automatically sets up notifications for tests, too. For example: + +```yml +version: 2 + +models: + - name: sales + description: "Sales data model" + config: + group: finance + + - name: campaigns + description: "Campaigns data model" + config: + group: marketing + +``` + +## Enable access to model notifications + +Provide dbt Cloud account members the ability to configure and receive alerts about issues with models or tests that are encountered during job runs. + +To use model-level notifications, your dbt Cloud account must have access to the feature. Ask your dbt Cloud administrator to enable this feature for account members by following these steps: + +1. Navigate to **Notification settings** from your profile name in the sidebar (lower left-hand side). +1. From **Email notications**, enable the setting **Enable group/owner notifications on models** under the **Model notifications** section. Then, specify which statuses to receive notifications about (Success, Warning, and/or Fails). + + diff --git a/website/docs/docs/deploy/monitor-jobs.md b/website/docs/docs/deploy/monitor-jobs.md index 8382743dd03..1cbba23161e 100644 --- a/website/docs/docs/deploy/monitor-jobs.md +++ b/website/docs/docs/deploy/monitor-jobs.md @@ -13,6 +13,7 @@ This portion of our documentation will go over dbt Cloud's various capabilities - [Run visibility](/docs/deploy/run-visibility) — View your run history to help identify where improvements can be made to scheduled jobs. - [Retry jobs](/docs/deploy/retry-jobs) — Rerun your errored jobs from start or the failure point. - [Job notifications](/docs/deploy/job-notifications) — Receive email or Slack notifications when a job run succeeds, encounters warnings, fails, or is canceled. +- [Model notifications](/docs/deploy/model-notifications) — Receive email notifications about any issues encountered by your models and tests as soon as they occur while running a job. - [Webhooks](/docs/deploy/webhooks) — Use webhooks to send events about your dbt jobs' statuses to other systems. - [Leverage artifacts](/docs/deploy/artifacts) — dbt Cloud generates and saves artifacts for your project, which it uses to power features like creating docs for your project and reporting freshness of your sources. - [Source freshness](/docs/deploy/source-freshness) — Monitor data governance by enabling snapshots to capture the freshness of your data sources. diff --git a/website/sidebars.js b/website/sidebars.js index d31f6d03f57..2178e4cd35a 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -499,6 +499,7 @@ const sidebarSettings = { "docs/deploy/run-visibility", "docs/deploy/retry-jobs", "docs/deploy/job-notifications", + "docs/deploy/model-notifications", "docs/deploy/webhooks", "docs/deploy/artifacts", "docs/deploy/source-freshness", diff --git a/website/static/img/docs/dbt-cloud/example-enable-model-notifications.png b/website/static/img/docs/dbt-cloud/example-enable-model-notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..16cf5457db5523a3cdd505accc59ee1f1666f45b GIT binary patch literal 41733 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�(Tuu#QM?G=Y;LfIb9dvar`zW^Ipa1;t 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 literal 0 HcmV?d00001