From b419083d68124e210e56578fca52e0533199e768 Mon Sep 17 00:00:00 2001 From: Alex Alves Date: Mon, 4 Dec 2023 15:57:15 +0100 Subject: [PATCH 01/47] Update data-observability-dashboard.mdx --- docs/features/data-observability-dashboard.mdx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/features/data-observability-dashboard.mdx b/docs/features/data-observability-dashboard.mdx index d030ec54c..7dd10b357 100644 --- a/docs/features/data-observability-dashboard.mdx +++ b/docs/features/data-observability-dashboard.mdx @@ -3,4 +3,13 @@ title: Data Observability Dashboard icon: "browsers" --- -Under construction 🚧 +Managing data systems can be a complex task, especially when there are hundreds (or even thousands) of models being orchestrated separately across multiple DAGs. These models serve different data consumers, including internal stakeholders, clients, and reverse-ETL pipelines. + +Our Data Observability Dashboard provides an easy-to-use control panel for data teams to monitor the quality and performance of their data warehouse. + + + Elementary Data Observability Dashboard + From 5d648058255ba584437bc96e1535e316c098350d Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Wed, 14 Feb 2024 13:00:50 +0200 Subject: [PATCH 02/47] automated monitors --- docs/features/automated-monitors.mdx | 34 ++++++++++++++++++++++++++-- docs/mint.json | 2 +- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/docs/features/automated-monitors.mdx b/docs/features/automated-monitors.mdx index aaebbc96a..92e83fe6d 100644 --- a/docs/features/automated-monitors.mdx +++ b/docs/features/automated-monitors.mdx @@ -1,8 +1,38 @@ --- -title: Automated Monitors +title: Automated freshness, volume and schema monitoring +sidebarTitle: "Automated Monitors" icon: "wand-magic-sparkles" --- -Under construction 🚧 +Elementary offers out-of-the-box automated monitors to detect freshness, volume and schema issues. +This provides broad coverage and a basic level of observability, without any configuration effort. + +Additionally, these monitors will not increase compute costs as they leverage only warehouse metadata (information schema, query history). + +The monitors are trained on historical metadata, and adjust based on updates frequency, seasonality and trends. + +As views are stateless, automated volume and freshness monitors only apply on tables. + + + Elementary Automated Monitors + + +## Supported automated monitors: + +### Volume + +Monitors how much data was added / removed / updated to the table with each update. +The monitor alerts you if there is an unexpected drop or spike in rows. + +### Freshness + +Monitors how frequently a table is updated, and alerts you if there is an unexpected delay. + +### Schema changes + +_Coming soon_ diff --git a/docs/mint.json b/docs/mint.json index 5c35fc270..14d64f131 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -89,6 +89,7 @@ "group": "Features", "pages": [ "features/data-tests", + "features/automated-monitors", "features/elementary-alerts", "features/data-observability-dashboard", { @@ -101,7 +102,6 @@ "features/column-level-lineage" ] }, - "features/automated-monitors", "features/config-as-code", "features/catalog", "features/multi-env", From 42daa5cbcc0d6d6d4297d16210054b04c7e29bf5 Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Wed, 14 Feb 2024 13:03:22 +0200 Subject: [PATCH 03/47] fix --- docs/features/automated-monitors.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/automated-monitors.mdx b/docs/features/automated-monitors.mdx index 92e83fe6d..c963763a2 100644 --- a/docs/features/automated-monitors.mdx +++ b/docs/features/automated-monitors.mdx @@ -22,7 +22,7 @@ The monitors are trained on historical metadata, and adjust based on updates fre /> -## Supported automated monitors: +## Supported automated monitors ### Volume From 0586607b9ea946d227e5181bcae68dcaae13419e Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Thu, 15 Feb 2024 12:49:25 +0200 Subject: [PATCH 04/47] Update multi-env.mdx --- docs/features/multi-env.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/features/multi-env.mdx b/docs/features/multi-env.mdx index aa4a31797..fb6d55921 100644 --- a/docs/features/multi-env.mdx +++ b/docs/features/multi-env.mdx @@ -5,4 +5,7 @@ icon: "rectangle-history-circle-plus" -Under construction 🚧 +An environment in Elementary is a combination of dbt project and target. +For example: If you have a single dbt project with three targets, prod, staging and dev, you could create 3 environments in Elementary and monitor these envs. + +If you have several dbt projects and even different data warehouses, Elementary enables monitoring the data quality of all these environments in a single interface. From ab17a761efc04bd647e2d8efebd4da5a1c60d8cc Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Thu, 15 Feb 2024 16:47:16 +0200 Subject: [PATCH 05/47] Update elementary-alerts.mdx --- docs/features/elementary-alerts.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/elementary-alerts.mdx b/docs/features/elementary-alerts.mdx index 1ca92920c..ea070260e 100644 --- a/docs/features/elementary-alerts.mdx +++ b/docs/features/elementary-alerts.mdx @@ -1,5 +1,5 @@ --- -title: "Failure Alerts" +title: "Alerts" icon: "bell-exclamation" --- From 8a467d30fca7c6355779bd24ce68ce2ddd515a4b Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Sat, 17 Feb 2024 20:48:42 +0200 Subject: [PATCH 06/47] Update key-features.mdx --- docs/key-features.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/key-features.mdx b/docs/key-features.mdx index e1dc5c85e..581b8d25d 100644 --- a/docs/key-features.mdx +++ b/docs/key-features.mdx @@ -22,7 +22,7 @@ icon: "stars" Upload metadata, run and test results to tables as part of your jobs. Date: Sat, 17 Feb 2024 21:03:18 +0200 Subject: [PATCH 07/47] Update config-as-code.mdx --- docs/features/config-as-code.mdx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/features/config-as-code.mdx b/docs/features/config-as-code.mdx index c9c0ab1b4..804899bdf 100644 --- a/docs/features/config-as-code.mdx +++ b/docs/features/config-as-code.mdx @@ -3,4 +3,9 @@ title: "Configuration as Code" icon: "code" --- -Under construction 🚧 +All Elementary configuration is managed in your dbt code. + +Configuring observability becomes a part of the development process that includes version control, continuous integration, and a review process. + +In Elementary Cloud, you can save time by adding tests in bulk from the UI that will be added to your code. Additionally, you can allow data analysts to create quality tests without writing any code. Elementary will take care of it for them and open pull requests for them. + From 00262ce8491d1c1dd77d60fb3cc08c40893583b0 Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Sat, 17 Feb 2024 21:07:13 +0200 Subject: [PATCH 08/47] Update elementary-alerts.mdx --- docs/features/elementary-alerts.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/features/elementary-alerts.mdx b/docs/features/elementary-alerts.mdx index ea070260e..601b25f73 100644 --- a/docs/features/elementary-alerts.mdx +++ b/docs/features/elementary-alerts.mdx @@ -24,10 +24,10 @@ icon: "bell-exclamation" ## Alerts configuration - + Use Alert Rules to distribute your alerts to the right channels. - - All alerts configuration is as code in your project YML files. + + Alert content and properties configuration as code in your project YML files. From 7bd08c51189a758047650f95baf332750bdddff7 Mon Sep 17 00:00:00 2001 From: Elon Gliksberg Date: Mon, 26 Feb 2024 13:04:58 +0200 Subject: [PATCH 09/47] Update looker.mdx Added the `develop` permission. --- docs/cloud/integrations/bi/looker.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/cloud/integrations/bi/looker.mdx b/docs/cloud/integrations/bi/looker.mdx index 09fc8fe84..39085a57a 100644 --- a/docs/cloud/integrations/bi/looker.mdx +++ b/docs/cloud/integrations/bi/looker.mdx @@ -23,6 +23,7 @@ To follow the [least privilege](https://en.wikipedia.org/wiki/Principle_of_least - `see_user_dashboards` - `see_sql` - `see_lookml` + - `develop` - **Create a role** From 194520d214ce4f50bc2fe7b4ae063c51c2aed6f4 Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Wed, 28 Feb 2024 15:31:56 +0200 Subject: [PATCH 10/47] remove dependency on git access for exposures from docs --- docs/cloud/integrations/bi/connect-bi-tool.mdx | 2 +- docs/cloud/integrations/bi/looker.mdx | 16 +++------------- docs/cloud/integrations/bi/tableau.mdx | 15 +++------------ 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/docs/cloud/integrations/bi/connect-bi-tool.mdx b/docs/cloud/integrations/bi/connect-bi-tool.mdx index 7ee6763bd..f765336ed 100644 --- a/docs/cloud/integrations/bi/connect-bi-tool.mdx +++ b/docs/cloud/integrations/bi/connect-bi-tool.mdx @@ -3,7 +3,7 @@ title: "Automated lineage to BI" sidebarTitle: "BI integration" --- -After you connect your BI tool, Elementary will automatically and continuously extend the lineage to the dashboard level. +After you connect your BI tool, Elementary will automatically and continuously extend column-level-lineage the lineage to the dashboard level. This will provide you end-to-end data lineage to understand your downstream dependencies, called exposures. ### Why is end-to-end data lineage useful? diff --git a/docs/cloud/integrations/bi/looker.mdx b/docs/cloud/integrations/bi/looker.mdx index 39085a57a..26d64f603 100644 --- a/docs/cloud/integrations/bi/looker.mdx +++ b/docs/cloud/integrations/bi/looker.mdx @@ -2,12 +2,8 @@ title: "Looker" --- -In order to allow Elementary to continuously generate [dbt exposures](https://docs.getdbt.com/docs/build/exposures) from Looker you will need to setup the following integrations: - -1. Connect Looker - Elementary will continuously connect to Looker to extract metadata. -2. Connect dbt project [code repository](/cloud/integrations/code-repo/connect-code-repo) - Elementary will open a pull request to add exposures to your dbt project. - -## Connect Looker +After you connect Looker, Elementary will automatically and continuously extend the column-level-lineage to the dashboard level. +This will provide you end-to-end data lineage to understand your downstream dependencies, called exposures. ### Create permission set and role @@ -67,10 +63,4 @@ Choose the Looker BI connection and provide the following details to validate an src="https://res.cloudinary.com/diuctyblm/image/upload/v1690190406/looker_form_aegofu.png" alt="Connect Looker to Elementary environment" /> - - -## Connect dbt project [code repository](/cloud/integrations/code-repo/connect-code-repo) - -To allow Elementary to open pull requests to add exposures to your dbt project, follow the relevant guide according to your code repository provider: - - + \ No newline at end of file diff --git a/docs/cloud/integrations/bi/tableau.mdx b/docs/cloud/integrations/bi/tableau.mdx index 77a848e70..705507435 100644 --- a/docs/cloud/integrations/bi/tableau.mdx +++ b/docs/cloud/integrations/bi/tableau.mdx @@ -2,12 +2,9 @@ title: "Tableau" --- -In order to allow Elementary to continuously generate [dbt exposures](https://docs.getdbt.com/docs/build/exposures) from Tableau you will need to setup the following integrations: +After you connect Tableau, Elementary will automatically and continuously extend the lineage to the dashboard level. +This will provide you end-to-end data lineage to understand your downstream dependencies, called exposures. -1. Connect Tableau - Elementary will continuously connect to Tableau to extract metadata. -2. Connect dbt project [code repository](/cloud/integrations/code-repo/connect-code-repo) - Elementary will open a pull request to add exposures to your dbt project. - -## Connect Tableau In order for Elementary to extract your metadata from Tableau you must meet all of the Tableau Metadata GraphQL requirements (most are set by default): @@ -39,10 +36,4 @@ Choose the Tableau BI connection and provide the following details to validate a src="https://res.cloudinary.com/diuctyblm/image/upload/v1690191024/tableau-form_aaxfta.png" alt="Connect Tableau to Elementary environment" /> - - -## Connect dbt project [code repository](/cloud/integrations/code-repo/connect-code-repo) - -To allow Elementary to open pull requests to add exposures to your dbt project, follow the relevant guide according to your code repository provider: - - + \ No newline at end of file From a5150f3da3caa673c033bbf5aeed6453eaff5efc Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Wed, 28 Feb 2024 21:50:41 +0200 Subject: [PATCH 11/47] Tableau server --- docs/cloud/integrations/bi/tableau.mdx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/cloud/integrations/bi/tableau.mdx b/docs/cloud/integrations/bi/tableau.mdx index 705507435..9a1a5a362 100644 --- a/docs/cloud/integrations/bi/tableau.mdx +++ b/docs/cloud/integrations/bi/tableau.mdx @@ -8,12 +8,14 @@ This will provide you end-to-end data lineage to understand your downstream depe In order for Elementary to extract your metadata from Tableau you must meet all of the Tableau Metadata GraphQL requirements (most are set by default): -- Tableau Cloud/Server 2019.3 or later. +- Tableau Cloud / Server 2019.3 or later. - Tableau REST API must not be disabled. - The Metadata API must be enabled. - The Metadata API must be accessed via an access token. -### Creating a Personal Access Token +## Tableau Cloud + +### Creating Personal Access Token Create a Personal Access Token in Tableau. For details on how to create a user token please refer to the **[Tableau guide](https://help.tableau.com/current/pro/desktop/en-us/useracct.htm#create-a-personal-access-token)**. @@ -36,4 +38,9 @@ Choose the Tableau BI connection and provide the following details to validate a src="https://res.cloudinary.com/diuctyblm/image/upload/v1690191024/tableau-form_aaxfta.png" alt="Connect Tableau to Elementary environment" /> - \ No newline at end of file + + + +## Tableau Server + +Elementary supports Tableau Server, reach out to our team for details. \ No newline at end of file From 0a903804013fdcd1db9ccc496a9307017bc4010b Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Wed, 28 Feb 2024 23:19:22 +0200 Subject: [PATCH 12/47] security --- docs/cloud/general/security-and-privacy.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/general/security-and-privacy.mdx b/docs/cloud/general/security-and-privacy.mdx index e83b89a2e..5158edc8d 100644 --- a/docs/cloud/general/security-and-privacy.mdx +++ b/docs/cloud/general/security-and-privacy.mdx @@ -37,7 +37,7 @@ Our product and architecture are always evolving, but our commitment to secure d Elementary cloud security From 3c097c771912c8f0070be9ae1b2dec14cd49c951 Mon Sep 17 00:00:00 2001 From: Ella Katz Date: Thu, 29 Feb 2024 17:57:35 +0200 Subject: [PATCH 13/47] exclude elementary tests --- .../faq/question-filter-elementary-tests.mdx | 9 +++++++++ docs/general/faq.mdx | 1 + docs/general/troubleshooting.mdx | 19 ++++++++++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 docs/_snippets/faq/question-filter-elementary-tests.mdx diff --git a/docs/_snippets/faq/question-filter-elementary-tests.mdx b/docs/_snippets/faq/question-filter-elementary-tests.mdx new file mode 100644 index 000000000..517031471 --- /dev/null +++ b/docs/_snippets/faq/question-filter-elementary-tests.mdx @@ -0,0 +1,9 @@ + + +Sure! All you have to do is use the 'elementary-tests' tag in your dbt run command. Here's an example: + +```shell +dbt test --select tag:elementary-tests +``` + + diff --git a/docs/general/faq.mdx b/docs/general/faq.mdx index c504ca203..d4744258b 100644 --- a/docs/general/faq.mdx +++ b/docs/general/faq.mdx @@ -4,6 +4,7 @@ description: "This section is aimed at collecting common questions users have to --- + diff --git a/docs/general/troubleshooting.mdx b/docs/general/troubleshooting.mdx index f20fd8c3f..d22349b82 100644 --- a/docs/general/troubleshooting.mdx +++ b/docs/general/troubleshooting.mdx @@ -168,8 +168,25 @@ If you want the Elementary UI to show data for a longer period of time, use the - + +If you want to prevent elementary tests from running the simplest way is to exclude the tag that marks all of them in your dbt command: + +```shell +dbt test --exclude tag:elementary-tests +``` + +If you add the following to your dbt_project.yml, elementary models will not run and elementary tests will be executed but will do nothing and always pass. +```shell +models: + elementary: + enabled: false +``` + + + + + If you're experiencing issues of any kind, please contact us on the [#support](https://elementary-community.slack.com/archives/C02CTC89LAX) channel. From 08a1765a06ea073facac63108af5aaad1fcb7979 Mon Sep 17 00:00:00 2001 From: Ofek Weiss Date: Tue, 5 Mar 2024 13:36:13 +0200 Subject: [PATCH 14/47] Improved webhook jobs description --- docs/cloud/guides/sync-scheduling.mdx | 6 +++++- docs/pics/cloud/dbt_cloud_webhook_setup.png | Bin 0 -> 46008 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/pics/cloud/dbt_cloud_webhook_setup.png diff --git a/docs/cloud/guides/sync-scheduling.mdx b/docs/cloud/guides/sync-scheduling.mdx index db92b64ac..666c29b28 100644 --- a/docs/cloud/guides/sync-scheduling.mdx +++ b/docs/cloud/guides/sync-scheduling.mdx @@ -27,7 +27,11 @@ In the _Schedule Settings_, you're provided with a webhook URL. Next, you will n Heading to dbt Cloud, you can [create a webhook subscription](https://docs.getdbt.com/docs/deploy/webhooks#create-a-webhook-subscription) that would trigger a sync after your jobs are done. - Make sure the webhook is triggered on `Run completed` events -- Select the jobs of the relevant environment. +- Select **only** the main jobs of the relevant environment. + +Make sure to select only the main jobs of the relevant environment. Selecting all jobs will trigger a sync for each job, which may result in unnecessary updates and therefore increased cost on the data warehouse. + + After completing the guide, you'll be provided with the secret token that you'll need to fill in the form on Elementary Cloud. Press _Save_ and you're done! diff --git a/docs/pics/cloud/dbt_cloud_webhook_setup.png b/docs/pics/cloud/dbt_cloud_webhook_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..6e83625efa5df8f631549a0790a002845b2fae1d GIT binary patch literal 46008 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 aCo-hz<&WuzV;pf literal 0 HcmV?d00001 From c5dbf6e35c5d942d595350c39dda014b074f2f94 Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Mon, 11 Mar 2024 15:08:50 +0200 Subject: [PATCH 15/47] change CTAs --- docs/mint.json | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/mint.json b/docs/mint.json index 89f3c20aa..fca128465 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -42,25 +42,21 @@ } ], "topbarCtaButton": { - "name": "Try Elementary Cloud", + "name": "Get Started Now", "url": "https://app.elementary-data.com/" }, "topbarLinks": [ - { - "name": "Github", - "url": "https://github.com/elementary-data/elementary" - } ], "anchors": [ { - "name": "Community", - "icon": "slack", - "url": "https://elementary-data.com/community" + "name": "Book a Demo", + "icon": "calendar-check", + "url": "https://cal.com/maayansa/elementary-intro-docs" }, { - "name": "Demo", - "icon": "circle-play", - "url": "https://storage.googleapis.com/elementary_static/elementary_demo.html" + "name": "Join Slack", + "icon": "slack", + "url": "https://elementary-data.com/community" } ], "navigation": [ From 4957eb7189723240257ef1acff3d6c5ceac468f5 Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Tue, 12 Mar 2024 13:48:31 +0200 Subject: [PATCH 16/47] Docs update - structure and comparison table (#1456) * WIP * added cloud vs oss --- docs/_snippets/cloud/quickstart-steps.mdx | 16 ++ .../signup-and-connect-elementary-cloud.mdx | 13 +- .../_snippets/quickstart/quickstart-cards.mdx | 15 +- docs/cloud/general/security-and-privacy.mdx | 4 + docs/cloud/manage-team.mdx | 11 +- .../onboarding/connect-data-warehouse.mdx | 39 ++++ .../onboarding/quickstart-dbt-package.mdx | 5 +- docs/cloud/onboarding/signup.mdx | 25 ++- docs/introduction.mdx | 72 ++++--- docs/mint.json | 190 +++++++++--------- .../general/community-and-support.mdx | 0 docs/{ => oss}/general/contributions.mdx | 0 docs/{ => oss}/general/faq.mdx | 0 docs/{ => oss}/general/troubleshooting.mdx | 0 .../release-notes/releases/0.10.0.mdx | 0 .../release-notes/releases/0.11.2.mdx | 0 .../release-notes/releases/0.5.4.mdx | 0 .../release-notes/releases/0.6.1.mdx | 0 .../release-notes/releases/0.6.10.mdx | 0 .../release-notes/releases/0.6.3.mdx | 0 .../release-notes/releases/0.6.5.mdx | 0 .../release-notes/releases/0.6.7.mdx | 0 .../release-notes/releases/0.7.10.mdx | 0 .../release-notes/releases/0.7.2.mdx | 0 .../release-notes/releases/0.7.5.mdx | 0 .../release-notes/releases/0.7.6.mdx | 0 .../release-notes/releases/0.7.7.mdx | 0 .../release-notes/releases/0.8.0.mdx | 0 .../release-notes/releases/0.8.2.mdx | 0 .../release-notes/releases/0.9.1.mdx | 0 .../release-notes/upgrading-elementary.mdx | 0 docs/overview/cloud-vs-oss.mdx | 58 +++++- docs/quickstart.mdx | 12 +- docs/resources/community.mdx | 4 + docs/resources/pricing.mdx | 4 + 35 files changed, 316 insertions(+), 152 deletions(-) create mode 100644 docs/_snippets/cloud/quickstart-steps.mdx create mode 100644 docs/cloud/onboarding/connect-data-warehouse.mdx rename docs/{ => oss}/general/community-and-support.mdx (100%) rename docs/{ => oss}/general/contributions.mdx (100%) rename docs/{ => oss}/general/faq.mdx (100%) rename docs/{ => oss}/general/troubleshooting.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.10.0.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.11.2.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.5.4.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.6.1.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.6.10.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.6.3.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.6.5.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.6.7.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.7.10.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.7.2.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.7.5.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.7.6.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.7.7.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.8.0.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.8.2.mdx (100%) rename docs/{ => oss}/release-notes/releases/0.9.1.mdx (100%) rename docs/{ => oss}/release-notes/upgrading-elementary.mdx (100%) create mode 100644 docs/resources/community.mdx create mode 100644 docs/resources/pricing.mdx diff --git a/docs/_snippets/cloud/quickstart-steps.mdx b/docs/_snippets/cloud/quickstart-steps.mdx new file mode 100644 index 000000000..6af9536e0 --- /dev/null +++ b/docs/_snippets/cloud/quickstart-steps.mdx @@ -0,0 +1,16 @@ + + + [Signup to Elementary](https://elementary-data.frontegg.com/oauth/account/sign-up) using Google SSO or email. + + + To start using Elementary, you need to [add our dbt package to your dbt project](/cloud/onboarding/quickstart-dbt-package). + + + [Create your first environment](/cloud/onboarding/connect-data-warehouse) and sync the Elementary schema. + Note: Elementary can't access your data. It only requires access to logs, test results, and metadata. + + + You're done with initial onboarding. Now you can [invite team members](/cloud/manage-team) to join! + + + diff --git a/docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx b/docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx index c2d814674..251b0302d 100644 --- a/docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx +++ b/docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx @@ -1,15 +1,14 @@ ### Signup to Elementary cloud -Anyone can [signup to Elementary Cloud](https://elementary-data.frontegg.com/oauth/account/sign-up) via Google SSO or by creating an account. +[Create an account](https://elementary-data.frontegg.com/oauth/account/sign-up) using Google SSO or email. - If you are interested in advanced authentication such as MFA, Okta SSO, - Microsoft AD - please contact us at cloud@elementary-data.com + If you are interested in advanced authentication such as MFA, Okta SSO, Microsoft AD - please contact us at cloud@elementary-data.com ### Create your first environment -When you first login to Elementary cloud, it will not have any data. +When you first login to Elementary, it will not have any data. You will be forwarded directly to the environments screen to create your first environment. Press `Create environment`, and provide an environment name: @@ -46,9 +45,3 @@ If you see data in the Elementary Dashboard you completed your connection (Congr The syncs happen by default once an hour, but you can also [configure a triggered sync](/cloud/guides/sync-scheduling) to get a near real time experience. -## What's next? - -1. [Invite your team](/cloud/manage-team) to Elementary cloud 👥 -2. [Connect Slack](/cloud/guides/enable-slack-alerts) for alerting 🔔 -3. [Connect your code repository](/cloud/integrations/code-repo/connect-code-repo) to add tests configuration from the cloud 🔌 -4. [Connect your BI tool](/cloud/integrations/bi/connect-bi-tool) to automatically extend the lineage to dashboards as exposures 🚀 diff --git a/docs/_snippets/quickstart/quickstart-cards.mdx b/docs/_snippets/quickstart/quickstart-cards.mdx index c32f160c9..48a269d32 100644 --- a/docs/_snippets/quickstart/quickstart-cards.mdx +++ b/docs/_snippets/quickstart/quickstart-cards.mdx @@ -1,12 +1,14 @@
- Fully managed data observability solution with premium features. + Ideal for teams monitoring mission-critical data pipelines, requiring guaranteed uptime and reliability, short-time-to-value, advanced features, collaboration, and professional support. +
+ The solution is secure by design, and requires no access to your data from cloud.
Integrations:

- Deploy, orchestrate and self-host Elementary CLI in your environment. -
+ For data and analytics engineers that require basic observability capabilities or for evaluating features without vendor approval. Our community can provide great support if needed. +




Integrations: + + If you are interested in advanced authentication such as MFA, Okta SSO, Microsoft AD - please contact us at cloud@elementary-data.com + + ## Security principals Elementary Cloud is designed with the core principle of least privilege. diff --git a/docs/cloud/manage-team.mdx b/docs/cloud/manage-team.mdx index 700068499..5908799e6 100644 --- a/docs/cloud/manage-team.mdx +++ b/docs/cloud/manage-team.mdx @@ -1,12 +1,12 @@ --- title: "Invite users" sidebarTitle: "Invite users" -icon: "square-3" +icon: "square-4" --- ### Invite users -After you [signup](/cloud/onboarding/signup), you can invite team members to join you! 🎉 +You can invite team members to join you! 🎉 Click on your initials on the top right of the screen and select `Team` to invite users. @@ -15,3 +15,10 @@ Users you invite will receive an Email saying you invited them, and will need to + + +## What's next? + +1. [Connect Slack or MS Teams](/cloud/guides/enable-slack-alerts) for alerting 🔔 +2. [Connect your code repository](/cloud/integrations/code-repo/connect-code-repo) to add tests configuration from the cloud 🔌 +3. [Connect your BI tool](/cloud/integrations/bi/connect-bi-tool) to automatically extend the lineage to dashboards 🚀 \ No newline at end of file diff --git a/docs/cloud/onboarding/connect-data-warehouse.mdx b/docs/cloud/onboarding/connect-data-warehouse.mdx new file mode 100644 index 000000000..b18cebf91 --- /dev/null +++ b/docs/cloud/onboarding/connect-data-warehouse.mdx @@ -0,0 +1,39 @@ +--- +title: "Connect data warehouse" +icon: "square-3" +--- + +### Create your first environment + +When you first login to Elementary, it will not have any data. + +You will be forwarded directly to the environments screen to create your first environment. +Press `Create environment`, and provide an environment name: + + + + + +### Connect data warehouse + +You can connect Elementary to a data warehouse that has an Elementary schema (created by the [Elementary dbt package](/cloud/onboarding/quickstart-dbt-package)). + +Elementary Cloud needs: + +- Read permissions to the Elementary schema (and not the rest of your data) +- Network access (might require to allowlist Elementary IP address) + +Which data warehouse do you wish to connect? + + + +### Allowlist Elementary IP + +Elementary IP for allowlist: `3.126.156.226` + +### What happens now? + +Once Elementary Cloud successfully connects to you data warehouse, it will start syncing data from the Elementary schema to cloud. This data includes tests results, run results, metadata and configuration. +If you see data in the Elementary Dashboard you completed your connection (Congrats! 🎉). + +The syncs happen by default once an hour, but you can also [configure a triggered sync](/cloud/guides/sync-scheduling) to get a near real time experience. \ No newline at end of file diff --git a/docs/cloud/onboarding/quickstart-dbt-package.mdx b/docs/cloud/onboarding/quickstart-dbt-package.mdx index f2f77337c..fe0c35188 100644 --- a/docs/cloud/onboarding/quickstart-dbt-package.mdx +++ b/docs/cloud/onboarding/quickstart-dbt-package.mdx @@ -1,11 +1,12 @@ --- title: "Install Elementary dbt package" sidebarTitle: "Install dbt package" -icon: "square-1" +icon: "square-2" --- ## What's next? -[Signup to Elementary cloud](/cloud/onboarding/signup) and connect your data warehouse to Elementary Cloud to sync the Elementary schema. +- [Connect your data warehouse](/cloud/onboarding/connect-data-warehouse) +- [invite team members](/cloud/manage-team) to join! diff --git a/docs/cloud/onboarding/signup.mdx b/docs/cloud/onboarding/signup.mdx index 3a81bcfd3..04b510088 100644 --- a/docs/cloud/onboarding/signup.mdx +++ b/docs/cloud/onboarding/signup.mdx @@ -1,7 +1,24 @@ --- -title: "Quickstart: Elementary Cloud" -sidebarTitle: "Setup Elementary Cloud" -icon: "square-2" +title: "Create an account" +sidebarTitle: "Create an account" +icon: "square-1" --- - + + + [Signup to Elementary](https://elementary-data.frontegg.com/oauth/account/sign-up) using Google SSO or email. + + + If you are interested in advanced authentication such as MFA, Okta SSO, Microsoft AD - please contact us at cloud@elementary-data.com + + + + [Install Elementary dbt package](/cloud/onboarding/quickstart-dbt-package) + + + [Connect your data warehouse](/cloud/onboarding/connect-data-warehouse) + + + [invite team members](/cloud/manage-team) to join! + + \ No newline at end of file diff --git a/docs/introduction.mdx b/docs/introduction.mdx index 87d9d156d..bfff2983b 100644 --- a/docs/introduction.mdx +++ b/docs/introduction.mdx @@ -1,19 +1,10 @@ --- title: "Welcome to Elementary" sidebarTitle: "Introduction" -description: "dbt native data observability, built for data and analytics engineers" +description: "dbt-native data observability platform built for data and analytics engineers." icon: "fire" --- -With Elementary you can monitor your data pipelines in minutes, in your dbt project. - -Gain immediate visibility to your jobs, models runs and test results. -Detect data issues with freshness, volume, anomaly detection and schema tests. -Explore all your test results and data health in a single interface and understand impact and root cause with rich lineage. -Distribute actionable alerts to different channels and owners, and be on top of your data health. - -Start by deploying the dbt package, and then setup Elementary Cloud **or** Elementary OSS. -
-## Elementary Products - - -## Quick start +Elementary has two product offerings: -## How it works? +See also the [detailed comparison](/overview/cloud-vs-oss) between Elementary and Elementary Community. + +## Get started with Elementary + + + +### Elementary Community + +Or - Start with [Elementary Community](/oss/quickstart/quickstart-cli-package), open-source CLI tool you can deploy and orchestrate to send Slack alerts and self-host the Elementary report. + + +## Why choose Elementary? + + + + Elementary configuration is managed in your dbt code. + Elementary Cloud syncs configuration changes from the UI back to the dbt project code repository. + + You won't need to duplicate configuration - all your existing tests, owners, tags, and descriptions are leveraged. + + + + + Elementary Cloud can't access your data. + + The dbt package creates a schema for logs, results and metadata, and Elementary only requires access to the Elementary schema. + + [Read about Security and Privacy >>>](/cloud/general/security-and-privacy) -In your dbt project, you install the [Elementary dbt package](/guides/modules-overview/dbt-package). -The package will collect metadata and run results to a dedicated Elementary schema. -You can use elementary tests in your dbt project, configured just like native dbt tests. + -[Elementary Cloud](/cloud/introduction) or [Elementary CLI](/oss/oss-introduction) will connect to your data warehouse, read from the Elementary schema, and present the results in the UI / alerts. + + Elementary dbt package automatically collects results and artifacts from your dbt project. All of your Elementary configuration is managed in your dbt code. -## Community & Support + By combining the package and Elementary Cloud, you get full dbt observability. All your tests and results in one dashboard and interface. -For additional information and help, you can use one of these channels: + -- [Slack](https://elementary-data.com/community) (live chat with the team, support, consult with us, etc.) -- [GitHub issues](https://github.com/elementary-data/elementary-lineage/issues) (bug reports, feature requests, contributions) -- [Twitter](https://twitter.com/ElementaryData) (updates on new releases and stuff) + -## Contributing to Elementary -Thank you 🧡 Whether it’s a bug fix, new feature, or documentation changes - we greatly appreciate contributions! +## Want to know more? -Check out the [contributions guide](/general/contributions). + + diff --git a/docs/mint.json b/docs/mint.json index fca128465..4dc07de3a 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -32,10 +32,6 @@ "name": "Data tests", "url": "data-tests" }, - { - "name": "Elementary Cloud", - "url": "cloud" - }, { "name": "Elementary OSS", "url": "oss" @@ -62,13 +58,10 @@ "navigation": [ { "group": "Getting Started", - "pages": ["introduction", "key-features", "quickstart"] - }, - { - "group": "Overview", "pages": [ - "overview/elementary-cloud", - "overview/elementary-oss", + "introduction", + "quickstart", + "cloud/general/security-and-privacy", { "group": "dbt package", "icon": "cube", @@ -105,39 +98,64 @@ ] }, { - "group": "Community & Support", + "group": "Guides", "pages": [ - "general/troubleshooting", - "general/faq", - "general/contributions", - "general/community-and-support" + { + "group": "Setup Elementary", + "pages": [ + "cloud/onboarding/signup", + "cloud/onboarding/quickstart-dbt-package", + "cloud/onboarding/connect-data-warehouse", + "cloud/manage-team" + ] + }, + { + "group": "Send Slack alerts", + "pages": [ + "cloud/guides/enable-slack-alerts", + "cloud/guides/alerts-configuration", + "cloud/guides/alert-rules" + ] + }, + "cloud/guides/sync-scheduling", + "cloud/guides/collect-job-data", + "cloud/guides/collect-source-freshness", + "cloud/guides/troubleshoot" ] }, { - "group": "Release Notes", + "group": "BI tools integration", "pages": [ - "release-notes/upgrading-elementary", - { - "group": "Releases", - "pages": [ - "release-notes/releases/0.11.2", - "release-notes/releases/0.10.0", - "release-notes/releases/0.9.1", - "release-notes/releases/0.8.2", - "release-notes/releases/0.8.0", - "release-notes/releases/0.7.10", - "release-notes/releases/0.7.7", - "release-notes/releases/0.7.6", - "release-notes/releases/0.7.5", - "release-notes/releases/0.7.2", - "release-notes/releases/0.6.10", - "release-notes/releases/0.6.7", - "release-notes/releases/0.6.5", - "release-notes/releases/0.6.3", - "release-notes/releases/0.6.1", - "release-notes/releases/0.5.4" - ] - } + "cloud/integrations/bi/connect-bi-tool", + "cloud/integrations/bi/looker", + "cloud/integrations/bi/tableau" + ] + }, + { + "group": "Code repository integration", + "pages": [ + "cloud/integrations/code-repo/connect-code-repo", + "cloud/integrations/code-repo/github", + "cloud/integrations/code-repo/gitlab" + ] + }, + { + "group": "Data warehouses", + "pages": [ + "cloud/integrations/dwh/snowflake", + "cloud/integrations/dwh/bigquery", + "cloud/integrations/dwh/redshift", + "cloud/integrations/dwh/databricks", + "cloud/integrations/dwh/postgres", + "cloud/integrations/dwh/athena" + ] + }, + { + "group": "Resources", + "pages": [ + "overview/cloud-vs-oss", + "resources/pricing", + "resources/community" ] }, { @@ -202,66 +220,6 @@ "group": "Other Tests", "pages": ["data-tests/python-tests"] }, - { - "group": "Elementary Cloud", - "pages": [ - "cloud/introduction", - { - "group": "Quickstart", - "icon": "circle-play", - "pages": [ - "cloud/onboarding/quickstart-dbt-package", - "cloud/onboarding/signup", - "cloud/manage-team" - ] - }, - "cloud/general/security-and-privacy" - ] - }, - { - "group": "Guides", - "pages": [ - { - "group": "Send Slack alerts", - "pages": [ - "cloud/guides/enable-slack-alerts", - "cloud/guides/alerts-configuration", - "cloud/guides/alert-rules" - ] - }, - "cloud/guides/sync-scheduling", - "cloud/guides/collect-job-data", - "cloud/guides/collect-source-freshness", - "cloud/guides/troubleshoot" - ] - }, - { - "group": "BI tools integration", - "pages": [ - "cloud/integrations/bi/connect-bi-tool", - "cloud/integrations/bi/looker", - "cloud/integrations/bi/tableau" - ] - }, - { - "group": "Code repository integration", - "pages": [ - "cloud/integrations/code-repo/connect-code-repo", - "cloud/integrations/code-repo/github", - "cloud/integrations/code-repo/gitlab" - ] - }, - { - "group": "Data warehouses", - "pages": [ - "cloud/integrations/dwh/snowflake", - "cloud/integrations/dwh/bigquery", - "cloud/integrations/dwh/redshift", - "cloud/integrations/dwh/databricks", - "cloud/integrations/dwh/postgres", - "cloud/integrations/dwh/athena" - ] - }, { "group": "Elementary OSS", "pages": [ @@ -329,6 +287,42 @@ "oss/deployment-and-configuration/slack", "oss/deployment-and-configuration/teams" ] + }, + { + "group": "Community & Support", + "pages": [ + "oss/general/troubleshooting", + "oss/general/faq", + "oss/general/contributions", + "oss/general/community-and-support" + ] + }, + { + "group": "Release Notes", + "pages": [ + "oss/release-notes/upgrading-elementary", + { + "group": "Releases", + "pages": [ + "oss/release-notes/releases/0.11.2", + "oss/release-notes/releases/0.10.0", + "oss/release-notes/releases/0.9.1", + "oss/release-notes/releases/0.8.2", + "oss/release-notes/releases/0.8.0", + "oss/release-notes/releases/0.7.10", + "oss/release-notes/releases/0.7.7", + "oss/release-notes/releases/0.7.6", + "oss/release-notes/releases/0.7.5", + "oss/release-notes/releases/0.7.2", + "oss/release-notes/releases/0.6.10", + "oss/release-notes/releases/0.6.7", + "oss/release-notes/releases/0.6.5", + "oss/release-notes/releases/0.6.3", + "oss/release-notes/releases/0.6.1", + "oss/release-notes/releases/0.5.4" + ] + } + ] } ], "footerSocials": { diff --git a/docs/general/community-and-support.mdx b/docs/oss/general/community-and-support.mdx similarity index 100% rename from docs/general/community-and-support.mdx rename to docs/oss/general/community-and-support.mdx diff --git a/docs/general/contributions.mdx b/docs/oss/general/contributions.mdx similarity index 100% rename from docs/general/contributions.mdx rename to docs/oss/general/contributions.mdx diff --git a/docs/general/faq.mdx b/docs/oss/general/faq.mdx similarity index 100% rename from docs/general/faq.mdx rename to docs/oss/general/faq.mdx diff --git a/docs/general/troubleshooting.mdx b/docs/oss/general/troubleshooting.mdx similarity index 100% rename from docs/general/troubleshooting.mdx rename to docs/oss/general/troubleshooting.mdx diff --git a/docs/release-notes/releases/0.10.0.mdx b/docs/oss/release-notes/releases/0.10.0.mdx similarity index 100% rename from docs/release-notes/releases/0.10.0.mdx rename to docs/oss/release-notes/releases/0.10.0.mdx diff --git a/docs/release-notes/releases/0.11.2.mdx b/docs/oss/release-notes/releases/0.11.2.mdx similarity index 100% rename from docs/release-notes/releases/0.11.2.mdx rename to docs/oss/release-notes/releases/0.11.2.mdx diff --git a/docs/release-notes/releases/0.5.4.mdx b/docs/oss/release-notes/releases/0.5.4.mdx similarity index 100% rename from docs/release-notes/releases/0.5.4.mdx rename to docs/oss/release-notes/releases/0.5.4.mdx diff --git a/docs/release-notes/releases/0.6.1.mdx b/docs/oss/release-notes/releases/0.6.1.mdx similarity index 100% rename from docs/release-notes/releases/0.6.1.mdx rename to docs/oss/release-notes/releases/0.6.1.mdx diff --git a/docs/release-notes/releases/0.6.10.mdx b/docs/oss/release-notes/releases/0.6.10.mdx similarity index 100% rename from docs/release-notes/releases/0.6.10.mdx rename to docs/oss/release-notes/releases/0.6.10.mdx diff --git a/docs/release-notes/releases/0.6.3.mdx b/docs/oss/release-notes/releases/0.6.3.mdx similarity index 100% rename from docs/release-notes/releases/0.6.3.mdx rename to docs/oss/release-notes/releases/0.6.3.mdx diff --git a/docs/release-notes/releases/0.6.5.mdx b/docs/oss/release-notes/releases/0.6.5.mdx similarity index 100% rename from docs/release-notes/releases/0.6.5.mdx rename to docs/oss/release-notes/releases/0.6.5.mdx diff --git a/docs/release-notes/releases/0.6.7.mdx b/docs/oss/release-notes/releases/0.6.7.mdx similarity index 100% rename from docs/release-notes/releases/0.6.7.mdx rename to docs/oss/release-notes/releases/0.6.7.mdx diff --git a/docs/release-notes/releases/0.7.10.mdx b/docs/oss/release-notes/releases/0.7.10.mdx similarity index 100% rename from docs/release-notes/releases/0.7.10.mdx rename to docs/oss/release-notes/releases/0.7.10.mdx diff --git a/docs/release-notes/releases/0.7.2.mdx b/docs/oss/release-notes/releases/0.7.2.mdx similarity index 100% rename from docs/release-notes/releases/0.7.2.mdx rename to docs/oss/release-notes/releases/0.7.2.mdx diff --git a/docs/release-notes/releases/0.7.5.mdx b/docs/oss/release-notes/releases/0.7.5.mdx similarity index 100% rename from docs/release-notes/releases/0.7.5.mdx rename to docs/oss/release-notes/releases/0.7.5.mdx diff --git a/docs/release-notes/releases/0.7.6.mdx b/docs/oss/release-notes/releases/0.7.6.mdx similarity index 100% rename from docs/release-notes/releases/0.7.6.mdx rename to docs/oss/release-notes/releases/0.7.6.mdx diff --git a/docs/release-notes/releases/0.7.7.mdx b/docs/oss/release-notes/releases/0.7.7.mdx similarity index 100% rename from docs/release-notes/releases/0.7.7.mdx rename to docs/oss/release-notes/releases/0.7.7.mdx diff --git a/docs/release-notes/releases/0.8.0.mdx b/docs/oss/release-notes/releases/0.8.0.mdx similarity index 100% rename from docs/release-notes/releases/0.8.0.mdx rename to docs/oss/release-notes/releases/0.8.0.mdx diff --git a/docs/release-notes/releases/0.8.2.mdx b/docs/oss/release-notes/releases/0.8.2.mdx similarity index 100% rename from docs/release-notes/releases/0.8.2.mdx rename to docs/oss/release-notes/releases/0.8.2.mdx diff --git a/docs/release-notes/releases/0.9.1.mdx b/docs/oss/release-notes/releases/0.9.1.mdx similarity index 100% rename from docs/release-notes/releases/0.9.1.mdx rename to docs/oss/release-notes/releases/0.9.1.mdx diff --git a/docs/release-notes/upgrading-elementary.mdx b/docs/oss/release-notes/upgrading-elementary.mdx similarity index 100% rename from docs/release-notes/upgrading-elementary.mdx rename to docs/oss/release-notes/upgrading-elementary.mdx diff --git a/docs/overview/cloud-vs-oss.mdx b/docs/overview/cloud-vs-oss.mdx index 25cd92d87..3541bc7a1 100644 --- a/docs/overview/cloud-vs-oss.mdx +++ b/docs/overview/cloud-vs-oss.mdx @@ -1,5 +1,61 @@ --- -title: "Elementary Cloud vs Elementary OSS" +title: "Elementary: Community vs Cloud" sidebarTitle: "Cloud vs OSS" +description: Detailed comparison of Elementary product offerings. icon: "list-check" --- + +### Elementary Cloud +Ideal for teams monitoring mission-critical data pipelines, requiring guaranteed uptime and reliability, short-time-to-value, advanced features, collaboration, and professional support. The solution is secure by design, and requires no access to your data from cloud. + +### Elementary Community +An open-source CLI tool you can deploy and orchestrate to send Slack alerts and self-host the Elementary report. It is best for data and analytics engineers that require basic observability capabilities or for evaluating features without vendor approval. + +### Features comparison + +| | Community (OSS) | Elmentary Cloud | +|-----------------------------------------------------------------------|:-------------------:|:-----------------:| +| **Data monitoring and detection** | | | +| Automated freshness, volume
and schema monitors | ❌ | ✅ | +| In-pipeline data tests (via dbt) | ✅ | ✅ | +| Data anomaly detection | ✅ | ✅ | +| Custom SQL tests | ✅ | ✅ | +| Jobs performance and run results | ✅ | ✅ | +| Monitored data sets | dbt only | All tables | +| **Root cause and impact analysis** | | | +| Table-level lineage | ✅ | ✅ | +| Column-level lineage | ❌ | ✅ | +| Lineage to BI tools | ❌ | ✅ | +| **Coverage and configuration** | | | +| Configuration as code (dbt YAML) | ✅ | ✅ | +| Add tests from UI | ❌ | ✅ | +| 🚧 *Auto-tune configurations
for improved accuracy* | ❌ | ✅ | +| 🚧 *Automated test recommendations* | ❌ | ✅ | +| **Communication and collaboration** | | | +| Slack and MS Teams alerts | ✅ | ✅ | +| Alert distribution rules, multiple
destinations, custom formats | ❌ | ✅ | +| Additional alert destinations:
PagerDuty, OpsGenie, Webhook | ❌ | ✅ | +| 🚧 *Alert actions* | ❌ | ✅ | +| Data catalog | ❌ | ✅ | +| **Deployment, security and service** | | | +| Deployment | Self hosted, CLI | Cloud service | +| Multiple environments and data warehouses | ❌ | ✅ | +| Secure by design -
Elementary has no access to raw data | ❌ | ✅ | +| Managed service - 99.9% uptime,
no maintenance | ❌ | ✅ | +| Social login with Google | ❌ | ✅ | +| SSO using OKTA / OneLogin / AD | ❌ | ✅ | +| Custom deployment options | ❌ | ✅ | +| 🚧 *Role based access control* | ❌ | ✅ | +| Support SLA | Community support | 24 hours SLA | + + +### Want to know more? + + + diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx index b5e4ad0b5..ee24a1777 100644 --- a/docs/quickstart.mdx +++ b/docs/quickstart.mdx @@ -4,4 +4,14 @@ sidebarTitle: "Quickstart" icon: "circle-play" --- - + + +### Need help with onboarding? + +We can provide [support on Slack](https://elementary-data.com/community) or hop on a [guided onboarding call](https://savvycal.com/MaayanSa/df29881c). + +## What's next? + +1. [Connect Slack or MS Teams](/cloud/guides/enable-slack-alerts) for alerting 🔔 +2. [Connect your code repository](/cloud/integrations/code-repo/connect-code-repo) to add tests configuration from the cloud 🔌 +3. [Connect your BI tool](/cloud/integrations/bi/connect-bi-tool) to automatically extend the lineage to dashboards 🚀 \ No newline at end of file diff --git a/docs/resources/community.mdx b/docs/resources/community.mdx new file mode 100644 index 000000000..765893ceb --- /dev/null +++ b/docs/resources/community.mdx @@ -0,0 +1,4 @@ +--- +title: "Community" +url: "https://www.elementary-data.com/community" +--- \ No newline at end of file diff --git a/docs/resources/pricing.mdx b/docs/resources/pricing.mdx new file mode 100644 index 000000000..e07e89568 --- /dev/null +++ b/docs/resources/pricing.mdx @@ -0,0 +1,4 @@ +--- +title: "Pricing" +url: "https://www.elementary-data.com/pricing" +--- \ No newline at end of file From 1c7d5cc008aa084f1faa77260daef4114dfdc4ee Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Tue, 12 Mar 2024 13:52:08 +0200 Subject: [PATCH 17/47] fixes --- docs/features/ci.mdx | 4 ++-- docs/introduction.mdx | 2 +- docs/overview/cloud-vs-oss.mdx | 2 +- docs/resources/community.mdx | 7 ++++++- docs/resources/pricing.mdx | 7 ++++++- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/features/ci.mdx b/docs/features/ci.mdx index b9316e1b9..c17753e90 100644 --- a/docs/features/ci.mdx +++ b/docs/features/ci.mdx @@ -21,9 +21,9 @@ Elementary CI automations will help you make changes with confidence and seeing diff --git a/docs/introduction.mdx b/docs/introduction.mdx index bfff2983b..2d79b6a22 100644 --- a/docs/introduction.mdx +++ b/docs/introduction.mdx @@ -65,6 +65,6 @@ title="Book a call with our team" href="https://cal.com/maayansa/elementary-intro-docs" >
diff --git a/docs/overview/cloud-vs-oss.mdx b/docs/overview/cloud-vs-oss.mdx index 3541bc7a1..908c36337 100644 --- a/docs/overview/cloud-vs-oss.mdx +++ b/docs/overview/cloud-vs-oss.mdx @@ -56,6 +56,6 @@ title="Book a call with our team" href="https://cal.com/maayansa/elementary-intro-docs" >
diff --git a/docs/resources/community.mdx b/docs/resources/community.mdx index 765893ceb..fc79fac9a 100644 --- a/docs/resources/community.mdx +++ b/docs/resources/community.mdx @@ -1,4 +1,9 @@ --- title: "Community" url: "https://www.elementary-data.com/community" ---- \ No newline at end of file +--- + + diff --git a/docs/resources/pricing.mdx b/docs/resources/pricing.mdx index e07e89568..197ecc538 100644 --- a/docs/resources/pricing.mdx +++ b/docs/resources/pricing.mdx @@ -1,4 +1,9 @@ --- title: "Pricing" url: "https://www.elementary-data.com/pricing" ---- \ No newline at end of file +--- + + \ No newline at end of file From d4f947fbdd6947b143a5c405f3ef0a7eaed50e5c Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Tue, 12 Mar 2024 16:58:12 +0200 Subject: [PATCH 18/47] added integrations --- docs/_snippets/cloud/integrations/snowflake.mdx | 2 +- docs/features/integrations.mdx | 7 +++++++ docs/mint.json | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 docs/features/integrations.mdx diff --git a/docs/_snippets/cloud/integrations/snowflake.mdx b/docs/_snippets/cloud/integrations/snowflake.mdx index 19c4d7435..6eb762ada 100644 --- a/docs/_snippets/cloud/integrations/snowflake.mdx +++ b/docs/_snippets/cloud/integrations/snowflake.mdx @@ -1,4 +1,4 @@ -You will connect Elementary Cloud to Bigquery for syncing the Elementary schema (created by the [Elementary dbt package](/cloud/onboarding/quickstart-dbt-package)). +You will connect Elementary Cloud to Snowflake for syncing the Elementary schema (created by the [Elementary dbt package](/cloud/onboarding/quickstart-dbt-package)). diff --git a/docs/features/integrations.mdx b/docs/features/integrations.mdx new file mode 100644 index 000000000..cebec92a3 --- /dev/null +++ b/docs/features/integrations.mdx @@ -0,0 +1,7 @@ +--- +title: "Elementary integrations" +sidebarTitle: "Integrations" +icon: "plug" +--- + + \ No newline at end of file diff --git a/docs/mint.json b/docs/mint.json index 4dc07de3a..d29cd3c6c 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -94,7 +94,8 @@ "features/config-as-code", "features/catalog", "features/multi-env", - "features/ci" + "features/ci", + "features/integrations" ] }, { From 225e72871111b60269efd230977ab5ccfbfba41f Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Wed, 13 Mar 2024 14:18:09 +0200 Subject: [PATCH 19/47] Update troubleshoot.mdx --- docs/cloud/guides/troubleshoot.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/guides/troubleshoot.mdx b/docs/cloud/guides/troubleshoot.mdx index 2fc74adb6..7b31fdb4e 100644 --- a/docs/cloud/guides/troubleshoot.mdx +++ b/docs/cloud/guides/troubleshoot.mdx @@ -7,7 +7,7 @@ title: "Troubleshooting" This error can happen because of a few reasons: 1. check that your elementary dbt package version is 0.12.0 or higher -2. check that the user you are using to connect to your database has permissions to access the information schema +2. check that the user you are using to connect to your database has permission to access the information schema of all the schemas built or used by your dbt project For more information on the permissions required by each data warehouse: From 12703565de1a5b356d67549f0756a016bd932cdb Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Wed, 13 Mar 2024 16:42:29 +0200 Subject: [PATCH 20/47] Update teams.mdx (#1457) --- docs/oss/deployment-and-configuration/teams.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/oss/deployment-and-configuration/teams.mdx b/docs/oss/deployment-and-configuration/teams.mdx index abadb1b84..a1b331751 100644 --- a/docs/oss/deployment-and-configuration/teams.mdx +++ b/docs/oss/deployment-and-configuration/teams.mdx @@ -14,8 +14,6 @@ Below is features support comparison table (with Slack), to help you select the | Integration | Elementary alerts | Elementary report | Multiple channels | Slack workflows | | ------------- | ----------------- | ----------------- | ----------------- | --------------- | | Teams Webhook | ✅ | ❌ | ❌ | ❌ | -| Slack Token | ✅ | ✅ | ✅ | ❌ | -| Slack Webhook | ✅ | ❌ | ❌ | ✅ | ## Teams integration setup From de9856d240fa720fae124389375d52cc128ea56f Mon Sep 17 00:00:00 2001 From: quickcoffee <31934316+quickcoffee@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:40:14 +0100 Subject: [PATCH 21/47] Fix typo --- docs/data-tests/introduction.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-tests/introduction.mdx b/docs/data-tests/introduction.mdx index 9a2523246..1f28c4238 100644 --- a/docs/data-tests/introduction.mdx +++ b/docs/data-tests/introduction.mdx @@ -87,7 +87,7 @@ Tests to detect anomalies in data quality metrics such as volume, freshness, nul - Monitors a JSON type column and fails id there are JSON events that don't + Monitors a JSON type column and fails if there are JSON events that don't match a configured JSON schema (can be generated with a macro). From 90c1459c01a06beb41f4c9e444f46cbb612b72d7 Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Tue, 19 Mar 2024 11:48:45 +0200 Subject: [PATCH 22/47] Integrations pages change (#1469) * WIP, BI * WIP * WIP dwh integrations * WIP bi integrations * WIP integrations * WIP alerts * WIP alerts * orchestration --- .../_snippets/alerts/alerts-configuration.mdx | 8 + docs/_snippets/alerts/alerts-introduction.mdx | 11 +- .../cards-groups/alerts-destination-cards.mdx | 101 ++++ .../integrations/cards-groups/bi-cards.mdx | 80 ++- .../cards-groups/cloud-integrations-cards.mdx | 462 +----------------- .../cards-groups/connect-dwh-cards.mdx | 24 +- .../cards-groups/reverse-etl-cards.mdx | 31 ++ ...transformation-and-orchestration-cards.mdx | 62 +++ .../signup-and-connect-elementary-cloud.mdx | 47 -- docs/cloud/guides/alerts-configuration.mdx | 2 +- docs/cloud/guides/enable-slack-alerts.mdx | 82 +--- docs/cloud/integrations/alerts/jira.mdx | 15 + docs/cloud/integrations/alerts/linear.mdx | 15 + docs/cloud/integrations/alerts/ms-teams.mdx | 6 + docs/cloud/integrations/alerts/opsgenie.mdx | 15 + docs/cloud/integrations/alerts/pagerduty.mdx | 6 + docs/cloud/integrations/alerts/slack.mdx | 14 + docs/cloud/integrations/alerts/webhooks.mdx | 6 + .../cloud/integrations/bi/connect-bi-tool.mdx | 29 +- docs/cloud/integrations/bi/explo.mdx | 15 + docs/cloud/integrations/bi/hex.mdx | 15 + docs/cloud/integrations/bi/metabase.mdx | 15 + docs/cloud/integrations/bi/mode.mdx | 15 + docs/cloud/integrations/bi/power-bi.mdx | 15 + docs/cloud/integrations/bi/sigma.mdx | 15 + docs/cloud/integrations/bi/thoughtspot.mdx | 15 + docs/cloud/integrations/dwh/athena.mdx | 12 +- docs/cloud/integrations/dwh/clickhouse.mdx | 16 + .../integrations/elementary-integrations.mdx | 6 + .../cloud/integrations/reverse-etl/census.mdx | 18 + .../integrations/reverse-etl/hightouch.mdx | 18 + .../airflow.mdx | 13 + .../dbt-cloud.mdx | 17 + .../dbt-core.mdx | 12 + .../orchestration-tools.mdx | 13 + docs/features/elementary-alerts.mdx | 25 +- docs/features/exposures-lineage.mdx | 22 +- docs/mint.json | 92 +++- 38 files changed, 750 insertions(+), 635 deletions(-) create mode 100644 docs/_snippets/alerts/alerts-configuration.mdx create mode 100644 docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx create mode 100644 docs/_snippets/cloud/integrations/cards-groups/reverse-etl-cards.mdx create mode 100644 docs/_snippets/cloud/integrations/cards-groups/transformation-and-orchestration-cards.mdx delete mode 100644 docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx create mode 100644 docs/cloud/integrations/alerts/jira.mdx create mode 100644 docs/cloud/integrations/alerts/linear.mdx create mode 100644 docs/cloud/integrations/alerts/ms-teams.mdx create mode 100644 docs/cloud/integrations/alerts/opsgenie.mdx create mode 100644 docs/cloud/integrations/alerts/pagerduty.mdx create mode 100644 docs/cloud/integrations/alerts/slack.mdx create mode 100644 docs/cloud/integrations/alerts/webhooks.mdx create mode 100644 docs/cloud/integrations/bi/explo.mdx create mode 100644 docs/cloud/integrations/bi/hex.mdx create mode 100644 docs/cloud/integrations/bi/metabase.mdx create mode 100644 docs/cloud/integrations/bi/mode.mdx create mode 100644 docs/cloud/integrations/bi/power-bi.mdx create mode 100644 docs/cloud/integrations/bi/sigma.mdx create mode 100644 docs/cloud/integrations/bi/thoughtspot.mdx create mode 100644 docs/cloud/integrations/dwh/clickhouse.mdx create mode 100644 docs/cloud/integrations/elementary-integrations.mdx create mode 100644 docs/cloud/integrations/reverse-etl/census.mdx create mode 100644 docs/cloud/integrations/reverse-etl/hightouch.mdx create mode 100644 docs/cloud/integrations/transformation-and-orchestration/airflow.mdx create mode 100644 docs/cloud/integrations/transformation-and-orchestration/dbt-cloud.mdx create mode 100644 docs/cloud/integrations/transformation-and-orchestration/dbt-core.mdx create mode 100644 docs/cloud/integrations/transformation-and-orchestration/orchestration-tools.mdx diff --git a/docs/_snippets/alerts/alerts-configuration.mdx b/docs/_snippets/alerts/alerts-configuration.mdx new file mode 100644 index 000000000..fb21b075d --- /dev/null +++ b/docs/_snippets/alerts/alerts-configuration.mdx @@ -0,0 +1,8 @@ + + + Use Alert Rules to distribute your alerts to the right channels. + + + Alert content and properties configuration as code in your project YML files. + + \ No newline at end of file diff --git a/docs/_snippets/alerts/alerts-introduction.mdx b/docs/_snippets/alerts/alerts-introduction.mdx index 68db62e15..5f1176c52 100644 --- a/docs/_snippets/alerts/alerts-introduction.mdx +++ b/docs/_snippets/alerts/alerts-introduction.mdx @@ -1,18 +1,15 @@ Elementary can send alerts about: -- Failures and/or of dbt tests -- Failures and/or Elementary tests +- Failures and/or warnings of dbt tests +- Failures and/or warnings Elementary tests - Model runs failures -- Source freshness issues - -The alerts can be sent to Slack or Microsoft Teams, and we are working on adding more channels. -Please [reach out to us](https://elementary-data.com/community) if you have a specific destination in mind. +- Source freshness failures You can enrich your alerts by adding properties to tests and models in your `.yml` files. The supported attributes are: owner, subscribers, description, tags. You can configure and customize your alerts by configuring: -custom channel, suppression interval, alert fields (for test alerts only), alert grouping, alert filters. +Custom channel, suppression interval, alert filters, etc.
diff --git a/docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx b/docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx new file mode 100644 index 000000000..b1715829c --- /dev/null +++ b/docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx @@ -0,0 +1,101 @@ + + + + + + + + } + > + + } + > + + } + > + + + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + + + \ No newline at end of file diff --git a/docs/_snippets/cloud/integrations/cards-groups/bi-cards.mdx b/docs/_snippets/cloud/integrations/cards-groups/bi-cards.mdx index a783b1785..cf16b62c6 100644 --- a/docs/_snippets/cloud/integrations/cards-groups/bi-cards.mdx +++ b/docs/_snippets/cloud/integrations/cards-groups/bi-cards.mdx @@ -80,7 +80,85 @@ /> } - > + > + + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + - - - - - - - - - - } - > - - - - - - - - - - - - - } - > - - - - - - - - - - } - > - - - - } - > - - - - - - - - - - - - } - > - - - - - - - - - - - - - - } - > - - - - - - - } - > - - - - } - > - - - - - - - } - > - - - - - } - > - - - - - - - - - - - - - - - - - - - - - - } - > - - +### Data warehouses + + + +### Transformation and orchestration + + + +### Data visualization + + + +### Reverse ETL + + + +### Code repositories + + + +### Communication and collaboration + + \ No newline at end of file diff --git a/docs/_snippets/cloud/integrations/cards-groups/connect-dwh-cards.mdx b/docs/_snippets/cloud/integrations/cards-groups/connect-dwh-cards.mdx index 0c05d6d13..ba75ceccb 100644 --- a/docs/_snippets/cloud/integrations/cards-groups/connect-dwh-cards.mdx +++ b/docs/_snippets/cloud/integrations/cards-groups/connect-dwh-cards.mdx @@ -1,4 +1,4 @@ - + } > + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + + + + + } + > + Click for details + + + \ No newline at end of file diff --git a/docs/_snippets/cloud/integrations/cards-groups/transformation-and-orchestration-cards.mdx b/docs/_snippets/cloud/integrations/cards-groups/transformation-and-orchestration-cards.mdx new file mode 100644 index 000000000..54844cce7 --- /dev/null +++ b/docs/_snippets/cloud/integrations/cards-groups/transformation-and-orchestration-cards.mdx @@ -0,0 +1,62 @@ + + + + + } + > + + + + } + > + + + + + + + + + + + + } + > + + \ No newline at end of file diff --git a/docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx b/docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx deleted file mode 100644 index 251b0302d..000000000 --- a/docs/_snippets/cloud/signup-and-connect-elementary-cloud.mdx +++ /dev/null @@ -1,47 +0,0 @@ -### Signup to Elementary cloud - -[Create an account](https://elementary-data.frontegg.com/oauth/account/sign-up) using Google SSO or email. - - - If you are interested in advanced authentication such as MFA, Okta SSO, Microsoft AD - please contact us at cloud@elementary-data.com - - -### Create your first environment - -When you first login to Elementary, it will not have any data. - -You will be forwarded directly to the environments screen to create your first environment. -Press `Create environment`, and provide an environment name: - - - - - -### Connect data warehouse - -You can connect Elementary to a data warehouse that has an Elementary schema (created by the [Elementary dbt package](/cloud/onboarding/quickstart-dbt-package)). - -Elementary Cloud needs: - -- Read permissions to the Elementary schema (and not the rest of your data) -- Network access (might require to allowlist Elementary IP address) - -Which data warehouse do you wish to connect? - - - -### Allowlist Elementary IP - -Elementary IP for allowlist: `3.126.156.226` - -### Need help with onboarding? - -We can provide [support on Slack](https://elementary-data.com/community) or hop on an [onboarding call](https://savvycal.com/MaayanSa/df29881c). - -### What happens now? - -Once Elementary Cloud successfully connects to you data warehouse, it will start syncing data from the Elementary schema to cloud. This data includes tests results, run results, metadata and configuration. -If you see data in the Elementary Dashboard you completed your connection (Congrats! 🎉). - -The syncs happen by default once an hour, but you can also [configure a triggered sync](/cloud/guides/sync-scheduling) to get a near real time experience. - diff --git a/docs/cloud/guides/alerts-configuration.mdx b/docs/cloud/guides/alerts-configuration.mdx index 6a2477cb5..b62328a00 100644 --- a/docs/cloud/guides/alerts-configuration.mdx +++ b/docs/cloud/guides/alerts-configuration.mdx @@ -1,5 +1,5 @@ --- -title: "Alerts configuration" +title: "Alerts code configuration" --- diff --git a/docs/cloud/guides/enable-slack-alerts.mdx b/docs/cloud/guides/enable-slack-alerts.mdx index 31ddecdf1..d2e97bcf1 100644 --- a/docs/cloud/guides/enable-slack-alerts.mdx +++ b/docs/cloud/guides/enable-slack-alerts.mdx @@ -1,85 +1,11 @@ --- -title: "Enable Slack alerts" +title: "Enable alerts" --- -## About Slack alerts +## About alerts -## Setup Slack Integration +## Alerts destinations - - - First create a Slack app: - - - - ## 1. Create a Slack app - - Go to the [Slack page to create apps](https://api.slack.com/apps?new_app=1) and create a new app (from scratch). - Call it "[Elementary](#slack-app-display)" and connect it to the workspace of your choice. - - Slack app - - ## 2. Optional - Slack app display - - To change the display of the Elementary slack app, scroll down on the Slack app basic information page to the 'Display Information' section: - - Slack display - - Here is the Elementary icon for your use (click to download): - - - - - - - - - - After the app is ready, create a Slack Token: - - - -## 1. Create a Slack token - -Go to the "OAauth & Permissions" page for your newly-created app, and add the following scopes under "Bot Token Scopes": - -- `channels:join` - Join public channels in a workspace - - `channels:read` - View basic information about public channels in a workspace - - `chat:write` - Send messages as \ - - `files:write` - Upload, edit, and delete files as \ - - `users:read` - View people in a workspace - - `users:read.email` - View email addresses of people in a workspace - - `groups:read` - View basic information about private channels that your slack app has been added to - -Slack scopes - -## 2. Install app at your Workspace - -At the "OAuth & Permissions" page, press on "Install to Workspace" in order to generate Slack token: - -Slack OAuth - - - - - On the environment configuration in Elementary Cloud, add the Slack token and configure a default channel. - - + \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/jira.mdx b/docs/cloud/integrations/alerts/jira.mdx new file mode 100644 index 000000000..9c824ddb3 --- /dev/null +++ b/docs/cloud/integrations/alerts/jira.mdx @@ -0,0 +1,15 @@ +--- +title: "Jira" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/linear.mdx b/docs/cloud/integrations/alerts/linear.mdx new file mode 100644 index 000000000..5837a8c8a --- /dev/null +++ b/docs/cloud/integrations/alerts/linear.mdx @@ -0,0 +1,15 @@ +--- +title: "Linear" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/ms-teams.mdx b/docs/cloud/integrations/alerts/ms-teams.mdx new file mode 100644 index 000000000..542a1dfaa --- /dev/null +++ b/docs/cloud/integrations/alerts/ms-teams.mdx @@ -0,0 +1,6 @@ +--- +title: "MS Teams (Beta)" +--- + +Routing alerts to MS Teams is supported as a beta integration. +Reach out to us to enable it for your instance! \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/opsgenie.mdx b/docs/cloud/integrations/alerts/opsgenie.mdx new file mode 100644 index 000000000..e78907cf8 --- /dev/null +++ b/docs/cloud/integrations/alerts/opsgenie.mdx @@ -0,0 +1,15 @@ +--- +title: "Opsgenie" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/pagerduty.mdx b/docs/cloud/integrations/alerts/pagerduty.mdx new file mode 100644 index 000000000..331ef7fde --- /dev/null +++ b/docs/cloud/integrations/alerts/pagerduty.mdx @@ -0,0 +1,6 @@ +--- +title: "PagerDuty (Beta)" +--- + +Routing alerts to PagerDuty is supported as a beta integration. +Reach out to us to enable it for your instance! \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/slack.mdx b/docs/cloud/integrations/alerts/slack.mdx new file mode 100644 index 000000000..a364f3725 --- /dev/null +++ b/docs/cloud/integrations/alerts/slack.mdx @@ -0,0 +1,14 @@ +--- +title: "Slack" +--- + + + +## Enable Slack alerts + +On the environments page, select an environment and click `connect` on the **Connect Slack** card. +After connecting your workspace, you will need to select a default channel for alerts. + +## Alerts configuration + + \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/webhooks.mdx b/docs/cloud/integrations/alerts/webhooks.mdx new file mode 100644 index 000000000..2a1381265 --- /dev/null +++ b/docs/cloud/integrations/alerts/webhooks.mdx @@ -0,0 +1,6 @@ +--- +title: "Webhooks (Beta)" +--- + +Consuming alerts through webhooks is supported as a beta feature. +Reach out to us to enable it for your instance! \ No newline at end of file diff --git a/docs/cloud/integrations/bi/connect-bi-tool.mdx b/docs/cloud/integrations/bi/connect-bi-tool.mdx index f765336ed..26e47e92d 100644 --- a/docs/cloud/integrations/bi/connect-bi-tool.mdx +++ b/docs/cloud/integrations/bi/connect-bi-tool.mdx @@ -1,17 +1,28 @@ --- -title: "Automated lineage to BI" -sidebarTitle: "BI integration" +title: "Automated lineage to Data Visualization layer" +sidebarTitle: "Automated BI lineage" --- -After you connect your BI tool, Elementary will automatically and continuously extend column-level-lineage the lineage to the dashboard level. +Elementary will automatically and continuously extend the column-level-lineage to the dashboard level of your data visualization tool. This will provide you end-to-end data lineage to understand your downstream dependencies, called exposures. ### Why is end-to-end data lineage useful? -- **Impact analysis** - You could explore which exposures are impacted by each data issue. -- **Exposure health** - By selecting an exposure and filtering on upstream nodes, you could see the status of all it's upstream models. -- **dbt docs enrichment** - As the exposures are created in code, they will be made available in your dbt docs lineage as well. -- **dbt cloud change impact** - If you develop in dbt cloud, you could visualize in your IDE the downstream exposures Elementary generates, and understand the impact of changes. +- **Incidents impact analysis**: You could explore which exposures are impacted by each data issue. +- **Exposure health**: By selecting an exposure and filtering on upstream nodes, you could see the status of all it’s upstream datasets. +- **Prioritize data issues**: Prioritize the triage and resolution of issues that are impacting your critical downstream assets. +- **Change impact**: Analyze which exposures will be impacted by a planned change. +- **Unused datasets**: Detect datasets that no exposure consumes, that could be removed to save costs. + + + ### Supported BI tools @@ -22,3 +33,7 @@ This will provide you end-to-end data lineage to understand your downstream depe Elementary can open PRs to your dbt project, to update your exposures yml files. This means the lineage to the dashboards will also be visible in dbt docs and dbt cloud. + +Why is it useful? +- **dbt docs enrichment** - As the exposures are created in code, they will be made available in your dbt docs lineage as well. +- **dbt cloud change impact** - If you develop in dbt cloud, you could visualize in your IDE the downstream exposures Elementary generates, and understand the impact of changes. diff --git a/docs/cloud/integrations/bi/explo.mdx b/docs/cloud/integrations/bi/explo.mdx new file mode 100644 index 000000000..8c3a3b46f --- /dev/null +++ b/docs/cloud/integrations/bi/explo.mdx @@ -0,0 +1,15 @@ +--- +title: "Explo" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/bi/hex.mdx b/docs/cloud/integrations/bi/hex.mdx new file mode 100644 index 000000000..490caed4d --- /dev/null +++ b/docs/cloud/integrations/bi/hex.mdx @@ -0,0 +1,15 @@ +--- +title: "Hex" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/bi/metabase.mdx b/docs/cloud/integrations/bi/metabase.mdx new file mode 100644 index 000000000..c98d6bb75 --- /dev/null +++ b/docs/cloud/integrations/bi/metabase.mdx @@ -0,0 +1,15 @@ +--- +title: "Metabase" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/bi/mode.mdx b/docs/cloud/integrations/bi/mode.mdx new file mode 100644 index 000000000..8f559fe0a --- /dev/null +++ b/docs/cloud/integrations/bi/mode.mdx @@ -0,0 +1,15 @@ +--- +title: "Mode" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/bi/power-bi.mdx b/docs/cloud/integrations/bi/power-bi.mdx new file mode 100644 index 000000000..4274b5175 --- /dev/null +++ b/docs/cloud/integrations/bi/power-bi.mdx @@ -0,0 +1,15 @@ +--- +title: "Power BI" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/bi/sigma.mdx b/docs/cloud/integrations/bi/sigma.mdx new file mode 100644 index 000000000..11207d4f0 --- /dev/null +++ b/docs/cloud/integrations/bi/sigma.mdx @@ -0,0 +1,15 @@ +--- +title: "Sigma" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/bi/thoughtspot.mdx b/docs/cloud/integrations/bi/thoughtspot.mdx new file mode 100644 index 000000000..52b31d8e9 --- /dev/null +++ b/docs/cloud/integrations/bi/thoughtspot.mdx @@ -0,0 +1,15 @@ +--- +title: "ThoughtSpot" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/dwh/athena.mdx b/docs/cloud/integrations/dwh/athena.mdx index 7522d68e0..b74351075 100644 --- a/docs/cloud/integrations/dwh/athena.mdx +++ b/docs/cloud/integrations/dwh/athena.mdx @@ -3,4 +3,14 @@ title: "Connect to Athena" sidebarTitle: "Athena" --- - + + + + } + > + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/dwh/clickhouse.mdx b/docs/cloud/integrations/dwh/clickhouse.mdx new file mode 100644 index 000000000..32c1d91ca --- /dev/null +++ b/docs/cloud/integrations/dwh/clickhouse.mdx @@ -0,0 +1,16 @@ +--- +title: "Connect to ClickHouse" +sidebarTitle: "ClickHouse" +--- + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/elementary-integrations.mdx b/docs/cloud/integrations/elementary-integrations.mdx new file mode 100644 index 000000000..877da032b --- /dev/null +++ b/docs/cloud/integrations/elementary-integrations.mdx @@ -0,0 +1,6 @@ +--- +title: "Elementary integrations" +sidebarTitle: "All integrations" +--- + + \ No newline at end of file diff --git a/docs/cloud/integrations/reverse-etl/census.mdx b/docs/cloud/integrations/reverse-etl/census.mdx new file mode 100644 index 000000000..956709224 --- /dev/null +++ b/docs/cloud/integrations/reverse-etl/census.mdx @@ -0,0 +1,18 @@ +--- +title: "Census" +--- + +Elementary will automatically and continuously extend the column-level-lineage to your reverse ETL connectors. +This will enable to understand your downstream dependencies. + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/reverse-etl/hightouch.mdx b/docs/cloud/integrations/reverse-etl/hightouch.mdx new file mode 100644 index 000000000..02a5f17a3 --- /dev/null +++ b/docs/cloud/integrations/reverse-etl/hightouch.mdx @@ -0,0 +1,18 @@ +--- +title: "Hightouch" +--- + +Elementary will automatically and continuously extend the column-level-lineage to your reverse ETL connectors. +This will enable to understand your downstream dependencies. + + + + +} +> + Click for details + \ No newline at end of file diff --git a/docs/cloud/integrations/transformation-and-orchestration/airflow.mdx b/docs/cloud/integrations/transformation-and-orchestration/airflow.mdx new file mode 100644 index 000000000..a538d9eaa --- /dev/null +++ b/docs/cloud/integrations/transformation-and-orchestration/airflow.mdx @@ -0,0 +1,13 @@ +--- +title: "Airflow" +--- + +## Jobs information + +Elementary can collect jobs data from Airflow, including `job run url`, `job name`, `job id`. +These are presented in the lineage node info tab. +To collect jobs info for Airflow, check out [this guide](/cloud/guides/collect-job-data). + +## Syncs schedule + +For near-real-time results, it is recommended to change the sync configuration from the default hourly syncs to [webhook triggered syncs](/cloud/guides/sync-scheduling) and invoke using Airflow. \ No newline at end of file diff --git a/docs/cloud/integrations/transformation-and-orchestration/dbt-cloud.mdx b/docs/cloud/integrations/transformation-and-orchestration/dbt-cloud.mdx new file mode 100644 index 000000000..8a617c1e9 --- /dev/null +++ b/docs/cloud/integrations/transformation-and-orchestration/dbt-cloud.mdx @@ -0,0 +1,17 @@ +--- +title: "dbt cloud" +--- + +Elementary integrates with dbt cloud for the supported data warehouses. + +Users need to [deploy the dbt package](/cloud/onboarding/quickstart-dbt-package) in the monitored project, and it will collect results and artifacts in run time using on-run-end hooks. +Results are saved to a dedicated schema, and Elementary syncs the results through the DWH connection. + +## Jobs information + +Elementary automatically collects jobs data from dbt cloud, including `job run url` and `job id`. These are presented in the lineage node info tab. +To collect additional jobs info such as `job name`, check out [this guide](/cloud/guides/collect-job-data). + +## Syncs schedule + +For near-real-time results, it is recommended to change the sync configuration from the default hourly syncs to [webhook triggered syncs](/cloud/guides/sync-scheduling). \ No newline at end of file diff --git a/docs/cloud/integrations/transformation-and-orchestration/dbt-core.mdx b/docs/cloud/integrations/transformation-and-orchestration/dbt-core.mdx new file mode 100644 index 000000000..18dc0b60c --- /dev/null +++ b/docs/cloud/integrations/transformation-and-orchestration/dbt-core.mdx @@ -0,0 +1,12 @@ +--- +title: "dbt core" +--- + +Elementary integrates with dbt core (1.3.0 and above) for the supported data warehouses. + +Users need to [deploy the dbt package](/cloud/onboarding/quickstart-dbt-package) in the monitored project, and it will collect results and artifacts in run time using on-run-end hooks. +Results are saved to a dedicated schema, and Elementary syncs the results through the DWH connection. + +## Syncs schedule + +For near-real-time results, it is recommended to change the sync configuration from the default hourly syncs to [webhook triggered syncs](/cloud/guides/sync-scheduling). \ No newline at end of file diff --git a/docs/cloud/integrations/transformation-and-orchestration/orchestration-tools.mdx b/docs/cloud/integrations/transformation-and-orchestration/orchestration-tools.mdx new file mode 100644 index 000000000..c008720ba --- /dev/null +++ b/docs/cloud/integrations/transformation-and-orchestration/orchestration-tools.mdx @@ -0,0 +1,13 @@ +--- +title: "Orchestration tools" +--- + +## Jobs information + +Elementary can collect jobs data from your orchestration tool, including `job run url`, `job name`, `job id`. +These are presented in the lineage node info tab. +To collect jobs info for your orchestrator, check out [this guide](/cloud/guides/collect-job-data). + +## Syncs schedule + +For near-real-time results, it is recommended to change the sync configuration from the default hourly syncs to [webhook triggered syncs](/cloud/guides/sync-scheduling) and invoke using your orchestration tool. \ No newline at end of file diff --git a/docs/features/elementary-alerts.mdx b/docs/features/elementary-alerts.mdx index 601b25f73..6f7b7117e 100644 --- a/docs/features/elementary-alerts.mdx +++ b/docs/features/elementary-alerts.mdx @@ -3,31 +3,12 @@ title: "Alerts" icon: "bell-exclamation" --- - - More alerts integrations are coming soon, reach out to us for details! - - -## Alerts setup +## Alerts destinations - - - Signup to cloud, and activate the Slack integration. - - - Install the CLI tool, and configure a profile. Use the `edr monitor` command to send alerts. - If you want continuous alerting, you will need to orchestrate the CLI. - - + ## Alerts configuration - - - Use Alert Rules to distribute your alerts to the right channels. - - - Alert content and properties configuration as code in your project YML files. - - + \ No newline at end of file diff --git a/docs/features/exposures-lineage.mdx b/docs/features/exposures-lineage.mdx index fc979f0f2..6128fdfc4 100644 --- a/docs/features/exposures-lineage.mdx +++ b/docs/features/exposures-lineage.mdx @@ -39,21 +39,31 @@ exposures: data_type: "numeric" ``` - - ### Automated BI lineage -Elementary Cloud integrated with BI tools to automatically extend the lineage up to the dashboard level. +Elementary will automatically and continuously extend the column-level-lineage to the dashboard level of your data visualization tool. + + + + -**Supported BI tools:** +### Supported BI tools: -### Why are exposures useful? +### Why is lineage to exposures useful? - **Incidents impact analysis**: You could explore which exposures are impacted by each data issue. - **Exposure health**: By selecting an exposure and filtering on upstream nodes, you could see the status of all it’s upstream datasets. +- **Prioritize data issues**: Prioritize the triage and resolution of issues that are impacting your critical downstream assets. - **Change impact**: Analyze which exposures will be impacted by a planned change. -- **Unused datasets**: Detect datasets that no exposure consumes, that might be removed to save costs. +- **Unused datasets**: Detect datasets that no exposure consumes, that could be removed to save costs. diff --git a/docs/mint.json b/docs/mint.json index d29cd3c6c..c085e387c 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -114,8 +114,8 @@ "group": "Send Slack alerts", "pages": [ "cloud/guides/enable-slack-alerts", - "cloud/guides/alerts-configuration", - "cloud/guides/alert-rules" + "cloud/guides/alert-rules", + "cloud/guides/alerts-configuration" ] }, "cloud/guides/sync-scheduling", @@ -125,30 +125,72 @@ ] }, { - "group": "BI tools integration", - "pages": [ - "cloud/integrations/bi/connect-bi-tool", - "cloud/integrations/bi/looker", - "cloud/integrations/bi/tableau" - ] - }, - { - "group": "Code repository integration", - "pages": [ - "cloud/integrations/code-repo/connect-code-repo", - "cloud/integrations/code-repo/github", - "cloud/integrations/code-repo/gitlab" - ] - }, - { - "group": "Data warehouses", + "group": "Integrations", "pages": [ - "cloud/integrations/dwh/snowflake", - "cloud/integrations/dwh/bigquery", - "cloud/integrations/dwh/redshift", - "cloud/integrations/dwh/databricks", - "cloud/integrations/dwh/postgres", - "cloud/integrations/dwh/athena" + "cloud/integrations/elementary-integrations", + { + "group": "Data warehouses", + "pages": [ + "cloud/integrations/dwh/snowflake", + "cloud/integrations/dwh/bigquery", + "cloud/integrations/dwh/redshift", + "cloud/integrations/dwh/databricks", + "cloud/integrations/dwh/postgres", + "cloud/integrations/dwh/athena", + "cloud/integrations/dwh/clickhouse" + ] + }, + { + "group": "Transformation & Orchestration", + "pages": [ + "cloud/integrations/transformation-and-orchestration/dbt-core", + "cloud/integrations/transformation-and-orchestration/dbt-cloud", + "cloud/integrations/transformation-and-orchestration/airflow", + "cloud/integrations/transformation-and-orchestration/orchestration-tools" + ] + }, + { + "group": "Data visualization", + "pages": [ + "cloud/integrations/bi/connect-bi-tool", + "cloud/integrations/bi/looker", + "cloud/integrations/bi/tableau", + "cloud/integrations/bi/metabase", + "cloud/integrations/bi/power-bi", + "cloud/integrations/bi/sigma", + "cloud/integrations/bi/thoughtspot", + "cloud/integrations/bi/mode", + "cloud/integrations/bi/hex", + "cloud/integrations/bi/explo" + ] + }, + { + "group": "Reverse ETL", + "pages": [ + "cloud/integrations/reverse-etl/census", + "cloud/integrations/reverse-etl/hightouch" + ] + }, + { + "group": "Code repositories", + "pages": [ + "cloud/integrations/code-repo/connect-code-repo", + "cloud/integrations/code-repo/github", + "cloud/integrations/code-repo/gitlab" + ] + }, + { + "group": "Communication & collaboration", + "pages": [ + "cloud/integrations/alerts/slack", + "cloud/integrations/alerts/ms-teams", + "cloud/integrations/alerts/pagerduty", + "cloud/integrations/alerts/opsgenie", + "cloud/integrations/alerts/jira", + "cloud/integrations/alerts/linear", + "cloud/integrations/alerts/webhooks" + ] + } ] }, { From 2bf853a3159d189bc35029c9322d944191dc24ff Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Tue, 19 Mar 2024 21:24:27 +0200 Subject: [PATCH 23/47] Update exposures-lineage.mdx --- docs/features/exposures-lineage.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/features/exposures-lineage.mdx b/docs/features/exposures-lineage.mdx index 6128fdfc4..32ad02a46 100644 --- a/docs/features/exposures-lineage.mdx +++ b/docs/features/exposures-lineage.mdx @@ -39,14 +39,14 @@ exposures: data_type: "numeric" ``` + + ### Automated BI lineage Elementary will automatically and continuously extend the column-level-lineage to the dashboard level of your data visualization tool. - -
-Elementary has two product offerings: +Elementary includes two products: From 9da76399a5d3e1df9b22c40a58ec66cabe6f8850 Mon Sep 17 00:00:00 2001 From: Maayan-s Date: Wed, 1 May 2024 20:13:36 +0300 Subject: [PATCH 33/47] updates --- docs/overview/cloud-vs-oss.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/cloud-vs-oss.mdx b/docs/overview/cloud-vs-oss.mdx index 908c36337..1ca3094d7 100644 --- a/docs/overview/cloud-vs-oss.mdx +++ b/docs/overview/cloud-vs-oss.mdx @@ -35,7 +35,7 @@ An open-source CLI tool you can deploy and orchestrate to send Slack alerts and | Slack and MS Teams alerts | âś… | âś… | | Alert distribution rules, multiple
destinations, custom formats | ❌ | ✅ | | Additional alert destinations:
PagerDuty, OpsGenie, Webhook | ❌ | ✅ | -| 🚧 *Alert actions* | ❌ | ✅ | +| Alert actions | ❌ | ✅ | | Data catalog | ❌ | ✅ | | **Deployment, security and service** | | | | Deployment | Self hosted, CLI | Cloud service | @@ -45,7 +45,7 @@ An open-source CLI tool you can deploy and orchestrate to send Slack alerts and | Social login with Google | ❌ | ✅ | | SSO using OKTA / OneLogin / AD | ❌ | ✅ | | Custom deployment options | ❌ | ✅ | -| 🚧 *Role based access control* | ❌ | ✅ | +| Role based access control | ❌ | ✅ | | Support SLA | Community support | 24 hours SLA | From fd2a35ea1b598bc6dc1dc94f4fcd55c04590cc67 Mon Sep 17 00:00:00 2001 From: Ella Katz Date: Thu, 2 May 2024 13:49:33 +0300 Subject: [PATCH 34/47] add empty ui troubleshooting section --- docs/cloud/guides/troubleshoot.mdx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/cloud/guides/troubleshoot.mdx b/docs/cloud/guides/troubleshoot.mdx index 7b31fdb4e..df12af1c3 100644 --- a/docs/cloud/guides/troubleshoot.mdx +++ b/docs/cloud/guides/troubleshoot.mdx @@ -2,6 +2,25 @@ title: "Troubleshooting" --- +### I connected my data warehouse but I don't see any test results + +If you already connected your data warehouse to Elementary but don't see anything in Elementary UI, there could be several reasons. +Try following these steps to troubleshoot: + + +**1. Validate elementary dbt package is deployed, working, and using the latest version** + +- Refer to the [dbt package installation guide](/quickstart#install-the-dbt-package), and validate that your version in packages.yml is the one mentioned there. If not, upgrade and run `dbt deps`. Make sure to execute `dbt run --select elementary` for the package tables to be created. + +**2. Check if the table `elementary_test_results` exists and has data** +- If the table does not exist - refer to the [dbt package installation guide](/quickstart#install-the-dbt-package). Make sure to execute `dbt run --select elementary` for the package tables to be created. +- If the table exists but has no data - Did you execute `dbt test` since deploying the package and creating the models? +- If you have, make sure the table was created as an incremental table (not a regular table or view). +- If not, there is a materialization configuration in your `dbt_project.yml` file that overrides the package config. Remove it, and run `dbt run --select elementary --full-refresh` to recreate the tables. After that run `dbt test` again and check if there is data. + +**4. Still no data in the table? Reach out to the elementary team by starting an intercom chat from Elementary UI.** + + ### Column information cannot be retrieved This error can happen because of a few reasons: From 81e6acafc0a69e73213ba111d279629cb6179c40 Mon Sep 17 00:00:00 2001 From: Ella Katz Date: Wed, 15 May 2024 12:56:16 +0300 Subject: [PATCH 35/47] quick update for model override --- docs/cloud/guides/troubleshoot.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/cloud/guides/troubleshoot.mdx b/docs/cloud/guides/troubleshoot.mdx index df12af1c3..9191188b1 100644 --- a/docs/cloud/guides/troubleshoot.mdx +++ b/docs/cloud/guides/troubleshoot.mdx @@ -39,3 +39,14 @@ For more information on the permissions required by each data warehouse: [Databricks](/cloud/integrations/dwh/databricks#permissions-and-security) [Postgres](/cloud/integrations/dwh/postgres#permissions-and-security) + + +### How do I set-up the table name of my Singular test? + +Singular tests are sql queries that can reference more than one table, but are often intended to test a logic that is related to one table in particular. +In order to have that table name appear in the UI in the test results, test execution and more screens, you may set it up by adding the following to the config block of your singular test file: +``` +{{ config( + override_primary_test_model_id="model_name" +) }} +``` \ No newline at end of file From ec0d8b80495b39d13d5d4a359541c3e3492975b9 Mon Sep 17 00:00:00 2001 From: Itamar Hartstein Date: Mon, 20 May 2024 11:37:49 +0300 Subject: [PATCH 36/47] Update volume-anomalies.mdx (#1526) Use regular dash instead of EM dash so it will work when copying --- docs/data-tests/anomaly-detection-tests/volume-anomalies.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-tests/anomaly-detection-tests/volume-anomalies.mdx b/docs/data-tests/anomaly-detection-tests/volume-anomalies.mdx index fffea01c1..b564514fc 100644 --- a/docs/data-tests/anomaly-detection-tests/volume-anomalies.mdx +++ b/docs/data-tests/anomaly-detection-tests/volume-anomalies.mdx @@ -24,7 +24,7 @@ No mandatory configuration, however it is highly recommended to configure a `tim
  
   tests:
