From abaedc2cef6c67894cb3f97c38640b44314ffc2e Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 3 Nov 2023 19:20:42 +0000 Subject: [PATCH 1/4] add cycle detection info adding cycle detection link per slack feedback --- .../guides/best-practices/how-we-mesh/mesh-2-structures.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 937515954af..24dc94a6e3d 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -18,6 +18,10 @@ At a high level, you’ll need to decide: - Where to draw the lines between your dbt Projects -- i.e. how do you determine where to split your DAG and which models go in which project? - How to manage your code -- do you want multiple dbt Projects living in the same repository (mono-repo) or do you want to have multiple repos with one repo per project? +### Cycle detection + +Currently, project dependencies only work in a one-way direction. This helps you avoid indefinite project `ref` cycles (or loops) and issues with your data workflows. For example, the `jaffle_finance"` project can't introduce a new model that depends on `jaffle_marketing.roi_by_channel`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies#:~:text=...-,Cycle%20detection%3A,-Currently%2C%20%22project%22%20dependencies) for more information. + ## Define your project interfaces by splitting your DAG The first (and perhaps most difficult!) decision when migrating to a multi-project architecture is deciding where to draw the line in your DAG to define the interfaces between your projects. Let's explore some language for discussing the design of these patterns. From 2007ba3dcd4bc7155fe5879da324b9fd559388a4 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 3 Nov 2023 19:21:57 +0000 Subject: [PATCH 2/4] Update website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md --- .../docs/guides/best-practices/how-we-mesh/mesh-2-structures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 24dc94a6e3d..17f0970a769 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -20,7 +20,7 @@ At a high level, you’ll need to decide: ### Cycle detection -Currently, project dependencies only work in a one-way direction. This helps you avoid indefinite project `ref` cycles (or loops) and issues with your data workflows. For example, the `jaffle_finance"` project can't introduce a new model that depends on `jaffle_marketing.roi_by_channel`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies#:~:text=...-,Cycle%20detection%3A,-Currently%2C%20%22project%22%20dependencies) for more information. +Currently, project dependencies only work in a one-way direction. This helps you avoid indefinite project `ref` cycles (or loops) and issues with your data workflows. For example, the `jaffle_finance"` project can't introduce a new model that depends on `jaffle_marketing.roi_by_channel`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies#how-to-use-ref) for more information. ## Define your project interfaces by splitting your DAG From 2fa141eb293134be9c92d6862355b4bc590b312e Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 3 Nov 2023 19:28:48 +0000 Subject: [PATCH 3/4] Update website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md Co-authored-by: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> --- .../docs/guides/best-practices/how-we-mesh/mesh-2-structures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 17f0970a769..99a26d3c954 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -20,7 +20,7 @@ At a high level, you’ll need to decide: ### Cycle detection -Currently, project dependencies only work in a one-way direction. This helps you avoid indefinite project `ref` cycles (or loops) and issues with your data workflows. For example, the `jaffle_finance"` project can't introduce a new model that depends on `jaffle_marketing.roi_by_channel`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies#how-to-use-ref) for more information. +Currently, project dependencies only work in a one-way direction. This helps you avoid indefinite project `ref` cycles (or loops) and issues with your data workflows. For example, the `jaffle_finance` project can't introduce a new model that depends on `jaffle_marketing.roi_by_channel`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies#how-to-use-ref) for more information. ## Define your project interfaces by splitting your DAG From 0e74ad08cc4d6b3d06e59f1b3009ab1b0081fee7 Mon Sep 17 00:00:00 2001 From: mirnawong1 <89008547+mirnawong1@users.noreply.github.com> Date: Fri, 3 Nov 2023 20:05:35 +0000 Subject: [PATCH 4/4] Update website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md --- .../docs/guides/best-practices/how-we-mesh/mesh-2-structures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md index 99a26d3c954..9ab633c50ad 100644 --- a/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md +++ b/website/docs/guides/best-practices/how-we-mesh/mesh-2-structures.md @@ -20,7 +20,7 @@ At a high level, you’ll need to decide: ### Cycle detection -Currently, project dependencies only work in a one-way direction. This helps you avoid indefinite project `ref` cycles (or loops) and issues with your data workflows. For example, the `jaffle_finance` project can't introduce a new model that depends on `jaffle_marketing.roi_by_channel`. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies#how-to-use-ref) for more information. +Like resource dependencies, project dependencies are acyclic, meaning they only move in one direction. This prevents `ref` cycles (or loops), which lead to issues with your data workflows. For example, if project B depends on project A, a new model in project A could not import and use a public model from project B. Refer to [Project dependencies](/docs/collaborate/govern/project-dependencies#how-to-use-ref) for more information. ## Define your project interfaces by splitting your DAG