{"id":518267,"date":"2024-11-07T14:28:43","date_gmt":"2024-11-07T14:28:43","guid":{"rendered":"https:\/\/www.devoteam.com\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/"},"modified":"2024-11-07T14:28:43","modified_gmt":"2024-11-07T14:28:43","slug":"how-to-optimise-dbt-looker-development-a-practical-guide","status":"publish","type":"expert-view","link":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/","title":{"rendered":"How to Optimise dbt &amp; Looker Development: A Practical Guide"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Developing data models and dashboards should be a smooth process, but teams using dbt for transformation and Looker for visualisation often face challenges. This article outlines a practical strategy for achieving reliable development and efficient environment separation between dbt and Looker. We&#8217;ll explore how to use a dedicated development data warehouse, robust Looker tests integration with Spectacles, and smart branch management to avoid disruptions, ensure data quality and control spending.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Challenges with using dbt and Looker<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As we develop data models using dbt, a SQL-first transformation tool, and create dashboards with Looker, a BI platform, two key challenges often arise:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reliable Development<\/strong>: How can we confidently develop in dbt without disrupting existing business Looker dashboards?<\/li>\n\n\n\n<li><strong>Looker Environment Separation<\/strong>: How can we effectively separate development and production environments without incurring additional costs?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">By implementing a dedicated development environment and robust testing, teams can avoid disruptions to production dashboards, safeguard data quality, and control costs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Overcoming these challenges brings significant benefits:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Fewer Errors<\/strong>: Ensures changes don&#8217;t impact existing production dashboards.<\/li>\n\n\n\n<li><strong>Increased Confidence<\/strong>: Builds trust in your processes and outcomes with business users.<\/li>\n\n\n\n<li><strong>Improved Data Quality<\/strong>: Validates changes before deploying to production.<\/li>\n\n\n\n<li><strong>Faster Deployment<\/strong>: Accelerates development cycles without downtime.<\/li>\n\n\n\n<li><strong>Cost Efficiency<\/strong>: Avoids extra infrastructure expenses.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In this blog post, we\u2019ll explore practical solutions to these challenges and how they can streamline your data development workflow.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-qw.googleusercontent.com\/docsz\/AD_4nXeXRh1kOd_8OXDEotR7np0YIy_9hZHrCkGxKhfv7wWcLLEfBNK2RPL-SQB93A4MOF13onY1UT_-Nj6XBjEP109xD_POtZPc_-AI3PawG0mxghr9hVbxOOO_2ornhxx_NpGljNdgfL5RlNG-jSTDb9lDX2FL?key=8Oh19QNm-G0KCP42ePqJ6w\" alt=\"A graphic with two software tabs (DBT and Looker) on the opposite sides of a cliff with a small bridge between them\"\/><figcaption class=\"wp-element-caption\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-main-color\">Build the bridge between Looker&#8217;s and DBT functionalities <\/mark><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ensuring <strong>Reliable Development<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To ensure seamless development and maintain quality between dbt and Looker, there are two key prerequisites:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A<\/strong> <strong>dedicated development data warehouse<\/strong>.<\/li>\n\n\n\n<li><strong>Robust tests in<\/strong> <strong>Looker<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Setting Up a Dedicated development data warehouse<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A development data warehouse is a separate environment from production, specifically set up for testing and building new features. Unlike production, it provides a safe space to validate changes in dbt without impacting live data or processes..&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Looker Tests<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Looker tests are designed to ensure the accuracy and reliability of key performance indicators (KPIs) used in Dashboards. By comparing the KPIs to historical data, any unexpected changes can be detected. This process ensures that both the structure and the results of business metrics remain accurate as the underlying data evolves, safeguarding the integrity of reporting and analytics.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Setting Up a Dedicated Looker development project<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">One effective approach is to create a &#8220;dev-testing&#8221; project within Looker. This project connects to the dbt development data warehouse, using its data specifically for testing purposes. It also has a remote dependency on the master branch of the primary Looker project while maintaining its own git repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s how the process works:<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh7-qw.googleusercontent.com\/docsz\/AD_4nXcKw1CQZyUtEIWC-j2MHHH_mh1OyEeIb8vky0bDJ16LcIAM---eIo_J_OYLiu6xJzNtA6Q_5DGkoVzqmippf1RzIsb1EbgaQecEQYiJ57N_V3AfE5ahbZDWPfnzBj_JLJqhO9OBI7X-nCOgi1UDwKqXMh_E?key=8Oh19QNm-G0KCP42ePqJ6w\" alt=\"Graph showing how to set up a &quot;dev testing&quot; project within Looker connected to dbt data warehouse. One the right side there is a Looker logo with an arrow pointing right to the Development DWH Model in the center and a &quot;Run tests&quot; sign above the arrow. On the left side there is dbt a logo with an arrow pointing right to Development DWH Model in the center and a &quot;PR Builds&quot;text above the arrow.\" style=\"width:936px;height:auto\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When a pull request (PR) is created in dbt, triggering a change in data transformations, the <strong>development data warehouse<\/strong> is built or updated.<\/li>\n\n\n\n<li>Once the data warehouse is updated, Looker tests can be executed in the &#8220;dev-testing&#8221; project using <strong>Spectacles, <\/strong>a package that automates looker checks. \u201cSpectacles assert\u201d runs all Looker data tests defined in the project and reports any failures or errors.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">By incorporating this setup, you can catch potential errors early in the development cycle, preventing issues from reaching production dashboards. Setting up a CI\/CD pipeline to automatically trigger Spectacles after each dbt PR ensures that transformation logic aligns with the business logic represented in Looker.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Optimising Costs for dbt Pull Request Builds<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">When dbt pull requests trigger the construction of the development data warehouse, costs can escalate rapidly. To control these expenses, you can implement two key optimisations: first, rebuild only the modified tables within the development data warehouse; second, schedule a full rebuild of the entire development data warehouse just once per week. This approach minimises redundant builds, effectively reducing unnecessary costs while maintaining development efficiency.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Testing with Spectacles<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Spectacles is a package that automates Looker checks, enabling you to define and streamline tests for Looker models while ensuring data consistency. It supports four key types of automated checks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C<a href=\"https:\/\/docs.spectacles.dev\/cli\/reference\/content-validator\/\">ontent Validation<\/a>\n<ul class=\"wp-block-list\">\n<li>Identifies content (Dashboards and Looks) that have errors.&nbsp;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/docs.spectacles.dev\/cli\/reference\/sql-validator\/\">SQL Validation<\/a><strong>&nbsp;<\/strong>\n<ul class=\"wp-block-list\">\n<li>Runs queries in the data warehouse to verify the SQL field in each dimension is valid.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/docs.spectacles.dev\/cli\/reference\/lookml-validator\/\">LookML Validator<\/a>\n<ul class=\"wp-block-list\">\n<li>Runs Looker&#8217;s LookML Validator and returns any syntax issues with your LookML.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/docs.spectacles.dev\/cli\/reference\/assert-validator\/\">Assert Validator<\/a>\n<ul class=\"wp-block-list\">\n<li>Runs any Looker Data Tests that were defined and returns all failures and errors<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Assert Validator<\/strong> is particularly useful for pointing to a development data warehouse and running Looker tests with development data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creating <strong>Looker Environment Separation<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Looker, creating separate production and development environments with multiple instances can quickly become costly. Instead, we can achieve separation using <strong>branch separation<\/strong> within the main Looker repository, avoiding the need for additional Looker instances.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Branch-Based Environment Management<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rather than maintaining two Looker instances, a more cost-effective solution is to use Git branches to manage development and production environments in a single instance.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Develop Branch<\/strong>: This branch is dedicated to ongoing development work.<\/li>\n\n\n\n<li><strong>Master Branch<\/strong>: The master branch, which is protected, serves as the production environment.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To link the production environment with Looker, a separate Looker project called &#8220;looker-prod &#8221; is created. This project uses the <strong>master branch<\/strong> as a remote dependency. This ensures that production dashboards remain isolated from development work.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-qw.googleusercontent.com\/docsz\/AD_4nXfzBuiJP5lcnm5GZEKmCLlaszgA02D6R-hepHInMjS2HMNYmZKyt9ldwFivlDnaFLuk5B2wiWmoXJ9c-lZJjh8jQy0EJ2lc2Su68V5Jtdpjpk0icDEQnw2aElu5tP4K5h-HvcfAW0yuw22ztq0XijjaT2kj?key=8Oh19QNm-G0KCP42ePqJ6w\" alt=\"A graph showing Branch Environment Management in Looker.\"\/><figcaption class=\"wp-element-caption\">Looker process<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Automating Deployments with GitHub Workflows<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To streamline the deployment process, we can configure automated workflows using<strong> GitHub Actions<\/strong>. When changes are merged into the master branch, the workflow triggers a deployment to the Looker production environment by updating the master reference in the Looker production repository. Additionally, if Looker&#8217;s Advanced Deployment Mode is enabled, a deploy webhook can be set up in GitHub to automatically push Looker code to production.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-qw.googleusercontent.com\/docsz\/AD_4nXcO37lT4uy4nHdjB0thhzGyxNqVpiuP70kmMRLd5KiElUuIMGT3ODgYlFFJExMyAIJYAYv0tuAJ1HXeXjsUh6Acxu55f3fs6bOoedxJf44lnj4neBWTZEO0TXYSyJOxvLVPw7MqDMGN1Rd2BsrsLKmGcmPq?key=8Oh19QNm-G0KCP42ePqJ6w\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The custom script triggers when a pull request on master is closed. It has two main jobs:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>get_master_latest_commit<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Checks out the master branch and retrieves the latest commit hash from master.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>update_looker_prodcution_repo<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Updates the manifest_lock.lkml file with the new commit reference (if it has changed).<\/li>\n\n\n\n<li>Commits and pushes the update<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">This automates updating and merging the manifest_lock.lkml with the latest master commit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Protecting the master branch&nbsp;<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rules to protect the master branch:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Only accepts merges from the Develop branch<\/li>\n\n\n\n<li>Force pushes are disabled<\/li>\n\n\n\n<li>Direct commits are not allowed<\/li>\n\n\n\n<li>Merge requests with failing GitHub Actions are disallowed<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">By protecting the master branch and enforcing these rules, you safeguard the stability of the production environment. This setup ensures that only thoroughly tested and validated changes make it to production, while the Develop branch remains flexible for rapid iteration and experimentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this blog post, we explored strategies for ensuring reliable development with dbt and Looker, focusing on creating separate development environments without incurring additional costs. We discussed the importance of using a dedicated development data warehouse, implementing robust testing with Spectacles, and using Git branch separation to manage Looker environments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By following these practices, your team can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Catch errors early, preventing them from affecting production.<\/li>\n\n\n\n<li>Minimise disruptions to business operations.<\/li>\n\n\n\n<li>Maintain cost efficiency while improving overall data reliability<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to learn more about dbt, read our article &#8220;<a href=\"https:\/\/devoteam.info\/expert-view\/transform-your-data-using-sql-turing-excel-powerusers-into-data-experts\/\">SQL for Data Transformation: From Excel to Expert<\/a>&#8220;. Curious about Looker? Check it&#8217;s <a href=\"https:\/\/gcloud.devoteam.com\/blog\/lookers-4-unknown-capabilities\/\">4 unknown capabilities<\/a>!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-cover alignfull is-style-blur-image is-style-blur-image-less\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-black-background-color has-background-dim-70 has-background-dim\"><\/span><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1707\" class=\"wp-block-cover__image-background wp-image-81613\" alt=\"Feature Image for Expert View &quot;New data platforms: the announced end of ETLs?&quot;\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1399150019.jpg\" data-object-fit=\"cover\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1399150019.jpg 2560w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1399150019-300x200.jpg 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1399150019-1024x683.jpg 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1399150019-768x512.jpg 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1399150019-1536x1024.jpg 1536w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1399150019-2048x1366.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<div class=\"wp-block-group alignfull has-base-color has-text-color has-global-padding is-layout-constrained wp-container-core-group-is-layout-46b67d08 wp-block-group-is-layout-constrained\" style=\"margin-top:0px;margin-bottom:0px;padding-top:var(--wp--preset--spacing--xxx-large);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--xxx-large);padding-left:var(--wp--preset--spacing--medium)\">\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-b56e0895 wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-align-center has-secondary-font-family has-large-font-size\">Are you ready to transform your data development process?<\/h2>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-main-accent-color has-text-color wp-block-paragraph\">\u00a0Contact Devoteam today and see how you can implement this streamlined approach in your analytics stack.<br><\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2cc807e2 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/devoteam.info\/cz\/data-solutions\/\">Start your Data Journey<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline-white-button\"><a class=\"wp-block-button__link has-base-color has-text-color has-background wp-element-button\" href=\"https:\/\/devoteam.info\/success-story\/?category_name=google-cloud\" style=\"background-color:#64648254\">Read Success Stories<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Developing data models and dashboards should be a smooth process, but teams using dbt for transformation and Looker for visualisation often face challenges. This article outlines a practical strategy for achieving reliable development and efficient environment separation between dbt and Looker. We&#8217;ll explore how to use a dedicated development data warehouse, robust Looker tests integration [&hellip;]<\/p>\n","protected":false},"featured_media":518269,"template":"","categories":[2329],"tags":[],"industry":[1112],"class_list":["post-518267","expert-view","type-expert-view","status-publish","has-post-thumbnail","hentry","category-data-cz","industry-technology-cz"],"acf":[],"cards":"\n\t<div class=\"single-post-card\">\n\n\t\t<figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/\" target=\"_self\" ><img width=\"1920\" height=\"848\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"How to Optimise dbt &amp; Looker Development: A Practical Guide\" style=\"aspect-ratio:4\/3;width:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1.jpg 1920w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-300x133.jpg 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-1024x452.jpg 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-768x339.jpg 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-1536x679.jpg 1536w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-2048x905.jpg 2048w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure>\n\n\t\t\n\t\t<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-43282307 wp-block-group-is-layout-flex\">\n\t<p style=\"font-style:normal;font-weight:700\" class=\"has-link-color wp-elements-1 wp-block-lp-post-type has-text-color has-primary-color has-small-font-size\">Expert View<\/p>\n\n\t\t\n\t\t<h3 style=\"font-style:normal;font-weight:400\" class=\"wp-block-post-title has-base-font-size\"><a href=\"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/\" target=\"_self\" >How to Optimise dbt &amp; Looker Development: A Practical Guide<\/a><\/h3><\/div>\n\t\t\n\t<\/div>\n\n","yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Optimise dbt &amp; Looker Development: A Practical Guide | Devoteam<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Optimise dbt &amp; Looker Development: A Practical Guide\" \/>\n<meta property=\"og:description\" content=\"Developing data models and dashboards should be a smooth process, but teams using dbt for transformation and Looker for visualisation often face challenges. This article outlines a practical strategy for achieving reliable development and efficient environment separation between dbt and Looker. We&#8217;ll explore how to use a dedicated development data warehouse, robust Looker tests integration [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Devoteam\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh7-qw.googleusercontent.com\/docsz\/AD_4nXeXRh1kOd_8OXDEotR7np0YIy_9hZHrCkGxKhfv7wWcLLEfBNK2RPL-SQB93A4MOF13onY1UT_-Nj6XBjEP109xD_POtZPc_-AI3PawG0mxghr9hVbxOOO_2ornhxx_NpGljNdgfL5RlNG-jSTDb9lDX2FL?key=8Oh19QNm-G0KCP42ePqJ6w\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/\",\"url\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/\",\"name\":\"How to Optimise dbt &amp; Looker Development: A Practical Guide | Devoteam\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/shutterstock_688113271-1-scaled-1.jpg\",\"datePublished\":\"2024-11-07T14:28:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/#breadcrumb\"},\"inLanguage\":\"en-CZ\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CZ\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/shutterstock_688113271-1-scaled-1.jpg\",\"contentUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/shutterstock_688113271-1-scaled-1.jpg\",\"width\":1920,\"height\":848,\"caption\":\"Data technology abstract futuristic illustration . Low poly shape with connecting dots and lines on dark background. 3D rendering . Big data visualization .; Shutterstock ID 688113271; purchase_order: 7; job: Corporate; client: Devoteam_FR\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/how-to-optimise-dbt-looker-development-a-practical-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Expert View\",\"item\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/expert-view\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Optimise dbt &amp; Looker Development: A Practical Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/#website\",\"url\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/\",\"name\":\"Devoteam\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/devoteam.info\\\/cz\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CZ\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Optimise dbt &amp; Looker Development: A Practical Guide | Devoteam","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/","og_locale":"en_US","og_type":"article","og_title":"How to Optimise dbt &amp; Looker Development: A Practical Guide","og_description":"Developing data models and dashboards should be a smooth process, but teams using dbt for transformation and Looker for visualisation often face challenges. This article outlines a practical strategy for achieving reliable development and efficient environment separation between dbt and Looker. We&#8217;ll explore how to use a dedicated development data warehouse, robust Looker tests integration [&hellip;]","og_url":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/","og_site_name":"Devoteam","og_image":[{"url":"https:\/\/lh7-qw.googleusercontent.com\/docsz\/AD_4nXeXRh1kOd_8OXDEotR7np0YIy_9hZHrCkGxKhfv7wWcLLEfBNK2RPL-SQB93A4MOF13onY1UT_-Nj6XBjEP109xD_POtZPc_-AI3PawG0mxghr9hVbxOOO_2ornhxx_NpGljNdgfL5RlNG-jSTDb9lDX2FL?key=8Oh19QNm-G0KCP42ePqJ6w","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/","url":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/","name":"How to Optimise dbt &amp; Looker Development: A Practical Guide | Devoteam","isPartOf":{"@id":"https:\/\/devoteam.info\/cz\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/#primaryimage"},"image":{"@id":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1.jpg","datePublished":"2024-11-07T14:28:43+00:00","breadcrumb":{"@id":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/#breadcrumb"},"inLanguage":"en-CZ","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-CZ","@id":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/#primaryimage","url":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1.jpg","contentUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1.jpg","width":1920,"height":848,"caption":"Data technology abstract futuristic illustration . Low poly shape with connecting dots and lines on dark background. 3D rendering . Big data visualization .; Shutterstock ID 688113271; purchase_order: 7; job: Corporate; client: Devoteam_FR"},{"@type":"BreadcrumbList","@id":"https:\/\/devoteam.info\/cz\/expert-view\/how-to-optimise-dbt-looker-development-a-practical-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devoteam.info\/cz\/"},{"@type":"ListItem","position":2,"name":"Expert View","item":"https:\/\/devoteam.info\/cz\/expert-view\/"},{"@type":"ListItem","position":3,"name":"How to Optimise dbt &amp; Looker Development: A Practical Guide"}]},{"@type":"WebSite","@id":"https:\/\/devoteam.info\/cz\/#website","url":"https:\/\/devoteam.info\/cz\/","name":"Devoteam","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devoteam.info\/cz\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CZ"}]}},"uagb_featured_image_src":{"full":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1.jpg",1920,848,false],"thumbnail":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-150x150.jpg",150,150,true],"medium":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-300x133.jpg",300,133,true],"medium_large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-768x339.jpg",768,339,true],"large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-1024x452.jpg",1024,452,true],"1536x1536":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-1536x679.jpg",1536,679,true],"2048x2048":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/09\/shutterstock_688113271-1-scaled-1-2048x905.jpg",2048,905,true]},"uagb_author_info":{"display_name":"aleksandra.juda","author_link":"https:\/\/devoteam.info\/cz\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"Developing data models and dashboards should be a smooth process, but teams using dbt for transformation and Looker for visualisation often face challenges. This article outlines a practical strategy for achieving reliable development and efficient environment separation between dbt and Looker. We&#8217;ll explore how to use a dedicated development data warehouse, robust Looker tests integration&hellip;","_links":{"self":[{"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/expert-view\/518267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/expert-view"}],"about":[{"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/types\/expert-view"}],"version-history":[{"count":0,"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/expert-view\/518267\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/media\/518269"}],"wp:attachment":[{"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/media?parent=518267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/categories?post=518267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/tags?post=518267"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/devoteam.info\/cz\/wp-json\/wp\/v2\/industry?post=518267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}