-      -- elementary.volume_anomalies:
+      - elementary.volume_anomalies:
           timestamp_column: column name
           where_expression: sql expression
           anomaly_sensitivity: int

From e1fa942ca07ec5143bd97ea8ce4167e7bc905aad Mon Sep 17 00:00:00 2001
From: Maayan-s 
Date: Tue, 21 May 2024 16:12:45 +0300
Subject: [PATCH 37/47] fixes to dimensions documentation

---
 .../anomaly-params.mdx                              |  5 ++++-
 .../anomaly-detection-configuration/dimensions.mdx  | 13 ++++++++-----
 .../exclude-final-results.mdx                       | 10 +++++-----
 .../all-columns-anomalies.mdx                       |  2 +-
 .../anomaly-detection-tests/column-anomalies.mdx    |  2 +-
 docs/mint.json                                      |  3 ++-
 6 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/docs/data-tests/anomaly-detection-configuration/anomaly-params.mdx b/docs/data-tests/anomaly-detection-configuration/anomaly-params.mdx
index 0765fd48e..4a9951d8b 100644
--- a/docs/data-tests/anomaly-detection-configuration/anomaly-params.mdx
+++ b/docs/data-tests/anomaly-detection-configuration/anomaly-params.mdx
@@ -36,6 +36,9 @@ sidebarTitle: "All configuration params"
             period: [hour | day | week | month]
             count: int
 
