From b419083d68124e210e56578fca52e0533199e768 Mon Sep 17 00:00:00 2001 From: Alex Alves Date: Mon, 4 Dec 2023 15:57:15 +0100 Subject: [PATCH 01/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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/34] 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: