From 9910639751162f1b66cc1c7b2bf5929cb072a096 Mon Sep 17 00:00:00 2001 From: Ben Cassell <98852248+benc-db@users.noreply.github.com> Date: Thu, 5 Oct 2023 08:57:42 -0700 Subject: [PATCH 01/19] Update databricks-configs.md Updating to call out incompatibility of insert_overwrite with SQL Warehouses --- website/docs/reference/resource-configs/databricks-configs.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/docs/reference/resource-configs/databricks-configs.md b/website/docs/reference/resource-configs/databricks-configs.md index e57e1efc04a..9bfe4d862cf 100644 --- a/website/docs/reference/resource-configs/databricks-configs.md +++ b/website/docs/reference/resource-configs/databricks-configs.md @@ -182,6 +182,9 @@ insert overwrite table analytics.databricks_incremental +#### Usage Notes +* This strategy is not currently compatible with SQL Warehouses + ### The `merge` strategy The `merge` incremental strategy requires: From b86332bd608c916ad551d72db495763b6f3ab52a Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Mon, 27 Nov 2023 12:07:05 -0800 Subject: [PATCH 02/19] Fast-follows for MS Fabric docs --- .../about-connections.md | 3 ++- .../connect-microsoft-fabric.md | 27 +++++++++++++++++++ .../about-core-connections.md | 1 + .../connect-data-platform/fabric-setup.md | 2 +- .../microsoft-fabric-support-rn.md | 6 +++-- website/docs/guides/microsoft-fabric-qs.md | 3 +++ website/sidebars.js | 1 + website/snippets/_adapters-verified.md | 2 +- 8 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md diff --git a/website/docs/docs/cloud/connect-data-platform/about-connections.md b/website/docs/docs/cloud/connect-data-platform/about-connections.md index 1329d179900..93bbf83584f 100644 --- a/website/docs/docs/cloud/connect-data-platform/about-connections.md +++ b/website/docs/docs/cloud/connect-data-platform/about-connections.md @@ -3,7 +3,7 @@ title: "About data platform connections" id: about-connections description: "Information about data platform connections" sidebar_label: "About data platform connections" -pagination_next: "docs/cloud/connect-data-platform/connect-starburst-trino" +pagination_next: "docs/cloud/connect-data-platform/connect-microsoft-fabric" pagination_prev: null --- dbt Cloud can connect with a variety of data platform providers including: @@ -11,6 +11,7 @@ dbt Cloud can connect with a variety of data platform providers including: - [Apache Spark](/docs/cloud/connect-data-platform/connect-apache-spark) - [Databricks](/docs/cloud/connect-data-platform/connect-databricks) - [Google BigQuery](/docs/cloud/connect-data-platform/connect-bigquery) +- [Microsoft Fabric](/docs/cloud/connect-data-platform/connect-microsoft-fabric) - [PostgreSQL](/docs/cloud/connect-data-platform/connect-redshift-postgresql-alloydb) - [Snowflake](/docs/cloud/connect-data-platform/connect-snowflake) - [Starburst or Trino](/docs/cloud/connect-data-platform/connect-starburst-trino) diff --git a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md new file mode 100644 index 00000000000..0fe36bf3976 --- /dev/null +++ b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md @@ -0,0 +1,27 @@ +--- +title: "Connect Microsoft Fabric" +description: "Configure Microsoft Fabric connection." +sidebar_label: "Connect Microsoft Fabric" +--- + +The following are the required fields for setting up a connection with a [Microsoft Fabric](https://docs.starburst.io/starburst-enterprise/index.html) using service principal authentication. + +| Field | Description | +| --- | --- | +| **Server** | The service principal's **host** value for the Fabric test endpoint. | +| **Port** | The port to connect to Microsoft Fabric. By default, it's 1433 for the standard SQL server port number. | +| **Database** | The service principal's **database** value for the Fabric test endpoint. | +| **Authentication** | Choose **Service Principal** from the dropdown. | +| **Tenant ID** | The service principal's **Directory (tenant) ID**. | +| **Client ID** | The service principal's **application (client) ID id**. | +| **Client secret** | The service principal's **client secret** (not the **client secret id**). | + + +## Supported authentication methods + +- Service principal in Azure Active Directory (AAD) +- Username/password in Azure Active Directory (AAD) + +## Configuration + +To learn how to optimize performance with data platform-specific configurations in dbt Cloud, refer to [Microsoft Fabric DWH configurations](/reference/resource-configs/fabric-configs). diff --git a/website/docs/docs/core/connect-data-platform/about-core-connections.md b/website/docs/docs/core/connect-data-platform/about-core-connections.md index 492e5ae878a..61a7805d232 100644 --- a/website/docs/docs/core/connect-data-platform/about-core-connections.md +++ b/website/docs/docs/core/connect-data-platform/about-core-connections.md @@ -14,6 +14,7 @@ dbt Core can connect with a variety of data platform providers including: - [Apache Spark](/docs/core/connect-data-platform/spark-setup) - [Databricks](/docs/core/connect-data-platform/databricks-setup) - [Google BigQuery](/docs/core/connect-data-platform/bigquery-setup) +- [Microsoft Fabric](/docs/core/connect-data-platform/fabric-setup) - [PostgreSQL](/docs/core/connect-data-platform/postgres-setup) - [Snowflake](/docs/core/connect-data-platform/snowflake-setup) - [Starburst or Trino](/docs/core/connect-data-platform/trino-setup) diff --git a/website/docs/docs/core/connect-data-platform/fabric-setup.md b/website/docs/docs/core/connect-data-platform/fabric-setup.md index 11a8cf6f98b..deef1e04b22 100644 --- a/website/docs/docs/core/connect-data-platform/fabric-setup.md +++ b/website/docs/docs/core/connect-data-platform/fabric-setup.md @@ -8,7 +8,7 @@ meta: github_repo: 'Microsoft/dbt-fabric' pypi_package: 'dbt-fabric' min_core_version: '1.4.0' - cloud_support: Not Supported + cloud_support: Supported platform_name: 'Microsoft Fabric' config_page: '/reference/resource-configs/fabric-configs' --- diff --git a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md index 13aefa80ffc..66295d079ad 100644 --- a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md +++ b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md @@ -8,11 +8,13 @@ tags: [Nov-2023] Public Preview is now available in dbt Cloud for Microsoft Fabric! -To learn more, check out the [Quickstart for dbt Cloud and Microsoft Fabric](/guides/microsoft-fabric?step=1). The guide walks you through: +To learn more, refer to [Connect Microsoft Fabric](/docs/cloud/connect-data-platform/connect-microsoft-fabric) and [Microsoft Fabric DWH configurations](/reference/resource-configs/fabric-configs). + +Also, check out the [Quickstart for dbt Cloud and Microsoft Fabric](/guides/microsoft-fabric?step=1). The guide walks you through: - Loading the Jaffle Shop sample data (provided by dbt Labs) into your Microsoft Fabric warehouse. - Connecting dbt Cloud to Microsoft Fabric. - Turning a sample query into a model in your dbt project. A model in dbt is a SELECT statement. - Adding tests to your models. - Documenting your models. -- Scheduling a job to run. \ No newline at end of file +- Scheduling a job to run \ No newline at end of file diff --git a/website/docs/guides/microsoft-fabric-qs.md b/website/docs/guides/microsoft-fabric-qs.md index c7c53a2aac7..6b194f0baf7 100644 --- a/website/docs/guides/microsoft-fabric-qs.md +++ b/website/docs/guides/microsoft-fabric-qs.md @@ -108,6 +108,9 @@ A public preview of Microsoft Fabric in dbt Cloud is now available! 2. Enter a project name and click **Continue**. 3. Choose **Fabric** as your connection and click **Next**. 4. In the **Configure your environment** section, enter the **Settings** for your new project: + - **Server** — Use the service principal's **host** value for the Fabric test endpoint. + - **Port** — 1433 (which is the default). + - **Database** — Use the service principal's **database** value for the Fabric test endpoint. 5. Enter the **Development credentials** for your new project: - **Authentication** — Choose **Service Principal** from the dropdown. - **Tenant ID** — Use the service principal’s **Directory (tenant) id** as the value. diff --git a/website/sidebars.js b/website/sidebars.js index 720b752ed41..01a41c5a552 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -54,6 +54,7 @@ const sidebarSettings = { link: { type: "doc", id: "docs/cloud/connect-data-platform/about-connections" }, items: [ "docs/cloud/connect-data-platform/about-connections", + "docs/cloud/connect-data-platform/connect-microsoft-fabric", "docs/cloud/connect-data-platform/connect-starburst-trino", "docs/cloud/connect-data-platform/connect-snowflake", "docs/cloud/connect-data-platform/connect-bigquery", diff --git a/website/snippets/_adapters-verified.md b/website/snippets/_adapters-verified.md index b9a71c67c36..c3607b50125 100644 --- a/website/snippets/_adapters-verified.md +++ b/website/snippets/_adapters-verified.md @@ -46,7 +46,7 @@ Date: Mon, 27 Nov 2023 12:15:25 -0800 Subject: [PATCH 03/19] Update website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md typo --- .../release-notes/02-Nov-2023/microsoft-fabric-support-rn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md index 66295d079ad..9197fb54c11 100644 --- a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md +++ b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/microsoft-fabric-support-rn.md @@ -17,4 +17,4 @@ Also, check out the [Quickstart for dbt Cloud and Microsoft Fabric](/guides/micr - Turning a sample query into a model in your dbt project. A model in dbt is a SELECT statement. - Adding tests to your models. - Documenting your models. -- Scheduling a job to run \ No newline at end of file +- Scheduling a job to run. \ No newline at end of file From 0d51f2e6336596c544ec8e7deeafc04920334667 Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Mon, 27 Nov 2023 12:26:33 -0800 Subject: [PATCH 04/19] update supported auth methods section --- .../cloud/connect-data-platform/connect-microsoft-fabric.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md index 0fe36bf3976..649bd92b5b3 100644 --- a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md +++ b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md @@ -18,9 +18,11 @@ The following are the required fields for setting up a connection with a [Micros ## Supported authentication methods +The two supported authentication methods are: +- AAD service principal +- AAD password -- Service principal in Azure Active Directory (AAD) -- Username/password in Azure Active Directory (AAD) +SQL password (LDAP) is not supported in Fabric Synapse so you must use Azure Active Directory (AAD). This means that to use Microsoft Fabric in dbt Cloud, you will need at least one AAD service principal to connect dbt Cloud to Fabric, ideally one service principal for each user. ## Configuration From 437ce90181cb97e907d62c59051bcdf8a4ba5d4b Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 09:22:02 -0800 Subject: [PATCH 05/19] fold in feedback from DX --- .../connect-microsoft-fabric.md | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md index 649bd92b5b3..bd42a217001 100644 --- a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md +++ b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md @@ -4,7 +4,15 @@ description: "Configure Microsoft Fabric connection." sidebar_label: "Connect Microsoft Fabric" --- -The following are the required fields for setting up a connection with a [Microsoft Fabric](https://docs.starburst.io/starburst-enterprise/index.html) using service principal authentication. +## Supported authentication methods +The two supported authentication methods are: +- Azure Active Directory service principal +- Azure Active Directory password + +SQL password (LDAP) is not supported in Microsoft Fabric Synapse Data Warehouse so you must use Azure Active Directory (Azure AD). This means that to use Microsoft Fabric in dbt Cloud, you will need at least one Azure AD service principal to connect dbt Cloud to Fabric, ideally one service principal for each user. + +### Active Directory service principal +The following are the required fields for setting up a connection with a [Microsoft Fabric](https://docs.starburst.io/starburst-enterprise/index.html) using Azure AD service principal authentication. | Field | Description | | --- | --- | @@ -17,12 +25,18 @@ The following are the required fields for setting up a connection with a [Micros | **Client secret** | The service principal's **client secret** (not the **client secret id**). | -## Supported authentication methods -The two supported authentication methods are: -- AAD service principal -- AAD password +### Active Directory password + +The following are the required fields for setting up a connection with a [Microsoft Fabric](https://docs.starburst.io/starburst-enterprise/index.html) using Azure AD password authentication. -SQL password (LDAP) is not supported in Fabric Synapse so you must use Azure Active Directory (AAD). This means that to use Microsoft Fabric in dbt Cloud, you will need at least one AAD service principal to connect dbt Cloud to Fabric, ideally one service principal for each user. +| Field | Description | +| --- | --- | +| **Server** | The server hostname. | +| **Port** | The server port. By default, it's 1433 for the standard SQL server port number. | +| **Database** | The database name. | +| **Authentication** | Choose **Active Directory Password** from the dropdown. | +| **User** | The AD username. | +| **Password** | The AD username's password. | ## Configuration From 05a8c33680b8464e90e1bf4815861734349e0c81 Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 09:28:06 -0800 Subject: [PATCH 06/19] Minor nits --- .../connect-microsoft-fabric.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md index bd42a217001..2896839813d 100644 --- a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md +++ b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md @@ -5,11 +5,11 @@ sidebar_label: "Connect Microsoft Fabric" --- ## Supported authentication methods -The two supported authentication methods are: -- Azure Active Directory service principal -- Azure Active Directory password +The supported authentication methods are: +- Azure Active Directory (Azure AD) service principal +- Azure AD password -SQL password (LDAP) is not supported in Microsoft Fabric Synapse Data Warehouse so you must use Azure Active Directory (Azure AD). This means that to use Microsoft Fabric in dbt Cloud, you will need at least one Azure AD service principal to connect dbt Cloud to Fabric, ideally one service principal for each user. +SQL password (LDAP) is not supported in Microsoft Fabric Synapse Data Warehouse so you must use Azure AD. This means that to use Microsoft Fabric in dbt Cloud, you will need at least one Azure AD service principal to connect dbt Cloud to Fabric, ideally one service principal for each user. ### Active Directory service principal The following are the required fields for setting up a connection with a [Microsoft Fabric](https://docs.starburst.io/starburst-enterprise/index.html) using Azure AD service principal authentication. @@ -17,7 +17,7 @@ The following are the required fields for setting up a connection with a [Micros | Field | Description | | --- | --- | | **Server** | The service principal's **host** value for the Fabric test endpoint. | -| **Port** | The port to connect to Microsoft Fabric. By default, it's 1433 for the standard SQL server port number. | +| **Port** | The port to connect to Microsoft Fabric. You can use `1433` (the default), which is the standard SQL server port number. | | **Database** | The service principal's **database** value for the Fabric test endpoint. | | **Authentication** | Choose **Service Principal** from the dropdown. | | **Tenant ID** | The service principal's **Directory (tenant) ID**. | @@ -31,8 +31,8 @@ The following are the required fields for setting up a connection with a [Micros | Field | Description | | --- | --- | -| **Server** | The server hostname. | -| **Port** | The server port. By default, it's 1433 for the standard SQL server port number. | +| **Server** | The server hostname to connect to Microsoft Fabric. | +| **Port** | The server port. You can use `1433` (the default), which is the standard SQL server port number. | | **Database** | The database name. | | **Authentication** | Choose **Active Directory Password** from the dropdown. | | **User** | The AD username. | From 01aea7a1924640869984bc4ccf7b686f26eb57bb Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 09:36:38 -0800 Subject: [PATCH 07/19] Fix links --- .../cloud/connect-data-platform/connect-microsoft-fabric.md | 6 +++--- website/docs/guides/microsoft-fabric-qs.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md index 2896839813d..e9d67524e89 100644 --- a/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md +++ b/website/docs/docs/cloud/connect-data-platform/connect-microsoft-fabric.md @@ -9,10 +9,10 @@ The supported authentication methods are: - Azure Active Directory (Azure AD) service principal - Azure AD password -SQL password (LDAP) is not supported in Microsoft Fabric Synapse Data Warehouse so you must use Azure AD. This means that to use Microsoft Fabric in dbt Cloud, you will need at least one Azure AD service principal to connect dbt Cloud to Fabric, ideally one service principal for each user. +SQL password (LDAP) is not supported in Microsoft Fabric Synapse Data Warehouse so you must use Azure AD. This means that to use [Microsoft Fabric](https://www.microsoft.com/en-us/microsoft-fabric) in dbt Cloud, you will need at least one Azure AD service principal to connect dbt Cloud to Fabric, ideally one service principal for each user. ### Active Directory service principal -The following are the required fields for setting up a connection with a [Microsoft Fabric](https://docs.starburst.io/starburst-enterprise/index.html) using Azure AD service principal authentication. +The following are the required fields for setting up a connection with a Microsoft Fabric using Azure AD service principal authentication. | Field | Description | | --- | --- | @@ -27,7 +27,7 @@ The following are the required fields for setting up a connection with a [Micros ### Active Directory password -The following are the required fields for setting up a connection with a [Microsoft Fabric](https://docs.starburst.io/starburst-enterprise/index.html) using Azure AD password authentication. +The following are the required fields for setting up a connection with a Microsoft Fabric using Azure AD password authentication. | Field | Description | | --- | --- | diff --git a/website/docs/guides/microsoft-fabric-qs.md b/website/docs/guides/microsoft-fabric-qs.md index 6b194f0baf7..592dd1d6a8b 100644 --- a/website/docs/guides/microsoft-fabric-qs.md +++ b/website/docs/guides/microsoft-fabric-qs.md @@ -9,7 +9,7 @@ recently_updated: true --- ## Introduction -In this quickstart guide, you'll learn how to use dbt Cloud with Microsoft Fabric. It will show you how to: +In this quickstart guide, you'll learn how to use dbt Cloud with [Microsoft Fabric](https://www.microsoft.com/en-us/microsoft-fabric). It will show you how to: - Load the Jaffle Shop sample data (provided by dbt Labs) into your Microsoft Fabric warehouse. - Connect dbt Cloud to Microsoft Fabric. From 6c8e886bf700da79a7ff45b6d1cf390c0ac3b4ac Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 10:00:01 -0800 Subject: [PATCH 08/19] Fixed whitspace issue by escaping chars --- website/docs/guides/microsoft-fabric-qs.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/docs/guides/microsoft-fabric-qs.md b/website/docs/guides/microsoft-fabric-qs.md index 592dd1d6a8b..5342ee5be7d 100644 --- a/website/docs/guides/microsoft-fabric-qs.md +++ b/website/docs/guides/microsoft-fabric-qs.md @@ -54,8 +54,8 @@ A public preview of Microsoft Fabric in dbt Cloud is now available! CREATE TABLE dbo.customers ( [ID] [int], - [FIRST_NAME] [varchar] (8000), - [LAST_NAME] [varchar] (8000) + \[FIRST_NAME] [varchar](8000), + \[LAST_NAME] [varchar](8000) ); COPY INTO [dbo].[customers] @@ -72,7 +72,7 @@ A public preview of Microsoft Fabric in dbt Cloud is now available! [USER_ID] [int], -- [ORDER_DATE] [int], [ORDER_DATE] [date], - [STATUS] [varchar] (8000) + \[STATUS] [varchar](8000) ); COPY INTO [dbo].[orders] @@ -87,8 +87,8 @@ A public preview of Microsoft Fabric in dbt Cloud is now available! ( [ID] [int], [ORDERID] [int], - [PAYMENTMETHOD] [varchar] (8000), - [STATUS] [varchar] (8000), + \[PAYMENTMETHOD] [varchar](8000), + \[STATUS] [varchar](8000), [AMOUNT] [int], [CREATED] [date] ); From 506da58310306d9c9da1eafdd93e80262adea892 Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 11:35:38 -0800 Subject: [PATCH 09/19] Repo caching feature --- .../02-Nov-2023/repo-caching-rn.md | 14 ++++++++++++++ website/snippets/_cloud-environments-info.md | 10 ++++++++++ .../img/docs/deploy/example-repo-caching.png | Bin 0 -> 47561 bytes 3 files changed, 24 insertions(+) create mode 100644 website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md create mode 100644 website/static/img/docs/deploy/example-repo-caching.png diff --git a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md new file mode 100644 index 00000000000..e02fa3fe7b2 --- /dev/null +++ b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md @@ -0,0 +1,14 @@ +--- +title: "New: Support for Git repository caching" +description: "November 2023: New option in dbt Cloud to enable Git repository caching for your job runs." +sidebar_label: "New: Support for Git repository caching" +sidebar_position: 07 +tags: [Nov-2023] +date: 2023-11-29 +--- + +Now available in dbt Cloud is a new option to enable Git repository caching for your job runs. When enabled, it tells dbt Cloud to cache your dbt project's Git repository and to use the cached copy instead if there's an outage with the Git provider. This feature helps improve the reliability and stability of your job runs. + +To learn more, refer to [Repo caching](/docs/deploy/deploy-environments#repo-caching). + + \ No newline at end of file diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index 0f45c09f2e6..0eaabfd126f 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -34,6 +34,16 @@ Both development and deployment environments have a section called **General Set - If you select a current version with `(latest)` in the name, your environment will automatically install the latest stable version of the minor version selected. ::: +### Repo caching + +At the start of every job run, dbt Cloud clones the project's Git repository so it has the latest versions of the project code and package code. + +For improved reliability and performance on your job runs, you can enable dbt Cloud to keep a cache of the project's Git repository. So, if there's a third-party outage (for example, a GitHub outage) that causes the cloning operation to fail, dbt Cloud will instead use the cached copy of the repository so your jobs can continue running as scheduled. + +To enable Git repository caching, select **Account settings** from the gear menu and enable the **Repository caching** option. + + + ### Custom branch behavior By default, all environments will use the default branch in your repository (usually the `main` branch) when accessing your dbt code. This is overridable within each dbt Cloud Environment using the **Default to a custom branch** option. This setting have will have slightly different behavior depending on the environment type: diff --git a/website/static/img/docs/deploy/example-repo-caching.png b/website/static/img/docs/deploy/example-repo-caching.png new file mode 100644 index 0000000000000000000000000000000000000000..805d845dccb2f9d979a12cbbd43cb79858090685 GIT binary patch literal 47561 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 literal 0 HcmV?d00001 From 31811a560e02d59e9521c962adcc35144b9b825b Mon Sep 17 00:00:00 2001 From: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:05:22 -0800 Subject: [PATCH 10/19] Update website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md Co-authored-by: Joel Labes --- .../dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md index e02fa3fe7b2..372bcf8372d 100644 --- a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md +++ b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md @@ -1,6 +1,6 @@ --- title: "New: Support for Git repository caching" -description: "November 2023: New option in dbt Cloud to enable Git repository caching for your job runs." +description: "November 2023: dbt Cloud can cache your project's code (as well as other dbt packages) to ensure runs can begin despite an upstream Git provider's outage." sidebar_label: "New: Support for Git repository caching" sidebar_position: 07 tags: [Nov-2023] From 66b76fe52c19b2f31082af0a1ba6381e45a4d708 Mon Sep 17 00:00:00 2001 From: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:06:31 -0800 Subject: [PATCH 11/19] Update website/snippets/_cloud-environments-info.md Co-authored-by: Joel Labes --- website/snippets/_cloud-environments-info.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index 0eaabfd126f..04989d03f71 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -36,7 +36,7 @@ Both development and deployment environments have a section called **General Set ### Repo caching -At the start of every job run, dbt Cloud clones the project's Git repository so it has the latest versions of the project code and package code. +At the start of every job run, dbt Cloud clones the project's Git repository so it has the latest versions of your project's code and runs `dbt deps` to install your dependencies. For improved reliability and performance on your job runs, you can enable dbt Cloud to keep a cache of the project's Git repository. So, if there's a third-party outage (for example, a GitHub outage) that causes the cloning operation to fail, dbt Cloud will instead use the cached copy of the repository so your jobs can continue running as scheduled. From 4ed31bf59802de68e94791cb04de0003cacb31c1 Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 12:17:42 -0800 Subject: [PATCH 12/19] Fold in feedback --- .../02-Nov-2023/{repo-caching-rn.md => repo-caching.md} | 2 +- website/snippets/_cloud-environments-info.md | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) rename website/docs/docs/dbt-versions/release-notes/02-Nov-2023/{repo-caching-rn.md => repo-caching.md} (58%) diff --git a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md similarity index 58% rename from website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md rename to website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md index e02fa3fe7b2..eb2313df59e 100644 --- a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching-rn.md +++ b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md @@ -7,7 +7,7 @@ tags: [Nov-2023] date: 2023-11-29 --- -Now available in dbt Cloud is a new option to enable Git repository caching for your job runs. When enabled, it tells dbt Cloud to cache your dbt project's Git repository and to use the cached copy instead if there's an outage with the Git provider. This feature helps improve the reliability and stability of your job runs. +Now available for dbt Cloud Enterprise plans is a new option to enable Git repository caching for your job runs. When enabled, it tells dbt Cloud to cache your dbt project's Git repository and to use the cached copy instead if there's an outage with the Git provider. This feature helps improve the reliability and stability of your job runs. To learn more, refer to [Repo caching](/docs/deploy/deploy-environments#repo-caching). diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index 0eaabfd126f..acaeed6b84d 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -34,7 +34,7 @@ Both development and deployment environments have a section called **General Set - If you select a current version with `(latest)` in the name, your environment will automatically install the latest stable version of the minor version selected. ::: -### Repo caching +### Repo caching At the start of every job run, dbt Cloud clones the project's Git repository so it has the latest versions of the project code and package code. @@ -44,6 +44,12 @@ To enable Git repository caching, select **Account settings** from the gear menu +:::note + +This feature is only available on dbt Cloud Enterprise plans. + +::: + ### Custom branch behavior By default, all environments will use the default branch in your repository (usually the `main` branch) when accessing your dbt code. This is overridable within each dbt Cloud Environment using the **Default to a custom branch** option. This setting have will have slightly different behavior depending on the environment type: From ab9738c07dd5ca9f0ee18d2ac14d75e57e7ab9ec Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 12:18:33 -0800 Subject: [PATCH 13/19] Feedback --- website/snippets/_cloud-environments-info.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index 84847a36209..5c5c22103c8 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -38,7 +38,7 @@ Both development and deployment environments have a section called **General Set At the start of every job run, dbt Cloud clones the project's Git repository so it has the latest versions of your project's code and runs `dbt deps` to install your dependencies. -For improved reliability and performance on your job runs, you can enable dbt Cloud to keep a cache of the project's Git repository. So, if there's a third-party outage (for example, a GitHub outage) that causes the cloning operation to fail, dbt Cloud will instead use the cached copy of the repository so your jobs can continue running as scheduled. +For improved reliability and performance on your job runs, you can enable dbt Cloud to keep a cache of the project's Git repository. So, if there's a third-party outage that causes the cloning operation to fail, dbt Cloud will instead use the cached copy of the repository so your jobs can continue running as scheduled. To enable Git repository caching, select **Account settings** from the gear menu and enable the **Repository caching** option. From 48467398cb32bd4b03277a6625d6afaee03b7f47 Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 12:42:14 -0800 Subject: [PATCH 14/19] DX feedback --- .../dbt-versions/release-notes/02-Nov-2023/repo-caching.md | 2 +- website/snippets/_cloud-environments-info.md | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md index 3ed537ee9b1..09889f84d62 100644 --- a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md +++ b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md @@ -9,6 +9,6 @@ date: 2023-11-29 Now available for dbt Cloud Enterprise plans is a new option to enable Git repository caching for your job runs. When enabled, it tells dbt Cloud to cache your dbt project's Git repository and to use the cached copy instead if there's an outage with the Git provider. This feature helps improve the reliability and stability of your job runs. -To learn more, refer to [Repo caching](/docs/deploy/deploy-environments#repo-caching). +To learn more, refer to [Repo caching](/docs/deploy/deploy-environments#git-repository-caching). \ No newline at end of file diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index 5c5c22103c8..9384bf9d2de 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -34,11 +34,13 @@ Both development and deployment environments have a section called **General Set - If you select a current version with `(latest)` in the name, your environment will automatically install the latest stable version of the minor version selected. ::: -### Repo caching +### Git repository caching At the start of every job run, dbt Cloud clones the project's Git repository so it has the latest versions of your project's code and runs `dbt deps` to install your dependencies. -For improved reliability and performance on your job runs, you can enable dbt Cloud to keep a cache of the project's Git repository. So, if there's a third-party outage that causes the cloning operation to fail, dbt Cloud will instead use the cached copy of the repository so your jobs can continue running as scheduled. +For improved reliability and performance on your job runs, you can enable dbt Cloud to keep a cache of the project's Git repository. So, if there's a third-party outage that causes the cloning operation to fail, dbt Cloud will instead use the cached copy of the repo so your jobs can continue running as scheduled. + +dbt Cloud caches your project's Git repo after each successful run and retains it for 8 days if there are no repo updates. It caches all packages regardless of installation method and does not fetch code outside of the job runs. To enable Git repository caching, select **Account settings** from the gear menu and enable the **Repository caching** option. From 4ae4cf424e023b001d9f2d3f5fbbe947174fcead Mon Sep 17 00:00:00 2001 From: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:46:12 -0800 Subject: [PATCH 15/19] Update website/snippets/_cloud-environments-info.md --- website/snippets/_cloud-environments-info.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index 9384bf9d2de..4e1cba64e00 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -48,7 +48,7 @@ To enable Git repository caching, select **Account settings** from the gear menu :::note -This feature is only available on dbt Cloud Enterprise plans. +This feature is only available on the dbt Cloud Enterprise plan. ::: From 19373134c747deb236f5f42c2a689a822936a0b2 Mon Sep 17 00:00:00 2001 From: Ben Cassell <98852248+benc-db@users.noreply.github.com> Date: Wed, 29 Nov 2023 13:07:11 -0800 Subject: [PATCH 16/19] Update databricks-configs.md Incorporating suggestions --- .../docs/reference/resource-configs/databricks-configs.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/website/docs/reference/resource-configs/databricks-configs.md b/website/docs/reference/resource-configs/databricks-configs.md index 9bfe4d862cf..0dc3f8c5616 100644 --- a/website/docs/reference/resource-configs/databricks-configs.md +++ b/website/docs/reference/resource-configs/databricks-configs.md @@ -100,6 +100,10 @@ insert into table analytics.databricks_incremental ### The `insert_overwrite` strategy +:::caution +This strategy is currently only compatible with All Purpose Clusters, not SQL Warehouses. +::: + This strategy is most effective when specified alongside a `partition_by` clause in your model config. dbt will run an [atomic `insert overwrite` statement](https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-table.html) that dynamically replaces all partitions included in your query. Be sure to re-select _all_ of the relevant data for a partition when using this incremental strategy. If no `partition_by` is specified, then the `insert_overwrite` strategy will atomically replace all contents of the table, overriding all existing data with only the new records. The column schema of the table remains the same, however. This can be desirable in some limited circumstances, since it minimizes downtime while the table contents are overwritten. The operation is comparable to running `truncate` + `insert` on other databases. For atomic replacement of Delta-formatted tables, use the `table` materialization (which runs `create or replace`) instead. @@ -182,9 +186,6 @@ insert overwrite table analytics.databricks_incremental -#### Usage Notes -* This strategy is not currently compatible with SQL Warehouses - ### The `merge` strategy The `merge` incremental strategy requires: From 81edd340ab968d5fd8e3c01ea22291c992644308 Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 13:12:02 -0800 Subject: [PATCH 17/19] Feedback --- website/docs/guides/microsoft-fabric-qs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/guides/microsoft-fabric-qs.md b/website/docs/guides/microsoft-fabric-qs.md index 5342ee5be7d..aaf7074cd36 100644 --- a/website/docs/guides/microsoft-fabric-qs.md +++ b/website/docs/guides/microsoft-fabric-qs.md @@ -28,6 +28,7 @@ A public preview of Microsoft Fabric in dbt Cloud is now available! - You have a [dbt Cloud](https://www.getdbt.com/signup/) account. - You have started the Microsoft Fabric (Preview) trial. For details, refer to [Microsoft Fabric (Preview) trial](https://learn.microsoft.com/en-us/fabric/get-started/fabric-trial) in the Microsoft docs. - As a Microsoft admin, you’ve enabled service principal authentication. For details, refer to [Enable service principal authentication](https://learn.microsoft.com/en-us/fabric/admin/metadata-scanning-enable-read-only-apis) in the Microsoft docs. dbt Cloud needs these authentication credentials to connect to Microsoft Fabric. + - The service principal must be added to the Microsoft Fabric workspace with either a Member (recommended) or Admin permission set. ### Related content - [dbt Courses](https://courses.getdbt.com/collections) From edf806e540f20c39d3b2c954ae710bd716f2501e Mon Sep 17 00:00:00 2001 From: Ly Nguyen Date: Wed, 29 Nov 2023 13:17:06 -0800 Subject: [PATCH 18/19] Minor change --- website/docs/guides/microsoft-fabric-qs.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/website/docs/guides/microsoft-fabric-qs.md b/website/docs/guides/microsoft-fabric-qs.md index aaf7074cd36..1d1e016a6f1 100644 --- a/website/docs/guides/microsoft-fabric-qs.md +++ b/website/docs/guides/microsoft-fabric-qs.md @@ -27,8 +27,7 @@ A public preview of Microsoft Fabric in dbt Cloud is now available! ### Prerequisites - You have a [dbt Cloud](https://www.getdbt.com/signup/) account. - You have started the Microsoft Fabric (Preview) trial. For details, refer to [Microsoft Fabric (Preview) trial](https://learn.microsoft.com/en-us/fabric/get-started/fabric-trial) in the Microsoft docs. -- As a Microsoft admin, you’ve enabled service principal authentication. For details, refer to [Enable service principal authentication](https://learn.microsoft.com/en-us/fabric/admin/metadata-scanning-enable-read-only-apis) in the Microsoft docs. dbt Cloud needs these authentication credentials to connect to Microsoft Fabric. - - The service principal must be added to the Microsoft Fabric workspace with either a Member (recommended) or Admin permission set. +- As a Microsoft admin, you’ve enabled service principal authentication. You must add the service principal to the Microsoft Fabric workspace with either a Member (recommended) or Admin permission set. For details, refer to [Enable service principal authentication](https://learn.microsoft.com/en-us/fabric/admin/metadata-scanning-enable-read-only-apis) in the Microsoft docs. dbt Cloud needs these authentication credentials to connect to Microsoft Fabric. ### Related content - [dbt Courses](https://courses.getdbt.com/collections) From f5a1c9651d6a83919c1bdbca42426c03f4286ff6 Mon Sep 17 00:00:00 2001 From: Ly Nguyen <107218380+nghi-ly@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:28:44 -0800 Subject: [PATCH 19/19] Update website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md index 09889f84d62..7c35991e961 100644 --- a/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md +++ b/website/docs/docs/dbt-versions/release-notes/02-Nov-2023/repo-caching.md @@ -7,7 +7,7 @@ tags: [Nov-2023] date: 2023-11-29 --- -Now available for dbt Cloud Enterprise plans is a new option to enable Git repository caching for your job runs. When enabled, it tells dbt Cloud to cache your dbt project's Git repository and to use the cached copy instead if there's an outage with the Git provider. This feature helps improve the reliability and stability of your job runs. +Now available for dbt Cloud Enterprise plans is a new option to enable Git repository caching for your job runs. When enabled, dbt Cloud caches your dbt project's Git repository and uses the cached copy instead if there's an outage with the Git provider. This feature improves the reliability and stability of your job runs. To learn more, refer to [Repo caching](/docs/deploy/deploy-environments#git-repository-caching).