+  dimension_anomalies, column_anomalies, all_columns_anomalies tests: 
+   -- dimensions: sql expression
+
   volume_anomalies test:
    -- fail_on_zero: [true | false]
 
@@ -45,7 +48,7 @@ sidebarTitle: "All configuration params"
    -- exclude_regexp: regex
 
   dimension_anomalies test:
-   -- dimensions: sql expression
+   -- exclude_final_results: [SQL where expression on fields value / average]
 
   event_freshness_anomalies:
    -- event_timestamp_column: column name
diff --git a/docs/data-tests/anomaly-detection-configuration/dimensions.mdx b/docs/data-tests/anomaly-detection-configuration/dimensions.mdx
index d5218e3b6..89e753eee 100644
--- a/docs/data-tests/anomaly-detection-configuration/dimensions.mdx
+++ b/docs/data-tests/anomaly-detection-configuration/dimensions.mdx
@@ -5,15 +5,18 @@ sidebarTitle: "dimensions"
 
 `dimensions: [list of SQL expressions]`
 
-Configuration for the tests `dimension_anomalies`, `column_anomalies` and `all_columns_anomalies`.
-The test counts rows grouped by given column / columns / valid select sql expression.
+The test will group the results by a given column / columns / valid select sql expression.
 Under `dimensions` you can configure the group by expression.
 
-This test monitors the frequency of values in the configured dimension over time, and alerts on unexpected changes in the distribution.
-It is best to configure it on low-cardinality fields.
+Using this param segments the tested data per dimension, and each dimension is monitored seperataly.
+
+For example - 
+A `column_anomalies` test monitoring for `null_rate` with `dimensions` configured will monitor the 
+`null_rate` of values in the column, grouped by dimension, and will fail if in a specific dimension there is an anomaly in `null_rate`.
+It is best to configure low-cardinality fields as `dimensions`.
 
 - _Default: None_
-- _Relevant tests: `dimension_anomalies`_
+- _Relevant tests: `dimension_anomalies`, `column_anomalies`, `all_columns_anomalies`_
 - _Configuration level: test_
 
 
diff --git a/docs/data-tests/anomaly-detection-configuration/exclude-final-results.mdx b/docs/data-tests/anomaly-detection-configuration/exclude-final-results.mdx
index fac867d5a..3152cf031 100644
--- a/docs/data-tests/anomaly-detection-configuration/exclude-final-results.mdx
+++ b/docs/data-tests/anomaly-detection-configuration/exclude-final-results.mdx
@@ -5,15 +5,15 @@ sidebarTitle: "exclude_final_results"
 
 `exclude_final_results: [SQL where expression on fields value / average]`
 
-Failures in dimension anomaly tests consist of outliers in row counts across all dimensions during the training period.
-Some dimensions may contribute metrics that are considered insignificant compared to others, and you may prefer not to receive alerts for them.
-With this parameter, you can disregard such failures.
+Failures in dimension anomaly tests consist of outliers in row count of each dimension.
+Some dimensions may be considered insignificant compared to others, and you may prefer not to receive alerts for them.
+With this parameter, you can exclude these dimensions from the results set and avoid such failures.
 
-1. `value` - Outlier row count of a dimension during the detection period.
+1. `value` - Max row count of a dimension during the detection period.
 2. `average` - The average rows count of a dimension during the training period.
 
 - _Supported values: valid SQL where expression on the columns value / average_
-- _Relevant tests: Dimension anomalies _
+- _Relevant tests: Dimension anomalies_
 
 
 
diff --git a/docs/data-tests/anomaly-detection-tests/all-columns-anomalies.mdx b/docs/data-tests/anomaly-detection-tests/all-columns-anomalies.mdx
index 613a45d2e..546ea6ebb 100644
--- a/docs/data-tests/anomaly-detection-tests/all-columns-anomalies.mdx
+++ b/docs/data-tests/anomaly-detection-tests/all-columns-anomalies.mdx
@@ -24,7 +24,7 @@ No mandatory configuration, however it is highly recommended to configure a `tim
       -- elementary.all_columns_anomalies:
           timestamp_column: column name
           column_anomalies: column monitors list
-          dimensions: list
+          dimensions: sql expression
           exclude_prefix: string
           exclude_regexp: regex
           where_expression: sql expression
diff --git a/docs/data-tests/anomaly-detection-tests/column-anomalies.mdx b/docs/data-tests/anomaly-detection-tests/column-anomalies.mdx
index e48b157fc..fd88dbab9 100644
--- a/docs/data-tests/anomaly-detection-tests/column-anomalies.mdx
+++ b/docs/data-tests/anomaly-detection-tests/column-anomalies.mdx
@@ -22,7 +22,7 @@ No mandatory configuration, however it is highly recommended to configure a `tim
   tests:
       -- elementary.column_anomalies:
           column_anomalies: column monitors list
-          dimensions: list
+          dimensions: sql expression
           timestamp_column: column name
           where_expression: sql expression
           anomaly_sensitivity: int
diff --git a/docs/mint.json b/docs/mint.json
index 9d9bb9820..1308b2f2f 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -240,7 +240,8 @@
             "data-tests/anomaly-detection-configuration/ignore_small_changes",
             "data-tests/anomaly-detection-configuration/fail_on_zero",
             "data-tests/anomaly-detection-configuration/detection-delay",
-            "data-tests/anomaly-detection-configuration/anomaly-exclude-metrics"
+            "data-tests/anomaly-detection-configuration/anomaly-exclude-metrics",
+            "data-tests/anomaly-detection-configuration/exclude_final_results"
           ]
         },
         "data-tests/anomaly-detection-tests/volume-anomalies",

From b8715213f82990ea9e7fc848e7a328940be8c77f Mon Sep 17 00:00:00 2001
From: Maayan-s 
Date: Tue, 21 May 2024 16:20:09 +0300
Subject: [PATCH 38/47] fixes to dimensions documentation

---
 docs/mint.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/mint.json b/docs/mint.json
index 1308b2f2f..839fbba87 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -241,7 +241,7 @@
             "data-tests/anomaly-detection-configuration/fail_on_zero",
             "data-tests/anomaly-detection-configuration/detection-delay",
             "data-tests/anomaly-detection-configuration/anomaly-exclude-metrics",
-            "data-tests/anomaly-detection-configuration/exclude_final_results"
+            "data-tests/anomaly-detection-configuration/exclude-final-results"
           ]
         },
         "data-tests/anomaly-detection-tests/volume-anomalies",

From 61fd66407aacb26b37e3fa2b8cb68e9e7b853042 Mon Sep 17 00:00:00 2001
From: Maayan-s 
Date: Tue, 28 May 2024 16:35:16 +0300
Subject: [PATCH 39/47] Snowflake summit

---
 docs/introduction.mdx | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/docs/introduction.mdx b/docs/introduction.mdx
index 6489c08cc..9ed1efd1e 100644
--- a/docs/introduction.mdx
+++ b/docs/introduction.mdx
@@ -5,12 +5,15 @@ description: "dbt-native data observability platform built for data and analytic
 icon: "fire"
 ---
 
-
+ +
Elementary banner
+
Elementary includes two products: From 0fb2fd640dd5326ee96a32566058f6cf5bb180da Mon Sep 17 00:00:00 2001 From: Ella Katz Date: Mon, 3 Jun 2024 07:06:22 -0700 Subject: [PATCH 40/47] github instructions --- docs/cloud/integrations/code-repo/github.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/cloud/integrations/code-repo/github.mdx b/docs/cloud/integrations/code-repo/github.mdx index 67b37af4a..1cca0f38a 100644 --- a/docs/cloud/integrations/code-repo/github.mdx +++ b/docs/cloud/integrations/code-repo/github.mdx @@ -4,8 +4,16 @@ title: "Github" Elementary connects to the code repository where your dbt project code is managed, and opens PRs with configuration changes. +### Recommended: Connect using Elementary Elementary Github App + +Simply Click the blue button that says "Connect with Elementary Github App" and follow the instructions. +In the menu that opens up later on, select the repository where your dbt project is stored, and if needed the branch and path to the dbt project. + ### Create a Github [fine-grained token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) +If for some reason you prefer to, you can connect to Github using a fine-grained token managed by your team instead. +Here is how you can create one: + 1. In the upper-right corner of any page, click your profile photo, then click **Settings**. 2. On the bottom of the left sidebar, click **Developer settings**. 3. On the left sidebar, select **Personal access tokens > Fine-grained tokens**. From c2fbe68d1c396672a165191e27d4f01c29e51bae Mon Sep 17 00:00:00 2001 From: Elon Gliksberg Date: Tue, 11 Jun 2024 14:11:24 +0300 Subject: [PATCH 41/47] Fixed incorrect test name 'all_column_anomalies' in docs. --- .../anomaly-detection-configuration/column-anomalies.mdx | 2 +- .../anomaly-detection-configuration/exclude_prefix.mdx | 2 +- .../anomaly-detection-configuration/exclude_regexp.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/data-tests/anomaly-detection-configuration/column-anomalies.mdx b/docs/data-tests/anomaly-detection-configuration/column-anomalies.mdx index 3614c1d6b..0eb68820e 100644 --- a/docs/data-tests/anomaly-detection-configuration/column-anomalies.mdx +++ b/docs/data-tests/anomaly-detection-configuration/column-anomalies.mdx @@ -8,7 +8,7 @@ sidebarTitle: "column_anomalies" Select which monitors to activate as part of the test. - _Default: default monitors_ -- _Relevant tests: `all_column_anomalies`, `column_anomalies`_ +- _Relevant tests: `all_columns_anomalies`, `column_anomalies`_ - _Configuration level: test_ diff --git a/docs/data-tests/anomaly-detection-configuration/exclude_prefix.mdx b/docs/data-tests/anomaly-detection-configuration/exclude_prefix.mdx index ae9b3c2e8..56109822b 100644 --- a/docs/data-tests/anomaly-detection-configuration/exclude_prefix.mdx +++ b/docs/data-tests/anomaly-detection-configuration/exclude_prefix.mdx @@ -8,7 +8,7 @@ sidebarTitle: "exclude_prefix" Param for the `all_columns_anomalies` test only, which enables to exclude a column from the tests based on prefix match. - _Default: None_ -- _Relevant tests: `all_column_anomalies`_ +- _Relevant tests: `all_columns_anomalies`_ - _Configuration level: test_ diff --git a/docs/data-tests/anomaly-detection-configuration/exclude_regexp.mdx b/docs/data-tests/anomaly-detection-configuration/exclude_regexp.mdx index 8bc02fcaf..02f27769b 100644 --- a/docs/data-tests/anomaly-detection-configuration/exclude_regexp.mdx +++ b/docs/data-tests/anomaly-detection-configuration/exclude_regexp.mdx @@ -8,7 +8,7 @@ sidebarTitle: "exclude_regexp" Param for the `all_columns_anomalies` test only, which enables to exclude a column from the tests based on regular expression match. - _Default: None_ -- _Relevant tests: `all_column_anomalies`_ +- _Relevant tests: `all_columns_anomalies`_ - _Configuration level: test_ From 3ee16371f193893ee41ac975393b110692321fe2 Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Mon, 1 Jul 2024 16:26:45 +0300 Subject: [PATCH 42/47] Cloud docs revamp (#1567) * fixes to dimensions documentation * business case and how does elementary work * fixes to dimensions documentation * fixes to dimensions documentation * how it works snippet * how it works snippet * Lineage * Lineage changes * anomaly detection * data tests * data tests * data tests * performance monitoring * navigation changes * links * typos * broken links --------- Co-authored-by: ronisaban --- docs/_snippets/cloud/features.mdx | 81 +++++++++ .../automated-monitors-cards.mdx | 10 ++ .../automated-monitors-intro.mdx | 5 + docs/_snippets/cloud/how-it-works.mdx | 12 ++ docs/cloud/features.mdx | 6 + docs/cloud/general/security-and-privacy.mdx | 2 +- docs/cloud/introduction.mdx | 50 ++++-- .../dimensions.mdx | 2 +- .../alert-configuration.mdx | 0 .../alerts-and-incidents}/alert-rules.mdx | 0 .../alerts-and-incidents-overview.mdx | 0 .../effective-alerts-setup.mdx | 0 .../incident-management.mdx | 0 .../owners-and-subscribers.mdx | 0 .../anomaly-detection/automated-freshness.mdx | 6 + .../anomaly-detection/automated-monitors.mdx | 27 +++ .../anomaly-detection/automated-volume.mdx | 6 + .../disable-or-mute-monitors.mdx | 6 + .../monitors-configuration.mdx | 6 + .../anomaly-detection/monitors-feedback.mdx | 6 + .../anomaly-detection/monitors-overview.mdx | 32 ++++ .../anomaly-detection/opt-in-monitors.mdx | 9 + docs/features/automated-monitors.mdx | 38 ----- docs/features/ci.mdx | 1 - .../catalog.mdx | 2 - .../data-observability-dashboard.mdx | 1 - docs/features/config-as-code.mdx | 1 - .../data-governance/define-ownership.mdx | 0 .../data-governance/leverage-tags.mdx | 0 .../overview-and-best-practices.mdx | 0 .../column-level-lineage.mdx | 19 ++- .../{ => data-lineage}/exposures-lineage.mdx | 37 ++--- docs/features/data-lineage/lineage.mdx | 40 +++++ docs/features/data-tests.mdx | 13 -- docs/features/data-tests/custom-sql-tests.mdx | 6 + .../data-tests/data-tests-overview.mdx | 15 ++ docs/features/data-tests/dbt-tests.mdx | 24 +++ .../data-tests/schema-validation-test.mdx | 6 + docs/features/elementary-alerts.mdx | 14 -- docs/features/lineage.mdx | 32 ---- docs/features/multi-env.mdx | 1 - .../performance-monitoring.mdx | 40 +++++ docs/key-features.mdx | 40 +++++ docs/mint.json | 154 +++++++++++++++--- ...iness-case-data-observability-platform.mdx | 19 +++ docs/resources/how-does-elementary-work | 28 ++++ 46 files changed, 630 insertions(+), 167 deletions(-) create mode 100644 docs/_snippets/cloud/features.mdx create mode 100644 docs/_snippets/cloud/features/anomaly-detection/automated-monitors-cards.mdx create mode 100644 docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx create mode 100644 docs/_snippets/cloud/how-it-works.mdx create mode 100644 docs/cloud/features.mdx create mode 100644 docs/features/alerts-and-incidents/alert-configuration.mdx rename docs/{cloud/guides => features/alerts-and-incidents}/alert-rules.mdx (100%) create mode 100644 docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx create mode 100644 docs/features/alerts-and-incidents/effective-alerts-setup.mdx create mode 100644 docs/features/alerts-and-incidents/incident-management.mdx create mode 100644 docs/features/alerts-and-incidents/owners-and-subscribers.mdx create mode 100644 docs/features/anomaly-detection/automated-freshness.mdx create mode 100644 docs/features/anomaly-detection/automated-monitors.mdx create mode 100644 docs/features/anomaly-detection/automated-volume.mdx create mode 100644 docs/features/anomaly-detection/disable-or-mute-monitors.mdx create mode 100644 docs/features/anomaly-detection/monitors-configuration.mdx create mode 100644 docs/features/anomaly-detection/monitors-feedback.mdx create mode 100644 docs/features/anomaly-detection/monitors-overview.mdx create mode 100644 docs/features/anomaly-detection/opt-in-monitors.mdx delete mode 100644 docs/features/automated-monitors.mdx rename docs/features/{ => collaboration-and-communication}/catalog.mdx (94%) rename docs/features/{ => collaboration-and-communication}/data-observability-dashboard.mdx (97%) create mode 100644 docs/features/data-governance/define-ownership.mdx create mode 100644 docs/features/data-governance/leverage-tags.mdx create mode 100644 docs/features/data-governance/overview-and-best-practices.mdx rename docs/features/{ => data-lineage}/column-level-lineage.mdx (81%) rename docs/features/{ => data-lineage}/exposures-lineage.mdx (59%) create mode 100644 docs/features/data-lineage/lineage.mdx delete mode 100644 docs/features/data-tests.mdx create mode 100644 docs/features/data-tests/custom-sql-tests.mdx create mode 100644 docs/features/data-tests/data-tests-overview.mdx create mode 100644 docs/features/data-tests/dbt-tests.mdx create mode 100644 docs/features/data-tests/schema-validation-test.mdx delete mode 100644 docs/features/lineage.mdx create mode 100644 docs/features/performance-monitoring/performance-monitoring.mdx create mode 100644 docs/resources/business-case-data-observability-platform.mdx create mode 100644 docs/resources/how-does-elementary-work diff --git a/docs/_snippets/cloud/features.mdx b/docs/_snippets/cloud/features.mdx new file mode 100644 index 000000000..819293fec --- /dev/null +++ b/docs/_snippets/cloud/features.mdx @@ -0,0 +1,81 @@ + +### Detection & Coverage + +Elementary integrates powerful anomaly detection and dbt tests into a unified detection strategy. +Effective data issues detection requires a comprehensive approach, +including both pipeline and data monitoring, validation tests, +anomaly detection for unexpected behavior, and a single interface to manage it all at scale. + + + + ML-Powered monitors to automatically detect data quality issues. + Out-of-the-box volume and freshness, and opt-in for data quality metrics. + + + Validate data and track the results of dbt tests, dbt packages tests (dbt-utils, dbt-expectations, elementary) and custom SQL tests. + + + Validate there are no breaking changes in tables schema, JSON schema, and downstream exposures such as dashboards. + + + Track failures and runs of jobs, models, and tests overtime. + Pipeline failures and performance issues can cause data incidents, and create unneceserry costs. + + + Configure Elementary in code, or in UI for non-technical users and adding tests in bulk. + The platform opens PRs to your repo, saving hours of tedious YAML edits. + + + Coming soon! + + + +### Triage & Response + +Detecting issues is just the first step to achieve data reliability. +Elementary offers tools to create an effective response plan, for faster recovery. +This includes investigating issues root cause and impact, communicating issues to the relevant people, assigning owners to fix issues, keeping track of open incidents and more. + + + + Column level lineage that spans through sources, models and BI tools, enriched with monitoring results. Enables granular root cause and impact analysis. + + + Define clear ownership of data aseets, to enable owners to be informed and accountable for the health and status of their data. + + + Distribute highly configurable alerts to different channels and integrations. + Automatically tag owners, and enable setting status and assigns at the alert level. + + + Different failures who relate to the same issue are grouped automatically to a single incident. + This accelerates triage and response, and reduces alerts fautigue. + + + Manage all open incidents in a single interface, with clear view of status and assigns. + Track historical incidents and high-level incidents metrics. + + + +### Collaboration & Communication + +The data team doesn’t live in a silo - You have many stakeholders. +The only way to improve data trust is by bringing in more team members, users and stakeholders to the data health process. +Elementary fosters collaboration by allowing you to easily share and communicate the status of issues, +the overall health of the data platform and progress made to improve it with the broader organization. + + + + Up to date dashboard with current status and trends of data issues. + Share the dashboard with others, enable them to slice results and get informed of the health of data. + + + Enabled effective collaboration and communication by grouping related data assets and tests by business domains, data products, priority, etc. + + + Search and explore your datasets information - descriptions, columns, column descriptions, compiled code, datasets health and more. + + + Coming soon! + + \ No newline at end of file diff --git a/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-cards.mdx b/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-cards.mdx new file mode 100644 index 000000000..578c45146 --- /dev/null +++ b/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-cards.mdx @@ -0,0 +1,10 @@ + + + Monitors updates to tables and how frequently a table is updated, + and fails if there is an unexpected delay. + + + Monitors how many rows were added or removed to a table on each update, + and fails if there is an unexpected drop or spike in rows. + + \ No newline at end of file diff --git a/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx b/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx new file mode 100644 index 000000000..ec3cbe36a --- /dev/null +++ b/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx @@ -0,0 +1,5 @@ +Out-of-the-box ML-powered monitoring for freshness and volume issues on all production tables. +The automated monitors provides broad coverage and detection of critical pipeline issues, without any configuration effort. + +These monitors track updates to tables, and will detect data delays, incomplete updates, and significant volume changes. +Additionally, there will be no increase in compute costs as the monitors leverage only warehouse metadata (e.g. information schema, query history). \ No newline at end of file diff --git a/docs/_snippets/cloud/how-it-works.mdx b/docs/_snippets/cloud/how-it-works.mdx new file mode 100644 index 000000000..941bef9a2 --- /dev/null +++ b/docs/_snippets/cloud/how-it-works.mdx @@ -0,0 +1,12 @@ +1. You install the Elementary dbt package in your dbt project and configure it to write to it's own schema, the Elementary schema. +2. The package writes test results, run results, logs and metadata to the Elementary schema. +3. The cloud service only requires `read access` to the Elementary schema, not to schemas where your sensitive data is stored. +4. The cloud service connects to sync the Elementary schema using an **encrypted connection** and a **static IP address** that you will need to add to your allowlist. + + + Elementary cloud security + \ No newline at end of file diff --git a/docs/cloud/features.mdx b/docs/cloud/features.mdx new file mode 100644 index 000000000..4a27276bb --- /dev/null +++ b/docs/cloud/features.mdx @@ -0,0 +1,6 @@ +--- +title: "Platform features" +icon: "browsers" +--- + + \ No newline at end of file diff --git a/docs/cloud/general/security-and-privacy.mdx b/docs/cloud/general/security-and-privacy.mdx index cd513679f..c665454bd 100644 --- a/docs/cloud/general/security-and-privacy.mdx +++ b/docs/cloud/general/security-and-privacy.mdx @@ -6,7 +6,7 @@ icon: "lock" ## Security highlights -Our product is designed with security and compliance in mind. +Our product is designed with security and privacy in mind. - Elementary Cloud does not have read access to raw data in your data warehouse. - Elementary Cloud only extracts and stores metadata, logs and aggregated metrics. diff --git a/docs/cloud/introduction.mdx b/docs/cloud/introduction.mdx index 0ced5c12c..b9225da0f 100644 --- a/docs/cloud/introduction.mdx +++ b/docs/cloud/introduction.mdx @@ -1,20 +1,44 @@ --- -title: "Elementary Cloud" +title: "Elementary Cloud Platform" sidebarTitle: "Introduction" icon: "cloud" --- - +**Elementary is a data observability platform tailored for dbt first data organizations.** - - - Start 30 days free trial, no credit card is required. - - +The unique dbt-native architecture seamlessly integrates into engineers' workflows, ensuring ease of use and smooth adoption. +The platform provides out-of-the-box monitoring for critical issues, tools to effortlessly increase coverage, and integrations for end-to-end visibility across the data stack. - +Elementary promotes ownership and collaboration on incidents, and enables the whole data organization to take an active role in the data quality process. +By automatically measuring and tracking data health, it helps teams transition from reactive firefighting to proactively communicating data health to consumers and stakeholders. + + + + + +## Cloud Platform Features + + + +## Architecture and Security + + + +Our product is designed with [Security and Privacy](/cloud/general/security-and-privacy) in mind. + + +**SOC 2 certification:** Elementary is SOC2 type II certified! + + + +## How to Start? + + + + \ No newline at end of file diff --git a/docs/data-tests/anomaly-detection-configuration/dimensions.mdx b/docs/data-tests/anomaly-detection-configuration/dimensions.mdx index 89e753eee..748ae262f 100644 --- a/docs/data-tests/anomaly-detection-configuration/dimensions.mdx +++ b/docs/data-tests/anomaly-detection-configuration/dimensions.mdx @@ -8,7 +8,7 @@ sidebarTitle: "dimensions" The test will group the results by a given column / columns / valid select sql expression. Under `dimensions` you can configure the group by expression. -Using this param segments the tested data per dimension, and each dimension is monitored seperataly. +Using this param segments the tested data per dimension, and each dimension is monitored separately. For example - A `column_anomalies` test monitoring for `null_rate` with `dimensions` configured will monitor the diff --git a/docs/features/alerts-and-incidents/alert-configuration.mdx b/docs/features/alerts-and-incidents/alert-configuration.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/cloud/guides/alert-rules.mdx b/docs/features/alerts-and-incidents/alert-rules.mdx similarity index 100% rename from docs/cloud/guides/alert-rules.mdx rename to docs/features/alerts-and-incidents/alert-rules.mdx diff --git a/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx b/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/features/alerts-and-incidents/effective-alerts-setup.mdx b/docs/features/alerts-and-incidents/effective-alerts-setup.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/features/alerts-and-incidents/incident-management.mdx b/docs/features/alerts-and-incidents/incident-management.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/features/alerts-and-incidents/owners-and-subscribers.mdx b/docs/features/alerts-and-incidents/owners-and-subscribers.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/features/anomaly-detection/automated-freshness.mdx b/docs/features/anomaly-detection/automated-freshness.mdx new file mode 100644 index 000000000..d6bd1e775 --- /dev/null +++ b/docs/features/anomaly-detection/automated-freshness.mdx @@ -0,0 +1,6 @@ +--- +title: Automated Freshness Monitor +sidebarTitle: "Automated freshness" +--- + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/anomaly-detection/automated-monitors.mdx b/docs/features/anomaly-detection/automated-monitors.mdx new file mode 100644 index 000000000..0a459495f --- /dev/null +++ b/docs/features/anomaly-detection/automated-monitors.mdx @@ -0,0 +1,27 @@ +--- +title: Automated Freshness & Volume Monitors +sidebarTitle: "Introduction" +--- + + + + + +### How it works? + +The monitors collect metadata, and the [anomaly detection model](cloud/features/anomaly-detection/monitors-overview#how-anomaly-detection-works?) adjusts based on updates frequency, seasonality and trends. + +As soon as you connect Elementary Cloud Platform to your data warehouse, a backfill process will begin to collect historical metadata. +Within an average of a few hours, your automated monitors will be operational. + +You can fine tune the [configuration](cloud/features/anomaly-detection/monitors-configuration) and [provide feedback](cloud/features/anomaly-detection/monitors-feedback) to adjust the detection to your needs. + +As views are stateless, automated volume and freshness monitors only apply on tables. + +## Automated Monitors + + + +## Alerts on Failures + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/anomaly-detection/automated-volume.mdx b/docs/features/anomaly-detection/automated-volume.mdx new file mode 100644 index 000000000..5ccf6e8ea --- /dev/null +++ b/docs/features/anomaly-detection/automated-volume.mdx @@ -0,0 +1,6 @@ +--- +title: Automated Volume Monitor +sidebarTitle: "Automated volume" +--- + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/anomaly-detection/disable-or-mute-monitors.mdx b/docs/features/anomaly-detection/disable-or-mute-monitors.mdx new file mode 100644 index 000000000..7c3d52cb8 --- /dev/null +++ b/docs/features/anomaly-detection/disable-or-mute-monitors.mdx @@ -0,0 +1,6 @@ +--- +title: Mute or Delete Monitors +sidebarTitle: "Mute or delete" +--- + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/anomaly-detection/monitors-configuration.mdx b/docs/features/anomaly-detection/monitors-configuration.mdx new file mode 100644 index 000000000..e5970c29e --- /dev/null +++ b/docs/features/anomaly-detection/monitors-configuration.mdx @@ -0,0 +1,6 @@ +--- +title: Monitors Configuration +sidebarTitle: "Monitors configuration" +--- + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/anomaly-detection/monitors-feedback.mdx b/docs/features/anomaly-detection/monitors-feedback.mdx new file mode 100644 index 000000000..b2e270eb2 --- /dev/null +++ b/docs/features/anomaly-detection/monitors-feedback.mdx @@ -0,0 +1,6 @@ +--- +title: Monitors Feedback +sidebarTitle: "Monitors feedback" +--- + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/anomaly-detection/monitors-overview.mdx b/docs/features/anomaly-detection/monitors-overview.mdx new file mode 100644 index 000000000..e1f1a4d6d --- /dev/null +++ b/docs/features/anomaly-detection/monitors-overview.mdx @@ -0,0 +1,32 @@ +--- +title: Anomaly Detection Monitors +sidebarTitle: "Monitors overview" +--- + + + +ML-powered anomaly detection monitors to automatically identify outliers and unexpected patterns in your data. +These are useful to detect issues such as incomplete data, delays, drop in a specific dimension or a spike in null values. + +Elementary offers two types of monitors: + +- **Automated Monitors** - Out-of-the-box monitors who are activated automatically, and query metadata only. +- **Opt-in Monitors** - Monitors who query raw data and require configuration. + +## [Automated monitors](/features/anomaly-detection/automated-monitors) + + + + + +## Opt-in monitors + +_Coming soon_ + +## How anomaly detection works? + +_🚧 Under construction 🚧_ + +## Monitor results + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/anomaly-detection/opt-in-monitors.mdx b/docs/features/anomaly-detection/opt-in-monitors.mdx new file mode 100644 index 000000000..114c9a4d8 --- /dev/null +++ b/docs/features/anomaly-detection/opt-in-monitors.mdx @@ -0,0 +1,9 @@ +--- +title: Opt-In Monitors +sidebarTitle: "Opt-in monitors" +--- + +_Coming Soon_ + +For now, please refer to the [Elementary Anomaly Detection dbt tests](/data-tests/introduction#anomaly-detection-tests). + diff --git a/docs/features/automated-monitors.mdx b/docs/features/automated-monitors.mdx deleted file mode 100644 index c963763a2..000000000 --- a/docs/features/automated-monitors.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Automated freshness, volume and schema monitoring -sidebarTitle: "Automated Monitors" -icon: "wand-magic-sparkles" ---- - - - -Elementary offers out-of-the-box automated monitors to detect freshness, volume and schema issues. -This provides broad coverage and a basic level of observability, without any configuration effort. - -Additionally, these monitors will not increase compute costs as they leverage only warehouse metadata (information schema, query history). - -The monitors are trained on historical metadata, and adjust based on updates frequency, seasonality and trends. - -As views are stateless, automated volume and freshness monitors only apply on tables. - - - Elementary Automated Monitors - - -## Supported automated monitors - -### Volume - -Monitors how much data was added / removed / updated to the table with each update. -The monitor alerts you if there is an unexpected drop or spike in rows. - -### Freshness - -Monitors how frequently a table is updated, and alerts you if there is an unexpected delay. - -### Schema changes - -_Coming soon_ diff --git a/docs/features/ci.mdx b/docs/features/ci.mdx index c17753e90..91f9f6827 100644 --- a/docs/features/ci.mdx +++ b/docs/features/ci.mdx @@ -1,7 +1,6 @@ --- title: "Elementary CI" sidebarTitle: "Elementary CI" -icon: "code-pull-request" --- diff --git a/docs/features/catalog.mdx b/docs/features/collaboration-and-communication/catalog.mdx similarity index 94% rename from docs/features/catalog.mdx rename to docs/features/collaboration-and-communication/catalog.mdx index 5f61a58b4..01ced1ab9 100644 --- a/docs/features/catalog.mdx +++ b/docs/features/collaboration-and-communication/catalog.mdx @@ -1,7 +1,5 @@ --- title: "Data Catalog" -icon: "folder-tree" -iconType: "solid" --- diff --git a/docs/features/data-observability-dashboard.mdx b/docs/features/collaboration-and-communication/data-observability-dashboard.mdx similarity index 97% rename from docs/features/data-observability-dashboard.mdx rename to docs/features/collaboration-and-communication/data-observability-dashboard.mdx index 7dd10b357..afb567124 100644 --- a/docs/features/data-observability-dashboard.mdx +++ b/docs/features/collaboration-and-communication/data-observability-dashboard.mdx @@ -1,6 +1,5 @@ --- title: Data Observability Dashboard -icon: "browsers" --- Managing data systems can be a complex task, especially when there are hundreds (or even thousands) of models being orchestrated separately across multiple DAGs. These models serve different data consumers, including internal stakeholders, clients, and reverse-ETL pipelines. diff --git a/docs/features/config-as-code.mdx b/docs/features/config-as-code.mdx index 804899bdf..a38bc0a62 100644 --- a/docs/features/config-as-code.mdx +++ b/docs/features/config-as-code.mdx @@ -1,6 +1,5 @@ --- title: "Configuration as Code" -icon: "code" --- All Elementary configuration is managed in your dbt code. diff --git a/docs/features/data-governance/define-ownership.mdx b/docs/features/data-governance/define-ownership.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/features/data-governance/leverage-tags.mdx b/docs/features/data-governance/leverage-tags.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/features/data-governance/overview-and-best-practices.mdx b/docs/features/data-governance/overview-and-best-practices.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/features/column-level-lineage.mdx b/docs/features/data-lineage/column-level-lineage.mdx similarity index 81% rename from docs/features/column-level-lineage.mdx rename to docs/features/data-lineage/column-level-lineage.mdx index d94b067ed..389e6ad43 100644 --- a/docs/features/column-level-lineage.mdx +++ b/docs/features/data-lineage/column-level-lineage.mdx @@ -1,6 +1,6 @@ --- title: Column Level Lineage -sidebarTitle: Column Level Lineage +sidebarTitle: Column level lineage --- @@ -13,13 +13,6 @@ Column level lineage is useful for answering questions such as: - Can we deprecate or rename a column? - Will changing this column impact a dashboard? - - Elementary Column Level Lineage - - ### Filter and highlight columns path To help navigate graphs with large amount of columns per table, use the `...` menu right to the column: @@ -27,6 +20,16 @@ To help navigate graphs with large amount of columns per table, use the `...` me - **Filter**: Will show a graph of only the selected column and it's dependencies. - **Highlight**: Will highlight only the selected column and it's dependencies. + + ### Column level lineage generation Elementary parses SQL queries to determine the dependencies between columns. diff --git a/docs/features/exposures-lineage.mdx b/docs/features/data-lineage/exposures-lineage.mdx similarity index 59% rename from docs/features/exposures-lineage.mdx rename to docs/features/data-lineage/exposures-lineage.mdx index c99f90666..32f619108 100644 --- a/docs/features/exposures-lineage.mdx +++ b/docs/features/data-lineage/exposures-lineage.mdx @@ -1,6 +1,6 @@ --- -title: Lineage to Downstream Dashboards -sidebarTitle: BI Integrations +title: Lineage to Downstream Dashboards and Tools +sidebarTitle: Lineage to BI --- Some of your data is used downstream in dashboards, applications, data science pipelines, reverse ETLs, etc. @@ -8,10 +8,10 @@ These downstream data consumers are called _exposures_. Elementary lineage graph presents downstream exposures of two origins: -1. Elementary Cloud Automated BI integrations +1. Elementary Automated BI integrations 2. Exposures configured in your dbt project. Read about [how to configure exposures](https://docs.getdbt.com/docs/build/exposures) in code. - + ```yaml exposures: @@ -41,29 +41,24 @@ exposures: -### Automated BI lineage +### Automated lineage to BI Elementary will automatically and continuously extend the column-level-lineage to the dashboard level of your data visualization tool. - +frameborder="0" +allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" +allowfullscreen +alt="Elementary Lineage" +> ### Supported BI tools: - - -### Why is lineage to exposures useful? - -- **Incidents impact analysis**: You could explore which exposures are impacted by each data issue. -- **Exposure health**: By selecting an exposure and filtering on upstream nodes, you could see the status of all it’s upstream datasets. -- **Prioritize data issues**: Prioritize the triage and resolution of issues that are impacting your critical downstream assets. -- **Change impact**: Analyze which exposures will be impacted by a planned change. -- **Unused datasets**: Detect datasets that no exposure consumes, that could be removed to save costs. + \ No newline at end of file diff --git a/docs/features/data-lineage/lineage.mdx b/docs/features/data-lineage/lineage.mdx new file mode 100644 index 000000000..2bf8ee412 --- /dev/null +++ b/docs/features/data-lineage/lineage.mdx @@ -0,0 +1,40 @@ +--- +title: End-to-End Data Lineage +sidebarTitle: Lineage overview +--- + +Elementary offers automated [Column Level Lineage](/features/column-level-lineage) functionality, enriched with the latest test and monitors results. +It is built with usability and performance in mind. +The column-level lineage is built from the metadata of your data warehouse, and integrations with [BI tools]((/features/exposures-lineage#automated-bi-lineage)) such as Looker and Tableau. + +Elementary updates your lineage view frequently, ensuring it is always current. +This up-to-date lineage data is essential for supporting several critical workflows, including: + +- **Effective Data Issue Debugging**: Identify and trace data issues back to their sources. +- **Incidents impact analysis**: You could explore which downstream assets are impacted by each data issue. +- **Prioritize data issues**: Prioritize the triage and resolution of issues that are impacting your critical downstream assets. +- **Public assets health**: By selecting an exposure and filtering on upstream nodes, you could see the status of all it’s upstream data sets. +- **Change impact**: Analyze which exposures will be impacted by a planned change. +- **Unused datasets**: Detect datasets that are not consumed downstrean, and could be removed to reduce costs. + + + +## Node info and test results + +To see additional information in the lineage view, use the `...` menu right to the column: + +- **Test results**: Access the table latest test results in the lineage view. +- **Node info**: See details such as description, owner and tags. If collected, it will include the latest job info. + + +## Job info in lineage + +You can [configure Elementary to collect jobs information](/cloud/guides/collect-job-data) to present in the lineage _Node info_ tab. Job names can also be used to filter the lineage graph. diff --git a/docs/features/data-tests.mdx b/docs/features/data-tests.mdx deleted file mode 100644 index 0c3ef16d8..000000000 --- a/docs/features/data-tests.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Elementary Data Tests" -icon: "monitor-waveform" -sidebarTitle: "Data Tests" ---- - -Elementary provides tests for detection of data quality issues. -Elementary data tests are configured and executed like native tests in your dbt project. - -Elementary tests can be used in addition to dbt tests, packages tests (such as dbt-expectations), and custom tests. -All of these test results will be presented in the Elementary UI and alerts. - - diff --git a/docs/features/data-tests/custom-sql-tests.mdx b/docs/features/data-tests/custom-sql-tests.mdx new file mode 100644 index 000000000..4f7205478 --- /dev/null +++ b/docs/features/data-tests/custom-sql-tests.mdx @@ -0,0 +1,6 @@ +--- +title: Custom SQL Tests +sidebarTitle: Custom SQL test +--- + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/data-tests/data-tests-overview.mdx b/docs/features/data-tests/data-tests-overview.mdx new file mode 100644 index 000000000..684769a4e --- /dev/null +++ b/docs/features/data-tests/data-tests-overview.mdx @@ -0,0 +1,15 @@ +--- +title: Data Tests Overview +sidebarTitle: Overview and configuration +--- + +Data tests are useful for validating and enforcing explicit expectations on your data. + +Elementary enables to vlaidate data and track results by leveraging dbt tests and dbt packages (e.g. dbt-utils, dbt-expectations, elementary). +This rich ecosystem of tests covers various use cases, and is widely adopted as a standard for data validations. +Any custom dbt generic or singular test you develop will also be included. + +Additionally, users can create custom SQL tests in Elementary. + + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/data-tests/dbt-tests.mdx b/docs/features/data-tests/dbt-tests.mdx new file mode 100644 index 000000000..f8d89f077 --- /dev/null +++ b/docs/features/data-tests/dbt-tests.mdx @@ -0,0 +1,24 @@ +--- +title: dbt, Packages and Elementary Tests +sidebarTitle: dbt tests +--- + +_🚧 Under construction 🚧_ + + +## Elementary dbt package tests + +Elementary dbt package also provides tests for detection of data quality issues. +Elementary data tests are configured and executed like native tests in your dbt project. + + + + +## Supported dbt packages + +Elementary collects and monitors the results of all dbt tests. + +The following packages are supported in the tests configuration wizard: + +- dbt expectations +- dbt utils \ No newline at end of file diff --git a/docs/features/data-tests/schema-validation-test.mdx b/docs/features/data-tests/schema-validation-test.mdx new file mode 100644 index 000000000..8b30d021d --- /dev/null +++ b/docs/features/data-tests/schema-validation-test.mdx @@ -0,0 +1,6 @@ +--- +title: Schema Validation Tests +sidebarTitle: Schema validation +--- + +_🚧 Under construction 🚧_ \ No newline at end of file diff --git a/docs/features/elementary-alerts.mdx b/docs/features/elementary-alerts.mdx index 4e6f06cc7..e69de29bb 100644 --- a/docs/features/elementary-alerts.mdx +++ b/docs/features/elementary-alerts.mdx @@ -1,14 +0,0 @@ ---- -title: "Alerts" -icon: "bell-exclamation" ---- - - - -## Alerts destinations - - - -## Alerts configuration - - diff --git a/docs/features/lineage.mdx b/docs/features/lineage.mdx deleted file mode 100644 index db015dc93..000000000 --- a/docs/features/lineage.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: End-to-End Data Lineage -sidebarTitle: Data Lineage ---- - -Elementary Cloud UI and Elementary OSS Report include a rich data lineage graph. -The graph is enriched with the latest test results, to enable easy impact and root cause analysis of data issues. - -In Elementary Cloud lineage includes [Column Level Lineage](/features/column-level-lineage) and [BI integrations](/features/exposures-lineage#automated-bi-lineage). - -## Node info and test results - -To see additional information in the lineage view, use the `...` menu right to the column: - -- **Test results**: Access the table latest test results in the lineage view. -- **Node info**: See details such as description, owner and tags. If collected, it will include the latest job info. - - - -## Job info in lineage - -You can configure Elementary to collect jobs names and information to present in the lineage _Node info_ tab. Job names can also be used to filter the lineage graph. - -Read how to configure jobs info collection for [Elementary Cloud](/cloud/guides/collect-job-data) or [OSS](/oss/guides/collect-job-data). diff --git a/docs/features/multi-env.mdx b/docs/features/multi-env.mdx index fb6d55921..e81d4c5af 100644 --- a/docs/features/multi-env.mdx +++ b/docs/features/multi-env.mdx @@ -1,6 +1,5 @@ --- title: "Multiple Environments" -icon: "rectangle-history-circle-plus" --- diff --git a/docs/features/performance-monitoring/performance-monitoring.mdx b/docs/features/performance-monitoring/performance-monitoring.mdx new file mode 100644 index 000000000..6def90ff9 --- /dev/null +++ b/docs/features/performance-monitoring/performance-monitoring.mdx @@ -0,0 +1,40 @@ +--- +title: Performance Monitoring +sidebarTitle: Performance monitoring +--- + +Monitoring the performance of your data pipeline is critical for maintaining data quality, reliability, and operational efficiency. +Proactively monitoring performance issues enables to detect bottlenecks and opportunities for optimization, prevent data delays, and avoid unnecessary costs. + +Elementary monitors and logs the execution times of: +- dbt models +- dbt tests + +## Models performance + +Navigate to the `Model Duration` tab. + +On the table you could see the latest execution time, median execution time, and execution time trend for each model. +You can order the table by these times, and dive into the execution times over time of the models with the longest duration. + +It is also useful to use the navigation bar to filter the results, and see run times per tag / owner / folder. + + + +## Tests performance + +Navigate to the `Test Execution History` tab. + +On the table you could see the median execution time and fail rate per test. +You can order the table by this time column, and detect tests that are compute heavy. + +It is also useful to use the navigation bar to filter the results, and see run times per tag / owner / folder. \ No newline at end of file diff --git a/docs/key-features.mdx b/docs/key-features.mdx index 581b8d25d..75068c125 100644 --- a/docs/key-features.mdx +++ b/docs/key-features.mdx @@ -72,3 +72,43 @@ icon: "stars" Explore and discover data sets, manage your documentation in code. + + + +#### Anomaly Detection + + + Out-of-the-box ML-powered monitoring for freshness and volume issues on all production tables. + The monitors track updates to tables, and will detect data delays, incomplete updates, and significant volume changes. + By qurying only metadata (e.g. information schema, query history), the monitors don't add compute costs. + + + + ML-powered anomaly detection on data quality metrics such as null rate, empty values, string length, numeric metrics (sum, max, min, avg), etc. + Elementary also supports monitoring for anomalies by dimensions. + The monitors are activated for specific data sets, and require minimal configuration (e.g. timestamp column, dimensions). + + +#### Schema Validation + + + Elementary offers a set of schema tests for validating there are no breaking changes. + The tests support detecting any schema changes, only detecting changes from a configured baseline, JSON schema validation, + and schema changes that break downstream exposures such as dashboards. + + + + Coming soon! + + +#### Data Tests + +Custom SQL Tests + +dbt tests + +Python tests + +#### Tests Coverage + +#### Performance monitoring diff --git a/docs/mint.json b/docs/mint.json index 839fbba87..83adef635 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -29,7 +29,7 @@ }, "tabs": [ { - "name": "Data tests", + "name": "Elementary Tests", "url": "data-tests" }, { @@ -61,7 +61,6 @@ "pages": [ "introduction", "quickstart", - "cloud/general/security-and-privacy", { "group": "dbt package", "icon": "cube", @@ -75,27 +74,97 @@ ] }, { - "group": "Features", + "group": "Cloud Platform", "pages": [ - "features/data-tests", - "features/automated-monitors", - "features/elementary-alerts", - "features/data-observability-dashboard", + "cloud/introduction", + "cloud/features", + "features/integrations", + "cloud/general/security-and-privacy" + ] + }, + { + "group": "Anomaly Detection Monitors", + "pages": [ + "features/anomaly-detection/monitors-overview", { - "group": "End-to-End Lineage", - "icon": "arrow-progress", - "iconType": "solid", + "group": "Automated monitors", "pages": [ - "features/lineage", - "features/exposures-lineage", - "features/column-level-lineage" + "features/anomaly-detection/automated-monitors", + "features/anomaly-detection/automated-freshness", + "features/anomaly-detection/automated-volume" ] }, + "features/anomaly-detection/opt-in-monitors", + { + "group": "Configuration and Feedback", + "pages": [ + "features/anomaly-detection/monitors-configuration", + "features/anomaly-detection/monitors-feedback", + "features/anomaly-detection/disable-or-mute-monitors" + ] + } + ] + }, + { + "group": "Data Tests", + "pages": [ + "features/data-tests/data-tests-overview", + "features/data-tests/custom-sql-tests", + "features/data-tests/dbt-tests", + "features/data-tests/schema-validation-test" + ] + }, + { + "group": "Data Lineage", + "pages": [ + "features/data-lineage/lineage", + "features/data-lineage/column-level-lineage", + "features/data-lineage/exposures-lineage" + ] + }, + { + "group": "Alerts and Incidents", + "pages": [ + "features/alerts-and-incidents/alerts-and-incidents-overview", + { + "group": "Setup & configure alerts", + "pages": [ + "features/alerts-and-incidents/effective-alerts-setup", + "features/alerts-and-incidents/alert-rules", + "features/alerts-and-incidents/owners-and-subscribers", + "features/alerts-and-incidents/alert-configuration" + ] + }, + "features/alerts-and-incidents/incident-management" + ] + }, + { + "group": "Performance & Cost", + "pages": [ + "features/performance-monitoring/performance-monitoring" + ] + }, + { + "group": "Data Governance", + "pages": [ + "features/data-governance/overview-and-best-practices", + "features/data-governance/define-ownership", + "features/data-governance/leverage-tags" + ] + }, + { + "group": "Collaboration and Communication", + "pages": [ + "features/collaboration-and-communication/data-observability-dashboard", + "features/collaboration-and-communication/catalog" + ] + }, + { + "group": "Additional features", + "pages": [ "features/config-as-code", - "features/catalog", "features/multi-env", - "features/ci", - "features/integrations" + "features/ci" ] }, { @@ -197,6 +266,7 @@ { "group": "Resources", "pages": [ + "resources/business-case-data-observability-platform", "overview/cloud-vs-oss", "resources/pricing", "resources/community" @@ -263,7 +333,9 @@ }, { "group": "Other Tests", - "pages": ["data-tests/python-tests"] + "pages": [ + "data-tests/python-tests" + ] }, { "group": "Elementary OSS", @@ -309,7 +381,10 @@ }, { "group": "Configuration & usage", - "pages": ["oss/cli-install", "oss/cli-commands"] + "pages": [ + "oss/cli-install", + "oss/cli-commands" + ] }, { "group": "Deployment", @@ -370,7 +445,8 @@ ] } ], - "footerSocials": { + "footerSocials": + { "website": "https://www.elementary-data.com", "slack": "https://elementary-data.com/community" }, @@ -384,5 +460,43 @@ "gtm": { "tagId": "GTM-TKR4HS3Q" } - } + }, + "redirects": [ + { + "source": "/features/lineage", + "destination": "/features/data-lineage/lineage" + }, + { + "source": "/features/exposures-lineage", + "destination": "/features/data-lineage/exposures-lineage" + }, + { + "source": "/features/column-level-lineage", + "destination": "/features/data-lineage/column-level-lineage" + }, + { + "source": "/features/automated-monitors", + "destination": "/features/anomaly-detection/automated-monitors" + }, + { + "source": "/features/data-tests", + "destination": "/features/data-tests/dbt-tests" + }, + { + "source": "/features/elementary-alerts", + "destination": "/features/alerts-and-incidents/alerts-and-incidents-overview" + }, + { + "source": "/cloud/guides/alert-rules", + "destination": "/features/alerts-and-incidents/alert-rules" + }, + { + "source": "/features/catalog", + "destination": "/features/collaboration-and-communication/catalog" + }, + { + "source": "/features/data-observability-dashboard", + "destination": "/features/collaboration-and-communication/data-observability-dashboard" + } + ] } diff --git a/docs/resources/business-case-data-observability-platform.mdx b/docs/resources/business-case-data-observability-platform.mdx new file mode 100644 index 000000000..c45e6c090 --- /dev/null +++ b/docs/resources/business-case-data-observability-platform.mdx @@ -0,0 +1,19 @@ +--- +title: "When do I need a data observability platform?" +sidebarTitle: "When to add data observability" +--- + +## When do I need a data observability platform? + +### If the consequences of data issues are high +If you are running performance marketing budgets of $millions, a data issue can result in a loss of hundreds of thousands of dollars. +In these cases, the ability to detect and resolve issues fast is business critical and typically involves multiple teams and the ability to measure, track, and report on data quality. + +### If data is scaling faster than the data team +The scale and complexity of modern data environments make it impossible for teams to manually manage quality without expanding the team. A data observability platform enables automation and collaboration ensuring data quality is maintained as data continues to grow, without impacting team efficiency. + +### Common use cases +Self-service analytics, data activation, powering AI & ML products, embedded analytics, performance marketing, regulatory reporting, A/B testing and experiments + +## Why isn't the open-source package enough? +The open-source package was designed for engineers that want to monitor their dbt project. The Cloud Platform was designed to support the complex, multifaceted requirements of larger teams and organizations, providing a holistic observability solution. \ No newline at end of file diff --git a/docs/resources/how-does-elementary-work b/docs/resources/how-does-elementary-work new file mode 100644 index 000000000..937fb3500 --- /dev/null +++ b/docs/resources/how-does-elementary-work @@ -0,0 +1,28 @@ +--- +title: "How does Elementary work" +sidebarTitle: "Elementary Could Platform" +--- +## Cloud platform architecture +The Elementary open-source package creates a schema that collects the test results and the models from your dbt projects. The platform is part of your package and it runs in your dbt pipeline and it writes to its own data set in the data warehouse and then the platform syncs that data set to the cloud. It also integrates directly with your data warehouse so it has access to the information schema, the query history and the metadata. + +We also integrate with your dbt code repository - so we understand how it’s built including tags, owners, which tables are part of your dbt project and what tables are not, and we see daily usage by connecting to your BI. + + + Elementary Cloud Platform Architecture + + + +## How it works? +1. You install the Elementary dbt package in your dbt project and configure it to write to it's own schema, the Elementary schema. +2. The package writes test results, run results, logs and metadata to the Elementary schema. +3. The cloud service only requires `read access` to the Elementary schema, not to schemas where your sensitive data is stored. +4. The cloud service connects to sync the Elementary schema using an **encrypted connection** and a **static IP address** that you will need to add to your allowlist. + + +## + + +[Read about Security and Privacy](/cloud/general/security-and-privacy) \ No newline at end of file From 9af20924804a7763011145d8056ee2fbec424597 Mon Sep 17 00:00:00 2001 From: Georgios Tzanakis Date: Mon, 1 Jul 2024 17:45:12 +0300 Subject: [PATCH 43/47] Minor typo in docs: how-anomaly-detection-works.mdx (#1564) Used "it's" instead of "its". --- docs/data-tests/how-anomaly-detection-works.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-tests/how-anomaly-detection-works.mdx b/docs/data-tests/how-anomaly-detection-works.mdx index 4a2817968..f2c2663f1 100644 --- a/docs/data-tests/how-anomaly-detection-works.mdx +++ b/docs/data-tests/how-anomaly-detection-works.mdx @@ -54,7 +54,7 @@ If a value in the detection set is an outlier to the expected range, it will be ### Expected range Based of the values in the training test, we calculate an expected range for the monitor. -Each data point in the detection period will be compared to the expected range calculated based on it’s training set. +Each data point in the detection period will be compared to the expected range calculated based on its training set. ### Training period From ba57ee389bf47b829c2f5f5a19a29e002f5ab0fc Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Tue, 2 Jul 2024 12:36:31 +0300 Subject: [PATCH 44/47] New alert integrations (#1569) * alert integrations pages * alert integrations pages * Slack private message * integrations * integrations * integrations --- .../cards-groups/alerts-destination-cards.mdx | 19 ++- .../cards-groups/cloud-integrations-cards.mdx | 2 +- docs/cloud/integrations/alerts/ms-teams.mdx | 128 +++++++++++++++++- docs/cloud/integrations/alerts/opsgenie.mdx | 76 +++++++++-- docs/cloud/integrations/alerts/pagerduty.mdx | 45 +++++- docs/cloud/integrations/alerts/slack.mdx | 77 ++++++++++- .../alerts-and-incidents-overview.mdx | 33 +++++ .../data-lineage/column-level-lineage.mdx | 1 + docs/features/data-lineage/lineage.mdx | 2 + docs/mint.json | 6 +- 10 files changed, 351 insertions(+), 38 deletions(-) diff --git a/docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx b/docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx index bf9a777ac..1c369051d 100644 --- a/docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx +++ b/docs/_snippets/cloud/integrations/cards-groups/alerts-destination-cards.mdx @@ -51,6 +51,14 @@ } > + + } + > + - - - - } - > - Click for details - -### Communication and collaboration +### Alerts & incidents \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/ms-teams.mdx b/docs/cloud/integrations/alerts/ms-teams.mdx index 542a1dfaa..9cfbbe15c 100644 --- a/docs/cloud/integrations/alerts/ms-teams.mdx +++ b/docs/cloud/integrations/alerts/ms-teams.mdx @@ -1,6 +1,128 @@ --- -title: "MS Teams (Beta)" +title: "Microsoft Teams" --- -Routing alerts to MS Teams is supported as a beta integration. -Reach out to us to enable it for your instance! \ No newline at end of file +Elementary's Microsoft Teams integration enables sending alerts when data issues happen. + +The alerts include rich context, and you can create [alert rules](/features/alerts-and-incidents/alert-rules) to distribute alerts to different channels and destinations. + + +
+ MS teams alert screenshot +
+ + +## Enabling Microsoft Teams alerts + +1. Go to the `Environments` page on the sidebar. +2. Select an environment and click connect on the `Connect messaging app` card (first card), and select `Microsoft Teams`. + + +
+ Connect messaging app +
+ + +3. For each MS Teams channel you connect to Elementary, you will need to create a Webhook. + + + 1. Go to a channel in your Team and choose `Manage channel` + + +
+ Teams manage channel +
+ + + +2. Click on `Edit` connectors. + + +
+ Teams edit connectors +
+ + +3. Search for `Incoming webhook` and choose `Add`. + + +
+ Teams add incoming webhook +
+ + +4. Choose `Add` again and add a name to your webhook, then click on `Create`. + + +
+ +
+ + +5. Copy the URL of the webhook. + + +
+ +
+ + + +
+ +4. Configure your Microsoft Teams webhooks, and give each one a name indicating it's connected channel: + + +
+ Provide webhooks +
+ + +5. Select a default channel for alerts, and set the suppression interval. + + +The default channel you select will automatically add a default [alert rule](/features/alerts-and-incidents/alert-rules) +to sends all failures to this channel. Alerts on warnings are not sent by default. To modify and add tules, navigate to `Alert Rules` page. + + + + +
+ Select channel and suppression interval +
+ diff --git a/docs/cloud/integrations/alerts/opsgenie.mdx b/docs/cloud/integrations/alerts/opsgenie.mdx index e78907cf8..74df5e663 100644 --- a/docs/cloud/integrations/alerts/opsgenie.mdx +++ b/docs/cloud/integrations/alerts/opsgenie.mdx @@ -2,14 +2,68 @@ title: "Opsgenie" --- - - - -} -> - Click for details - \ No newline at end of file +Elementary's Opsgenie integration enables sending alerts when data issues happen. + +It is recommended to create [alert rules](/features/alerts-and-incidents/alert-rules) to filter and select the alerts that will create incidents in Opsgenei. + + + +
+ Opsgenie alerts screen +
+ + + +
+ Opsgenie alerts detail +
+ + +## Enabling Opsgenie alerts + +### Create an Opsgenie API key + +To create an `Opsgenie API key`, go to `Opsgenie` and follow the following steps: + +- Create or select an `Opsgenie` team - this team will be responsible for alerts generated by Elementary. +- On the selected team go `Integrations` tab and press on `Add Integration`: + - Select `API` and press `Add` + - Select a name for the `API integration` - “Elementary” for example + - Make sure `Create` and `update access` are selected + - Press on `Save Integration` + - Copy the `API key` and provide it to Elementary UI. + +### Add API key to an environment + +1. Go to the `Environments` page on the sidebar. + +2. Select an environment and click connect on the `Connect incident management tool` card (second card), and select `Opsgenie`. + + +
+ Connect incident management tool +
+ + +3. Fill the `API key` and select the `API URL` and save the integration: + + +
+ Enter Opsgenie API key +
+ + +4. `Opsgenie` will now be available as a destination on the [`alert rules`](/features/alerts-and-incidents/alert-rules) page. You can add rules to create Opsgenie incidents out of alerts who match your rule. \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/pagerduty.mdx b/docs/cloud/integrations/alerts/pagerduty.mdx index 331ef7fde..5b629aa6e 100644 --- a/docs/cloud/integrations/alerts/pagerduty.mdx +++ b/docs/cloud/integrations/alerts/pagerduty.mdx @@ -1,6 +1,45 @@ --- -title: "PagerDuty (Beta)" +title: "PagerDuty" --- -Routing alerts to PagerDuty is supported as a beta integration. -Reach out to us to enable it for your instance! \ No newline at end of file +Elementary's PagerDuty integration enables sending alerts when data issues happen. + +It is recommended to create [alert rules](/features/alerts-and-incidents/alert-rules) to filter and select the alerts that will create incidents in PagerDuty. + + +
+ PagerDuty Alerts +
+ + +## Enabling PagerDuty alerts + +1. Go to the `Environments` page on the sidebar. + +2. Select an environment and click connect on the `Connect incident management tool` card (second card), and select `PagerDuty`. + + +
+ Connect incident management tool +
+ + +3. Authorize the Elementary for your account. **This step may require admin approval.** + + +
+ PagerDuty approval +
+ + +4. `PagerDuty` will now be available as a destination on the [`alert rules`](/features/alerts-and-incidents/alert-rules) page. You can add rules to create PagerDuty incidents out of alerts who match your rule. \ No newline at end of file diff --git a/docs/cloud/integrations/alerts/slack.mdx b/docs/cloud/integrations/alerts/slack.mdx index a364f3725..3738e79cf 100644 --- a/docs/cloud/integrations/alerts/slack.mdx +++ b/docs/cloud/integrations/alerts/slack.mdx @@ -2,13 +2,78 @@ title: "Slack" --- - +Elementary's Slack integration enables sending Slack alerts when data issues happen. -## Enable Slack alerts +The alerts include rich context, and you can change the incident status and asssigne from the alert itself. +You can also create [alert rules](/features/alerts-and-incidents/alert-rules) to distribute alerts to different channels and destinations. -On the environments page, select an environment and click `connect` on the **Connect Slack** card. -After connecting your workspace, you will need to select a default channel for alerts. + +
+ Slack alert screenshot +
+ -## Alerts configuration +## Enabling Slack alerts - \ No newline at end of file +1. Go to the `Environments` page on the sidebar. +2. Select an environment and click connect on the `Connect messaging app` card (first card), and select `Slack`. + + +
+ Connect messaging app +
+ + +4. Authorize the Elementary app for your workspace. **This step may require a workspace admin approval.** + + +
+ Select Slack channel and alert suppression +
+ + +5. Select a default channel for alerts, and set the suppression interval. + + +The default channel you select will automatically add a default [alert rule](/features/alerts-and-incidents/alert-rules) +to sends all failures to this channel. Alerts on warnings are not sent by default. To modify and add tules, navigate to `Alert Rules` page. + + + +
+ Select Slack channel and alert suppression +
+ + + +## Alerts to private channels + +If the channel you want to send alerts to is private (đź”’), it will not appear in the channels dropdown on the onboarding or the alert rules screen. + +You will need to invite the Elementary bot to the private channel by typing `@Elementary` in the channel and clicking to invite the bot in, and then it will appear in the UI. + + +
+ Add Elementary to private channel +
+ \ No newline at end of file diff --git a/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx b/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx index e69de29bb..1a11449a4 100644 --- a/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx +++ b/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx @@ -0,0 +1,33 @@ +--- +title: Alerts and Incidents Overview +sidebarTitle: Alerts & incidents overview +--- + + + +Alerts and incidents in Elementary are designed to shorten your time to response and time to resolution when data issues occur. + +- **Alert -** Notification about an event that indicates a data issue. +- **Incident -** A data issue that starts with an event, but can include several events grouped to an incident. An incident has a start time, status, assignee and end time. + +Alerts provide information and context for recipients to quickly triage, prioritize and resolve issues. +For collaboration and promoting ownership, alerts include owners and tags. +You can create distribution rules to route alerts to the relevant people and channels, for faster response. + +An alert would either open a new incident, or be automatically grouped and added to an ongoing incident. +From the alert itself, you can update the status and assignee of an incident. In the incidents management page, +you will be able to track all open and historical incidents, and get metrics on the quality of your response. + +## Alerts & incidents core functionality + +- **Alert distribution rules** - +- **Incident status and assignee** - +- **Owners and subscribers** - +- **Severity and tags** - +- **Alerts customization** - +- **Group alerts to incidents** - +- **Alerts suppression** - + +## Supported alert integrations + + \ No newline at end of file diff --git a/docs/features/data-lineage/column-level-lineage.mdx b/docs/features/data-lineage/column-level-lineage.mdx index 389e6ad43..78fe02a60 100644 --- a/docs/features/data-lineage/column-level-lineage.mdx +++ b/docs/features/data-lineage/column-level-lineage.mdx @@ -4,6 +4,7 @@ sidebarTitle: Column level lineage --- + The table nodes in Elementary lineage can be expanded to show the columns. When you select a column, the lineage of that specific column will be highlighted. diff --git a/docs/features/data-lineage/lineage.mdx b/docs/features/data-lineage/lineage.mdx index 2bf8ee412..73b489cef 100644 --- a/docs/features/data-lineage/lineage.mdx +++ b/docs/features/data-lineage/lineage.mdx @@ -3,6 +3,8 @@ title: End-to-End Data Lineage sidebarTitle: Lineage overview --- + + Elementary offers automated [Column Level Lineage](/features/column-level-lineage) functionality, enriched with the latest test and monitors results. It is built with usability and performance in mind. The column-level lineage is built from the metadata of your data warehouse, and integrations with [BI tools]((/features/exposures-lineage#automated-bi-lineage)) such as Looker and Tableau. diff --git a/docs/mint.json b/docs/mint.json index 83adef635..3dbbb72a0 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -109,8 +109,8 @@ "group": "Data Tests", "pages": [ "features/data-tests/data-tests-overview", - "features/data-tests/custom-sql-tests", "features/data-tests/dbt-tests", + "features/data-tests/custom-sql-tests", "features/data-tests/schema-validation-test" ] }, @@ -153,7 +153,7 @@ ] }, { - "group": "Collaboration and Communication", + "group": "Collaboration & Communication", "pages": [ "features/collaboration-and-communication/data-observability-dashboard", "features/collaboration-and-communication/catalog" @@ -250,7 +250,7 @@ ] }, { - "group": "Communication & collaboration", + "group": "Alerts & Incidents", "pages": [ "cloud/integrations/alerts/slack", "cloud/integrations/alerts/ms-teams", From 926b7a5b5c58f05102eb45747c93d4aca97ec4b2 Mon Sep 17 00:00:00 2001 From: Maayan Salom Date: Tue, 2 Jul 2024 16:47:29 +0300 Subject: [PATCH 45/47] Incident management docs (#1573) * incidents * incidents --- docs/_snippets/cloud/features.mdx | 2 +- .../alerts-and-incidents/alert-types.mdx | 7 +++ .../_snippets/quickstart/quickstart-cards.mdx | 2 +- .../alerts-and-incidents-overview.mdx | 8 ++- .../incident-management.mdx | 54 +++++++++++++++++++ .../alerts-and-incidents/incidents.mdx | 53 ++++++++++++++++++ docs/mint.json | 1 + 7 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 docs/_snippets/cloud/features/alerts-and-incidents/alert-types.mdx create mode 100644 docs/features/alerts-and-incidents/incidents.mdx diff --git a/docs/_snippets/cloud/features.mdx b/docs/_snippets/cloud/features.mdx index 819293fec..eef6f9402 100644 --- a/docs/_snippets/cloud/features.mdx +++ b/docs/_snippets/cloud/features.mdx @@ -47,7 +47,7 @@ This includes investigating issues root cause and impact, communicating issues t Distribute highly configurable alerts to different channels and integrations. Automatically tag owners, and enable setting status and assigns at the alert level.
- + Different failures who relate to the same issue are grouped automatically to a single incident. This accelerates triage and response, and reduces alerts fautigue. diff --git a/docs/_snippets/cloud/features/alerts-and-incidents/alert-types.mdx b/docs/_snippets/cloud/features/alerts-and-incidents/alert-types.mdx new file mode 100644 index 000000000..bd5e74083 --- /dev/null +++ b/docs/_snippets/cloud/features/alerts-and-incidents/alert-types.mdx @@ -0,0 +1,7 @@ +Elementary can be configured to send alerts on: + +- Model run failures +- Failures and/or warnings of dbt tests (including Elementary dbt package and other packages) +- Failures and/or warnings Elementary Anomaly Detection monitors +- Failures and/or warning of custom SQL tests +- dbt source freshness failures \ No newline at end of file diff --git a/docs/_snippets/quickstart/quickstart-cards.mdx b/docs/_snippets/quickstart/quickstart-cards.mdx index 5d4ecca61..871de0acd 100644 --- a/docs/_snippets/quickstart/quickstart-cards.mdx +++ b/docs/_snippets/quickstart/quickstart-cards.mdx @@ -3,7 +3,7 @@ title="Elementary Cloud Platform" icon="cloud" iconType="solid" - href="https://elementary-data.frontegg.com/oauth/account/sign-up" + href="/cloud/introduction" >
Built on top of the OSS package, ideal for teams monitoring mission-critical data pipelines, requiring guaranteed uptime and reliability, short-time-to-value, advanced features, collaboration, and professional support. diff --git a/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx b/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx index 1a11449a4..c20f9a1f0 100644 --- a/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx +++ b/docs/features/alerts-and-incidents/alerts-and-incidents-overview.mdx @@ -8,14 +8,14 @@ sidebarTitle: Alerts & incidents overview Alerts and incidents in Elementary are designed to shorten your time to response and time to resolution when data issues occur. - **Alert -** Notification about an event that indicates a data issue. -- **Incident -** A data issue that starts with an event, but can include several events grouped to an incident. An incident has a start time, status, assignee and end time. +- **[Incident](/features/alerts-and-incidents/incidents) -** A data issue that starts with an event, but can include several events grouped to an incident. An incident has a start time, status, severity, assignee and end time. Alerts provide information and context for recipients to quickly triage, prioritize and resolve issues. For collaboration and promoting ownership, alerts include owners and tags. You can create distribution rules to route alerts to the relevant people and channels, for faster response. An alert would either open a new incident, or be automatically grouped and added to an ongoing incident. -From the alert itself, you can update the status and assignee of an incident. In the incidents management page, +From the alert itself, you can update the status and assignee of an incident. In the [incidents page](/features/alerts-and-incidents/incident-management), you will be able to track all open and historical incidents, and get metrics on the quality of your response. ## Alerts & incidents core functionality @@ -28,6 +28,10 @@ you will be able to track all open and historical incidents, and get metrics on - **Group alerts to incidents** - - **Alerts suppression** - +## Alert types + + + ## Supported alert integrations \ No newline at end of file diff --git a/docs/features/alerts-and-incidents/incident-management.mdx b/docs/features/alerts-and-incidents/incident-management.mdx index e69de29bb..dac4ae81a 100644 --- a/docs/features/alerts-and-incidents/incident-management.mdx +++ b/docs/features/alerts-and-incidents/incident-management.mdx @@ -0,0 +1,54 @@ +--- +title: Incident Management +sidebarTitle: Incident management +--- + + + +The `Incidents` page is designed to enable your team to stay on top of open incidents and collaborate on resolving them. +The page gives a comprehensive overview of all current and previous incidents, where users can view the status, prioritize, assign and resolve incidents. + +## Incidents view and filters + +The page provides a view of all incidents, and useful filters: + +- **Quick Filters:** Preset quick filters for all, unresolved and “open and unassigned” incidents. +- **Filter:** Allows users to filter incidents based on various criteria such as status, severity, model name and assignee. +- **Time frame:** Filter incidents which were open in a certain timeframe. + + + + +## Interacting with Incidents + +An incident has a status, assignee and severity. +These can be set in the Incidents page, or from an alert in integrations that support alert actions. + +- **Incident status**: Will be set to `open` by default, and can be changed to `Acknowledged` and back to `Open`. When an alert is manually or automatically set as `Resolved`, it will close and will no longer be modified. +- **Incident assignee**: An incident can be assigned to any user on the team, and they will be notified. + - If you assign an incident to a user, it is recommended to leave the incident `Open` until the user changes status to `Acknowledged`. +- **Incident severity**: Users can set a severity level (High, Low, Normal, Critical) to an incident. _Coming soon_ Severity will be automated by an analysis of the impacted assets. + +## Incidents overview and metrics + +The top bar of the page present aggregated metrics on incidents, to provide an overall status. +You will also be able to track your average resolution time. + +_ _Coming soon_ _ The option to create and share a periodic summary of incidents will be supported in the future. + + +
+ Incidents overview +
+ \ No newline at end of file diff --git a/docs/features/alerts-and-incidents/incidents.mdx b/docs/features/alerts-and-incidents/incidents.mdx new file mode 100644 index 000000000..910827430 --- /dev/null +++ b/docs/features/alerts-and-incidents/incidents.mdx @@ -0,0 +1,53 @@ +--- +title: Incidents in Elementary +sidebarTitle: Incidents +--- + + + +One of the challenges data teams face is tracking and understand and collaborate on the status of data issues. +Tests fail daily, pipelines are executed frequently, alerts are sent to different channels. +There is a need for a centralized place to track: +- What data issues are open? Which issues were already resolved? +- Who is on it, and what's the latest status? +- Are multiple failures part of the same issue? +- What actions and events happened since the incident started? +- Did such issue happen before? Who resolved it and how? + +In Elementary, these are solved with `Incidents`. + +A comprehensive view of all incidents can be found in the [Incidents page](/features/alerts-and-incidents/incident-management). + +## How incidents work? + +Every failure or warning in Elementary will automatically open a new incident or be added as an event to an ongoing incident. +Based on grouping rules, different failures are grouped to the same incident. + +An incident has a [status, assignee and severity](/features/alerts-and-incidents/incident-management#interacting-with-incidents). +These can be set in the [Incidents page](/features/alerts-and-incidents/incident-management), or from an alert in integrations that support alert actions. + + +
+ Elementary Incidents +
+ + +## How incidents are resolved? + +Each incident starts at the first failure, and ends when the status is changed manually or automatically to `Resolved`. +An incident is **automatically resolved** when the failing tests, monitors and / or models are successful again. + +## Incident grouping rules + +Different failures and warnings are grouped to the same incident by the following grouping rules: + +1. Additional failures of the same test / monitor on a table that has an active incident. +2. _ _Coming soon_ _ Freshness and volume issues that are downstream of an open incident on a model failure. +3. _ _Coming soon_ _ Failures of the same test / monitor that are on downstream tables of an active incident. + +## Incident deep dive + +_ _Coming soon_ _ diff --git a/docs/mint.json b/docs/mint.json index 3dbbb72a0..a4b1acf83 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -135,6 +135,7 @@ "features/alerts-and-incidents/alert-configuration" ] }, + "features/alerts-and-incidents/incidents", "features/alerts-and-incidents/incident-management" ] }, From 370c5a51931f47e5e745bd5d0307d35b6c58dcb5 Mon Sep 17 00:00:00 2001 From: ronisaban2024 <162031979+ronisaban2024@users.noreply.github.com> Date: Tue, 2 Jul 2024 16:56:16 +0300 Subject: [PATCH 46/47] Docs-fixes-June-2 (#1574) * Typos and fixes on new docs * Typos on fixes --------- Co-authored-by: Maayan Salom --- docs/_snippets/cloud/features.mdx | 24 +++++++++---------- .../automated-monitors-intro.mdx | 2 +- .../cloud/integrations/snowflake.mdx | 2 +- docs/_snippets/guides/collect-job-data.mdx | 6 ++--- .../_snippets/guides/dbt-source-freshness.mdx | 6 ++--- docs/cloud/guides/collect-job-data.mdx | 2 +- docs/cloud/guides/sync-scheduling.mdx | 8 +++---- docs/cloud/guides/troubleshoot.mdx | 12 +++++----- docs/cloud/integrations/bi/tableau.mdx | 4 ++-- docs/cloud/introduction.mdx | 2 +- docs/cloud/onboarding/signup.mdx | 2 +- .../alerts-and-incidents/alert-rules.mdx | 2 +- .../anomaly-detection/monitors-overview.mdx | 8 +++---- docs/features/ci.mdx | 2 +- .../catalog.mdx | 2 +- docs/features/config-as-code.mdx | 6 ++--- .../data-lineage/column-level-lineage.mdx | 16 ++++++------- .../data-lineage/exposures-lineage.mdx | 10 ++++---- docs/features/data-lineage/lineage.mdx | 8 +++---- .../data-tests/data-tests-overview.mdx | 2 +- docs/features/data-tests/dbt-tests.mdx | 2 +- docs/features/multi-env.mdx | 4 ++-- .../performance-monitoring.mdx | 11 ++++----- ...iness-case-data-observability-platform.mdx | 14 +++++++---- 24 files changed, 81 insertions(+), 76 deletions(-) diff --git a/docs/_snippets/cloud/features.mdx b/docs/_snippets/cloud/features.mdx index eef6f9402..4d4442eef 100644 --- a/docs/_snippets/cloud/features.mdx +++ b/docs/_snippets/cloud/features.mdx @@ -2,14 +2,14 @@ ### Detection & Coverage Elementary integrates powerful anomaly detection and dbt tests into a unified detection strategy. -Effective data issues detection requires a comprehensive approach, +Effective detection of data issues requires a comprehensive approach, including both pipeline and data monitoring, validation tests, anomaly detection for unexpected behavior, and a single interface to manage it all at scale. - ML-Powered monitors to automatically detect data quality issues. - Out-of-the-box volume and freshness, and opt-in for data quality metrics. + ML-powered monitors automatically detect data quality issues. + Out-of-the-box for volume and freshness, and opt-in for data quality metrics. Validate data and track the results of dbt tests, dbt packages tests (dbt-utils, dbt-expectations, elementary) and custom SQL tests. @@ -22,7 +22,7 @@ anomaly detection for unexpected behavior, and a single interface to manage it a Pipeline failures and performance issues can cause data incidents, and create unneceserry costs. - Configure Elementary in code, or in UI for non-technical users and adding tests in bulk. + Configure Elementary in code, or via the UI for non-technical users or for adding tests in bulk. The platform opens PRs to your repo, saving hours of tedious YAML edits. @@ -34,32 +34,32 @@ anomaly detection for unexpected behavior, and a single interface to manage it a Detecting issues is just the first step to achieve data reliability. Elementary offers tools to create an effective response plan, for faster recovery. -This includes investigating issues root cause and impact, communicating issues to the relevant people, assigning owners to fix issues, keeping track of open incidents and more. +This includes investigating the root cause and impact of issues, communicating issues to the relevant people, assigning owners to fix issues, keeping track of open incidents and more. - Column level lineage that spans through sources, models and BI tools, enriched with monitoring results. Enables granular root cause and impact analysis. + Column-level lineage that spans through sources, models and BI tools, enriched with monitoring results. Enables granular root cause and impact analysis. - Define clear ownership of data aseets, to enable owners to be informed and accountable for the health and status of their data. + Define clear ownership of data assets and enable owners to be informed and accountable for the health and status of their data. Distribute highly configurable alerts to different channels and integrations. Automatically tag owners, and enable setting status and assigns at the alert level. - Different failures who relate to the same issue are grouped automatically to a single incident. + Different failures related to the same issue are grouped automatically to a single incident. This accelerates triage and response, and reduces alerts fautigue. - Manage all open incidents in a single interface, with clear view of status and assigns. + Manage all open incidents in a single interface, with a clear view of status and assignees. Track historical incidents and high-level incidents metrics. ### Collaboration & Communication -The data team doesn’t live in a silo - You have many stakeholders. +The data team doesn’t live in a silo - you have many stakeholders. The only way to improve data trust is by bringing in more team members, users and stakeholders to the data health process. Elementary fosters collaboration by allowing you to easily share and communicate the status of issues, the overall health of the data platform and progress made to improve it with the broader organization. @@ -67,10 +67,10 @@ the overall health of the data platform and progress made to improve it with the Up to date dashboard with current status and trends of data issues. - Share the dashboard with others, enable them to slice results and get informed of the health of data. + Share the dashboard with others, enable them to slice results and stay informed. - Enabled effective collaboration and communication by grouping related data assets and tests by business domains, data products, priority, etc. + Enable effective collaboration and communication by grouping related data assets and tests by business domains, data products, priority, etc. Search and explore your datasets information - descriptions, columns, column descriptions, compiled code, datasets health and more. diff --git a/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx b/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx index ec3cbe36a..ad7abf84a 100644 --- a/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx +++ b/docs/_snippets/cloud/features/anomaly-detection/automated-monitors-intro.mdx @@ -1,5 +1,5 @@ Out-of-the-box ML-powered monitoring for freshness and volume issues on all production tables. -The automated monitors provides broad coverage and detection of critical pipeline issues, without any configuration effort. +The automated monitors feature provides broad coverage and detection of critical pipeline issues, without any configuration effort. These monitors track updates to tables, and will detect data delays, incomplete updates, and significant volume changes. Additionally, there will be no increase in compute costs as the monitors leverage only warehouse metadata (e.g. information schema, query history). \ No newline at end of file diff --git a/docs/_snippets/cloud/integrations/snowflake.mdx b/docs/_snippets/cloud/integrations/snowflake.mdx index 6eb762ada..6a2ba656b 100644 --- a/docs/_snippets/cloud/integrations/snowflake.mdx +++ b/docs/_snippets/cloud/integrations/snowflake.mdx @@ -12,7 +12,7 @@ Provide the following fields: - **Elementary schema**: The name of your Elementary schema. Usually `[schema name]_elementary`. - **Role (optional)**: e.g. `ELEMENTARY_ROLE`. -Elementary cloud supports the user password and key pair authentication connection methods. +Elementary Cloud supports the user password and key pair authentication connection methods. - **User password**: - User: The user created for Elementary. diff --git a/docs/_snippets/guides/collect-job-data.mdx b/docs/_snippets/guides/collect-job-data.mdx index 85b8e38ea..b221413ea 100644 --- a/docs/_snippets/guides/collect-job-data.mdx +++ b/docs/_snippets/guides/collect-job-data.mdx @@ -15,7 +15,7 @@ The goal is to provide context that is useful to triage and resolve data issues, - The ID of a specific run execution: `job_run_id` - Job run results URL: `job_run_url` -## How Elementary collects jobs metadata? +## How Elementary collects jobs metadata #### Environment variables @@ -31,7 +31,7 @@ To configure `env_var` for your orchestrator, refer to your orchestrator's docs. Elementary also supports passing job metadata as dbt vars. If `env_var` and `var` exist, the `var` will be prioritized. -To pass job data to elementary using `var`, use the `--vars` flag in your invocations: +To pass job data to Elementary using `var`, use the `--vars` flag in your invocations: ```shell dbt run --vars '{"orchestrator": "Airflow", "job_name": "dbt_marketing_night_load"}' @@ -57,7 +57,7 @@ The following default environment variables are supported out of the box: | Github actions | orchestrator
job_run_id: `GITHUB_RUN_ID`
job_url: generated from `GITHUB_SERVER_URL`, `GITHUB_REPOSITORY`, `GITHUB_RUN_ID` | | Airflow | orchestrator | -## What if I use dbt cloud + orchestrator? +## What if I use dbt Cloud + orchestrator? By default, Elementary will collect the dbt cloud jobs info. If you wish to override that, change your dbt cloud invocations to pass the orchestrator job info using `--vars`: diff --git a/docs/_snippets/guides/dbt-source-freshness.mdx b/docs/_snippets/guides/dbt-source-freshness.mdx index 85bc288c3..eafe5ac37 100644 --- a/docs/_snippets/guides/dbt-source-freshness.mdx +++ b/docs/_snippets/guides/dbt-source-freshness.mdx @@ -1,5 +1,5 @@ Unlike dbt and Elementary tests, the results of the command `dbt source-freshness` are not automatically collected. -You can collect the results using Elementary CLI tool. +You can collect the results using the Elementary CLI tool. If dbt source freshness results are collected, they will be presented in the UI, and in alerts upon failure. @@ -21,7 +21,7 @@ This operation will upload the results to a table, and the execution of `edr mon - Note that `dbt source freshness` and `upload-source-freshness` needs to run from the same machine. - Note that `upload-source-freshness` requires passing `--project-dir` argument. -#### dbt cloud users +#### dbt Cloud users -The results can't be collected from dbt cloud. +The results can't be collected from dbt Cloud. Here is a [suggestion from an Elementary user](https://elementary-community.slack.com/archives/C02CTC89LAX/p1688113609829869) for a solution you can implement. \ No newline at end of file diff --git a/docs/cloud/guides/collect-job-data.mdx b/docs/cloud/guides/collect-job-data.mdx index 72361e2b1..cfd3749bc 100644 --- a/docs/cloud/guides/collect-job-data.mdx +++ b/docs/cloud/guides/collect-job-data.mdx @@ -1,5 +1,5 @@ --- -title: "Collect jobs info from orchestrator" +title: "Collect Jobs Info From Orchestrator" sidebarTitle: "Collect jobs data" --- diff --git a/docs/cloud/guides/sync-scheduling.mdx b/docs/cloud/guides/sync-scheduling.mdx index 666c29b28..6e55c36da 100644 --- a/docs/cloud/guides/sync-scheduling.mdx +++ b/docs/cloud/guides/sync-scheduling.mdx @@ -1,10 +1,10 @@ --- -title: "Environment syncs schedule" +title: "Environment Syncs Schedule" --- ## Synchronizing the Elementary schema -The data on your Elementary cloud environments is updated by syncing the local Elementary schema from the data warehouse. +The data on your Elementary Cloud environments is updated by syncing the local Elementary schema from the data warehouse. There are 2 available scheduling options: @@ -24,9 +24,9 @@ In the _Schedule Settings_, you're provided with a webhook URL. Next, you will n -Heading to dbt Cloud, you can [create a webhook subscription](https://docs.getdbt.com/docs/deploy/webhooks#create-a-webhook-subscription) that would trigger a sync after your jobs are done. +Heading to dbt Cloud, you can [create a webhook subscription](https://docs.getdbt.com/docs/deploy/webhooks#create-a-webhook-subscription) that will trigger a sync after your jobs are done. -- Make sure the webhook is triggered on `Run completed` events +- Make sure the webhook is triggered on `Run completed` events. - Select **only** the main jobs of the relevant environment. Make sure to select only the main jobs of the relevant environment. Selecting all jobs will trigger a sync for each job, which may result in unnecessary updates and therefore increased cost on the data warehouse. diff --git a/docs/cloud/guides/troubleshoot.mdx b/docs/cloud/guides/troubleshoot.mdx index 9191188b1..3a808c2be 100644 --- a/docs/cloud/guides/troubleshoot.mdx +++ b/docs/cloud/guides/troubleshoot.mdx @@ -4,7 +4,7 @@ title: "Troubleshooting" ### I connected my data warehouse but I don't see any test results -If you already connected your data warehouse to Elementary but don't see anything in Elementary UI, there could be several reasons. +If you already connected your data warehouse to Elementary but are not seeing anything in the Elementary UI, there could be several reasons. Try following these steps to troubleshoot: @@ -18,15 +18,15 @@ Try following these steps to troubleshoot: - If you have, make sure the table was created as an incremental table (not a regular table or view). - If not, there is a materialization configuration in your `dbt_project.yml` file that overrides the package config. Remove it, and run `dbt run --select elementary --full-refresh` to recreate the tables. After that run `dbt test` again and check if there is data. -**4. Still no data in the table? Reach out to the elementary team by starting an intercom chat from Elementary UI.** +**4. Still no data in the table? Reach out to the Elementary team by starting an intercom chat from the Elementary UI.** ### Column information cannot be retrieved This error can happen because of a few reasons: -1. check that your elementary dbt package version is 0.12.0 or higher -2. check that the user you are using to connect to your database has permission to access the information schema of all the schemas built or used by your dbt project +1. Check that your elementary dbt package version is 0.12.0 or higher. +2. Check that the user you are using to connect to your database has permission to access the information schema of all the schemas built or used by your dbt project. For more information on the permissions required by each data warehouse: @@ -41,10 +41,10 @@ For more information on the permissions required by each data warehouse: [Postgres](/cloud/integrations/dwh/postgres#permissions-and-security) -### How do I set-up the table name of my Singular test? +### How do I set up the table name of my Singular test? Singular tests are sql queries that can reference more than one table, but are often intended to test a logic that is related to one table in particular. -In order to have that table name appear in the UI in the test results, test execution and more screens, you may set it up by adding the following to the config block of your singular test file: +In order to have that table name appear in the UI in the test results, test execution and more screens, you can set it up by adding the following to the config block of your singular test file: ``` {{ config( override_primary_test_model_id="model_name" diff --git a/docs/cloud/integrations/bi/tableau.mdx b/docs/cloud/integrations/bi/tableau.mdx index 9a1a5a362..5c61b2407 100644 --- a/docs/cloud/integrations/bi/tableau.mdx +++ b/docs/cloud/integrations/bi/tableau.mdx @@ -3,7 +3,7 @@ title: "Tableau" --- After you connect Tableau, Elementary will automatically and continuously extend the lineage to the dashboard level. -This will provide you end-to-end data lineage to understand your downstream dependencies, called exposures. +This will provide end-to-end data lineage to help you understand your downstream dependencies, called exposures. In order for Elementary to extract your metadata from Tableau you must meet all of the Tableau Metadata GraphQL requirements (most are set by default): @@ -15,7 +15,7 @@ In order for Elementary to extract your metadata from Tableau you must meet all ## Tableau Cloud -### Creating Personal Access Token +### Creating a Personal Access Token Create a Personal Access Token in Tableau. For details on how to create a user token please refer to the **[Tableau guide](https://help.tableau.com/current/pro/desktop/en-us/useracct.htm#create-a-personal-access-token)**. diff --git a/docs/cloud/introduction.mdx b/docs/cloud/introduction.mdx index b9225da0f..e593ff0b6 100644 --- a/docs/cloud/introduction.mdx +++ b/docs/cloud/introduction.mdx @@ -4,7 +4,7 @@ sidebarTitle: "Introduction" icon: "cloud" --- -**Elementary is a data observability platform tailored for dbt first data organizations.** +**Elementary is a data observability platform tailored for dbt-first data organizations.** The unique dbt-native architecture seamlessly integrates into engineers' workflows, ensuring ease of use and smooth adoption. The platform provides out-of-the-box monitoring for critical issues, tools to effortlessly increase coverage, and integrations for end-to-end visibility across the data stack. diff --git a/docs/cloud/onboarding/signup.mdx b/docs/cloud/onboarding/signup.mdx index 04b510088..dea505618 100644 --- a/docs/cloud/onboarding/signup.mdx +++ b/docs/cloud/onboarding/signup.mdx @@ -6,7 +6,7 @@ icon: "square-1" - [Signup to Elementary](https://elementary-data.frontegg.com/oauth/account/sign-up) using Google SSO or email. + [Sign up to Elementary](https://elementary-data.frontegg.com/oauth/account/sign-up) using Google SSO or email. If you are interested in advanced authentication such as MFA, Okta SSO, Microsoft AD - please contact us at cloud@elementary-data.com diff --git a/docs/features/alerts-and-incidents/alert-rules.mdx b/docs/features/alerts-and-incidents/alert-rules.mdx index 3716c2893..199820163 100644 --- a/docs/features/alerts-and-incidents/alert-rules.mdx +++ b/docs/features/alerts-and-incidents/alert-rules.mdx @@ -2,7 +2,7 @@ title: "Alert rules" --- -Elementary cloud allows you to create rules that route your alerts. +Elementary Cloud allows you to create rules that route your alerts. Each rule is a combination of a filter and a destination. The Slack channel you choose when connecting your Slack workspace is automatically added as a default alert rule, that sends all the alerts to that channel without any filtering. diff --git a/docs/features/anomaly-detection/monitors-overview.mdx b/docs/features/anomaly-detection/monitors-overview.mdx index e1f1a4d6d..aa25ca4c3 100644 --- a/docs/features/anomaly-detection/monitors-overview.mdx +++ b/docs/features/anomaly-detection/monitors-overview.mdx @@ -5,13 +5,13 @@ sidebarTitle: "Monitors overview" -ML-powered anomaly detection monitors to automatically identify outliers and unexpected patterns in your data. -These are useful to detect issues such as incomplete data, delays, drop in a specific dimension or a spike in null values. +ML-powered anomaly detection monitors automatically identify outliers and unexpected patterns in your data. +These are useful to detect issues such as incomplete data, delays, a drop in a specific dimension or a spike in null values. Elementary offers two types of monitors: -- **Automated Monitors** - Out-of-the-box monitors who are activated automatically, and query metadata only. -- **Opt-in Monitors** - Monitors who query raw data and require configuration. +- **Automated Monitors** - Out-of-the-box monitors activated automatically, that query metadata only. +- **Opt-in Monitors** - Monitors that query raw data and require configuration. ## [Automated monitors](/features/anomaly-detection/automated-monitors) diff --git a/docs/features/ci.mdx b/docs/features/ci.mdx index 91f9f6827..588ea4df6 100644 --- a/docs/features/ci.mdx +++ b/docs/features/ci.mdx @@ -14,7 +14,7 @@ You'll also be able to see if any of your dbt tests are failing or your models a -Elementary CI automations will help you make changes with confidence and seeing the full picture before merging your pull request. +Elementary CI automations help you make changes with confidence by providing a comprehensive view before merging your pull request. ## Want to join the beta? diff --git a/docs/features/collaboration-and-communication/catalog.mdx b/docs/features/collaboration-and-communication/catalog.mdx index 01ced1ab9..3004b4018 100644 --- a/docs/features/collaboration-and-communication/catalog.mdx +++ b/docs/features/collaboration-and-communication/catalog.mdx @@ -5,7 +5,7 @@ title: "Data Catalog" On the Catalog tab you can now explore your datasets information - descriptions, columns, columns descriptions, latest update time and datasets health. -From the dataset you can navigate directly to it’s lineage and test results. +From the dataset you can navigate directly to its lineage and test results. The catalog content is generated from the descriptions you maintain in your dbt project YML files. diff --git a/docs/features/config-as-code.mdx b/docs/features/config-as-code.mdx index a38bc0a62..de7526a49 100644 --- a/docs/features/config-as-code.mdx +++ b/docs/features/config-as-code.mdx @@ -1,10 +1,10 @@ --- -title: "Configuration as Code" +title: "Configuration-as-Code" --- -All Elementary configuration is managed in your dbt code. +All Elementary configurations are managed in your dbt code. Configuring observability becomes a part of the development process that includes version control, continuous integration, and a review process. -In Elementary Cloud, you can save time by adding tests in bulk from the UI that will be added to your code. Additionally, you can allow data analysts to create quality tests without writing any code. Elementary will take care of it for them and open pull requests for them. +In Elementary Cloud, you can save time by adding tests in bulk from the UI that will be added to your code. Additionally, you can allow data analysts to create quality tests without writing any code. Elementary will take care of it for them and open pull requests on their behalf. diff --git a/docs/features/data-lineage/column-level-lineage.mdx b/docs/features/data-lineage/column-level-lineage.mdx index 78fe02a60..a88474b56 100644 --- a/docs/features/data-lineage/column-level-lineage.mdx +++ b/docs/features/data-lineage/column-level-lineage.mdx @@ -1,5 +1,5 @@ --- -title: Column Level Lineage +title: Column-Level Lineage sidebarTitle: Column level lineage --- @@ -8,7 +8,7 @@ sidebarTitle: Column level lineage The table nodes in Elementary lineage can be expanded to show the columns. When you select a column, the lineage of that specific column will be highlighted. -Column level lineage is useful for answering questions such as: +Column-level lineage is useful for answering questions such as: - Which downstream columns are actually impacted by a data quality issue? - Can we deprecate or rename a column? @@ -16,10 +16,10 @@ Column level lineage is useful for answering questions such as: ### Filter and highlight columns path -To help navigate graphs with large amount of columns per table, use the `...` menu right to the column: +To help navigate graphs with large amount of columns per table, use the `...` menu to the right of the column: -- **Filter**: Will show a graph of only the selected column and it's dependencies. -- **Highlight**: Will highlight only the selected column and it's dependencies. +- **Filter**: Will show a graph of only the selected column and its dependencies. +- **Highlight**: Will highlight only the selected column and its dependencies. -### Column level lineage generation +### Column-level lineage generation Elementary parses SQL queries to determine the dependencies between columns. Note that the lineage is only of the columns that directly contribute data to the column. -For example for the query: +For example, for the query: ```sql create or replace table db.schema.users as @@ -50,4 +50,4 @@ where user_type != 'test_user' The direct dependency of `total_logins` is `login_events.login_time`. The column `login_events.user_type` filter the data of `total_logins`, but it is an indirect dependency and will not show in lineage. -If you want a different approach in your Elementary Cloud instance - Contact us. +If you want a different approach in your Elementary Cloud instance - contact us. diff --git a/docs/features/data-lineage/exposures-lineage.mdx b/docs/features/data-lineage/exposures-lineage.mdx index 32f619108..634427c2d 100644 --- a/docs/features/data-lineage/exposures-lineage.mdx +++ b/docs/features/data-lineage/exposures-lineage.mdx @@ -6,9 +6,9 @@ sidebarTitle: Lineage to BI Some of your data is used downstream in dashboards, applications, data science pipelines, reverse ETLs, etc. These downstream data consumers are called _exposures_. -Elementary lineage graph presents downstream exposures of two origins: +The Elementary lineage graph presents downstream exposures of two origins: -1. Elementary Automated BI integrations +1. Elementary automated BI integrations 2. Exposures configured in your dbt project. Read about [how to configure exposures](https://docs.getdbt.com/docs/build/exposures) in code. @@ -41,13 +41,13 @@ exposures: -### Automated lineage to BI +### Automated lineage to the BI -Elementary will automatically and continuously extend the column-level-lineage to the dashboard level of your data visualization tool. +Elementary will automatically and continuously extend the column-level lineage to the dashboard level of your data visualization tool. -If your BI tool has it's own modeling layers (e.g. data sources in Tableu, Explores in Looker), these will also be included in the graph and column lineage. +If your BI tool has its own modeling layers (e.g. data sources in Tableu, Explores in Looker), these will also be included in the graph and column lineage.