PageSourceSearch

https://getbruin.com/_nuxt/CsnSJxnY.js

js getbruin.com collected 2026-10-03 22:04:58 UTC 53,463 bytes, 6 lines download raw bytes

1import{_ as m,e as u,b as g,o,g as l,z as e,h as a,F as x,r as h,t as v,i as s,w as i,j as r,A as f}from"./1BEqaQKX.js";import{C as b}from"./GMO-5RRM.js";import{d as y}from"./DEJ_tTaM.js";const w={class:"isolate"},k={class:"bg-gray-50 py-16 sm:py-24"},C={class:"mx-auto max-w-7xl px-6 lg:px-8"},B={class:"overflow-x-auto"},L={class:"min-w-full bg-white overflow-hidden"},M={class:"divide-y divide-gray-200"},_={class:"px-6 py-4 text-sm font-medium text-gray-900"},j={class:"px-6 py-4 text-center"},S={key:0,class:"inline-flex items-center justify-center w-6 h-6 rounded-full bg-green-100 text-green-600"},D={key:1,class:"inline-flex items-center justify-center w-6 h-6 rounded-full bg-bruin-50 text-bruin-400"},z={key:2,class:"text-sm text-gray-600"},A={class:"px-6 py-4 text-center"},P={key:0,class:"inline-flex items-center justify-center w-6 h-6 rounded-full bg-green-100 text-green-600"},T={key:1,class:"inline-flex items-center justify-center w-6 h-6 rounded-full bg-bruin-50 text-bruin-400"},I={key:2,class:"text-sm text-gray-600"},Q={class:"mt-8 text-center"},F={class:"bg-white py-16 sm:py-24"},O={class:"mx-auto max-w-7xl px-6 lg:px-8"},q={class:"mt-12 text-center"},E={class:"bg-gray-900 py-16 sm:py-24"},G={class:"mx-auto max-w-7xl px-6 lg:px-8"},N={class:"mt-12 text-center"},Y={class:"bg-white py-16 sm:py-24"},V={class:"mx-auto max-w-7xl px-6 lg:px-8"},W={class:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12"},H={class:"bg-white p-8"},R={class:"space-y-4"},J={class:"mt-6"},U={class:"mt-12 text-center"},$={class:"bg-gray-50 py-16 sm:py-24"},K={class:"mx-auto max-w-7xl px-6 lg:px-8"},Z={class:"mt-12 text-center"},X={class:"bg-white py-16 sm:py-24"},aa={class:"mx-auto max-w-7xl px-6 lg:px-8"},ta={class:"mt-12 text-center"},ea={class:"bg-gray-50 py-16 sm:py-24"},sa={class:"mx-auto max-w-7xl px-6 lg:px-8"},da={class:"mt-12 text-center"},ia={class:"bg-white py-16 sm:py-24"},ra={class:"mx-auto max-w-7xl px-6 lg:px-8"},na={class:"mt-12 text-center"},oa={class:"bg-gray-900 py-16 sm:py-24"},la={class:"mx-auto max-w-7xl px-6 lg:px-8"},va={class:"mt-12 text-center"},ca={class:"bg-gray-50 py-16 sm:py-24"},pa={class:"mx-auto max-w-7xl px-6 lg:px-8"},ma={class:"mt-12 text-center"},ua={__name:"dbt-vs-bruin",setup(ga){y({}),u({title:"dbt vs Bruin: Complete Comparison Guide 2026 | Data Pipeline Tools",description:"Detailed comparison between dbt and Bruin for data pipelines. Compare features, performance, and architecture. Bruin offers 3x faster pipelines with built-in ingestion, SQL & Python support, and native orchestration.",ogTitle:"dbt vs Bruin: Complete Comparison Guide | Data Pipeline Tools",ogDescription:"In-depth comparison: dbt vs Bruin. Features, performance, and architecture analysis. See why teams achieve 3x faster pipelines with Bruin.",ogUrl:"https://getbruin.com/comparisons/dbt-vs-bruin/",ogType:"article",twitterCard:"summary_large_image",twitterTitle:"dbt vs Bruin: Complete Comparison Guide",twitterDescription:"Detailed comparison between dbt and Bruin. Features, performance, and when to choose each tool.",keywords:"dbt vs bruin, dbt alternative, data transformation tools, data pipeline comparison, dbt competitors, sql transformation tools, data engineering tools, bruin data, dbt alternative 2026",robots:"index, follow"}),g({link:[{rel:"canonical",href:"https://getbruin.com/comparisons/dbt-vs-bruin/"}],script:[{type:"application/ld+json",innerHTML:JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:"dbt vs Bruin: Complete Comparison Guide",description:"Detailed comparison between dbt and Bruin for data pipeline tools, including features, performance, and use cases.",author:{"@type":"Organization",name:"Bruin Data"},publisher:{"@type":"Organization",name:"Bruin Data",logo:{"@type":"ImageObject",url:"https://getbruin.com/bruin-logo-sm128.png"}},datePublished:"2025-01-22",dateModified:"2025-01-22"})},{type:"application/ld+json",innerHTML:JSON.stringify({"@context":"https://schema.org","@type":"SoftwareApplication",name:"Bruin",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}})}]});const c=[{name:"Data Ingestion",dbt:!1,bruin:!0},{name:"SQL Transformations",dbt:!0,bruin:!0},{name:"Python Support",dbt:"Limited",bruin:"First-class"},{name:"Built-in Orchestration",dbt:!1,bruin:!0},{name:"Data Quality Checks",dbt:"Tests",bruin:"Built-in"},{name:"Lineage Visualization",dbt:"Cloud only",bruin:"Built-in"},{name:"VS Code Extension",dbt:!1,bruin:!0},{name:"Multi-language Pipelines",dbt:!1,bruin:!0},{name:"100+ Data Connectors",dbt:!1,bruin:!0},{name:"Incremental Loading",dbt:!0,bruin:!0},{name:"Open Source",dbt:!0,bruin:!0},{name:"Managed Cloud",dbt:!0,bruin:!0}];return(xa,t)=>{const d=f,p=b;return o(),l("main",w,[t[29]||(t[29]=e('<div class="relative isolate bg-gray-50 border-b border-gray-100" data-v-21d6881a><div class="mx-auto max-w-7xl px-6 pb-16 pt-10 sm:pb-16 sm:pt-32 lg:px-8" data-v-21d6881a><div class="max-w-4xl" data-v-21d6881a><h1 class="text-4xl font-light tracking-tight text-gray-900 sm:text-6xl leading-tight" data-v-21d6881a> dbt vs Bruin <br data-v-21d6881a><span class="font-serif italic text-bruin-400" data-v-21d6881a>Complete Comparison</span></h1><p class="mt-6 text-lg font-light leading-relaxed text-gray-600 max-w-3xl" data-v-21d6881a> An honest, in-depth comparison between dbt and Bruin to help you choose the right data pipeline tool for your team. Compare features, architecture, performance, and use cases. </p></div></div></div>',1)),a("div",k,[a("div",C,[a("div",B,[a("table",L,[t[4]||(t[4]=a("thead",{class:"bg-gray-900 text-white"},[a("tr",null,[a("th",{class:"px-6 py-4 text-left text-sm font-semibold"},"Feature"),a("th",{class:"px-6 py-4 text-center text-sm font-semibold"},"dbt"),a("th",{class:"px-6 py-4 text-center text-sm font-semibold"},"Bruin")])],-1)),a("tbody",M,[(o(),l(x,null,h(c,n=>a("tr",{key:n.name,class:"hover:bg-gray-50"},[a("td",_,v(n.name),1),a("td",j,[n.dbt===!0?(o(),l("span",S,[...t[0]||(t[0]=[a("svg",{"aria-hidden":"true",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),a("span",{class:"sr-only"},"Yes",-1)])])):n.dbt===!1?(o(),l("span",D,[...t[1]||(t[1]=[a("svg",{"aria-hidden":"true",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1),a("span",{class:"sr-only"},"No",-1)])])):(o(),l("span",z,v(n.dbt),1))]),a("td",A,[n.bruin===!0?(o(),l("span",P,[...t[2]||(t[2]=[a("svg",{"aria-hidden":"true",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),a("span",{class:"sr-only"},"Yes",-1)])])):n.bruin===!1?(o(),l("span",T,[...t[3]||(t[3]=[a("svg",{"aria-hidden":"true",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1),a("span",{class:"sr-only"}
1,"No",-1)])])):(o(),l("span",I,v(n.bruin),1))])])),64))])])]),a("div",Q,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm"},{default:i(()=>[...t[5]||(t[5]=[r("Explore Bruin on GitHub",-1)])]),_:1})])])]),a("div",F,[a("div",O,[t[7]||(t[7]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-500" data-v-21d6881a>Core Philosophy</h2><p class="mt-2 text-[40px] font-light text-gray-900" data-v-21d6881a>Different Approaches to Data Pipelines</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-8" data-v-21d6881a><div class="bg-gray-50 p-8 border-l border-gray-100" data-v-21d6881a><h3 class="text-2xl font-light text-gray-900 mb-4" data-v-21d6881a>dbt (data build tool)</h3><div class="prose prose-gray max-w-none" data-v-21d6881a><p class="text-gray-700 leading-relaxed mb-4" data-v-21d6881a> dbt focuses exclusively on the <strong data-v-21d6881a>transformation</strong> layer of your data stack (the &quot;T&quot; in ELT). It&#39;s designed to bring software engineering best practices to analytics workflows. </p><ul class="text-gray-700 space-y-2" data-v-21d6881a><li data-v-21d6881a><strong data-v-21d6881a>SQL-first:</strong> Write transformations as SELECT statements</li><li data-v-21d6881a><strong data-v-21d6881a>Cloud-native:</strong> Executes in your data warehouse</li><li data-v-21d6881a><strong data-v-21d6881a>Modular design:</strong> Break logic into reusable models</li><li data-v-21d6881a><strong data-v-21d6881a>Testing framework:</strong> Built-in data testing capabilities</li><li data-v-21d6881a><strong data-v-21d6881a>Large ecosystem:</strong> 100k+ community, many packages</li></ul><p class="text-gray-700 leading-relaxed mt-4" data-v-21d6881a> Best suited for teams that already have ingestion and orchestration solutions in place and want a dedicated transformation tool. </p></div></div><div class="bg-white p-8 border-l border-gray-100" data-v-21d6881a><h3 class="text-2xl font-light text-gray-900 mb-4" data-v-21d6881a>Bruin</h3><div class="prose prose-gray max-w-none" data-v-21d6881a><p class="text-gray-700 leading-relaxed mb-4" data-v-21d6881a> Bruin is an <strong data-v-21d6881a>end-to-end data pipeline tool</strong> that brings together ingestion, transformation, and data quality into a single, unified framework. </p><ul class="text-gray-700 space-y-2" data-v-21d6881a><li data-v-21d6881a><strong data-v-21d6881a>All-in-one:</strong> Ingestion, transformation, and quality in one tool</li><li data-v-21d6881a><strong data-v-21d6881a>Multi-language:</strong> Native SQL and Python support</li><li data-v-21d6881a><strong data-v-21d6881a>Built-in orchestration:</strong> No Airflow or Dagster needed</li><li data-v-21d6881a><strong data-v-21d6881a>Batteries included:</strong> Quality checks, lineage, templating</li><li data-v-21d6881a><strong data-v-21d6881a>Flexible deployment:</strong> Local, EC2, GitHub Actions, or managed cloud</li></ul><p class="text-gray-700 leading-relaxed mt-4" data-v-21d6881a> Best suited for teams that want a unified solution and prefer to focus on business logic rather than managing infrastructure. </p></div></div></div>',2)),a("div",q,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm"},{default:i(()=>[...t[6]||(t[6]=[r("See Bruin's unified approach on GitHub",-1)])]),_:1})])])]),a("div",E,[a("div",G,[t[9]||(t[9]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-400" data-v-21d6881a>Architecture</h2><p class="mt-2 text-[40px] font-light text-white" data-v-21d6881a>How They Work</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-12" data-v-21d6881a><div data-v-21d6881a><h3 class="text-xl font-light text-white mb-6" data-v-21d6881a>dbt Architecture</h3><div class="space-y-4 text-gray-300" data-v-21d6881a><div class="bg-gray-800 rounded-sm p-6" data-v-21d6881a><h4 class="font-light text-white mb-2" data-v-21d6881a>Typical dbt Stack:</h4><ul class="space-y-2 text-sm" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><span class="text-gray-500 mr-2" data-v-21d6881a>1.</span><span data-v-21d6881a>Ingestion tool (Fivetran, Airbyte, custom scripts)</span></li><li class="flex items-start" data-v-21d6881a><span class="text-gray-500 mr-2" data-v-21d6881a>2.</span><span data-v-21d6881a>dbt for transformations</span></li><li class="flex items-start" data-v-21d6881a><span class="text-gray-500 mr-2" data-v-21d6881a>3.</span><span data-v-21d6881a>Orchestrator (Airflow, Dagster, Prefect)</span></li><li class="flex items-start" data-v-21d6881a><span class="text-gray-500 mr-2" data-v-21d6881a>4.</span><span data-v-21d6881a>Observability tools (Monte Carlo, dbt Cloud)</span></li><li class="flex items-start" data-v-21d6881a><span class="text-gray-500 mr-2" data-v-21d6881a>5.</span><span data-v-21d6881a>Catalog/Lineage tools (separate or dbt Cloud)</span></li></ul></div><p class="text-sm" data-v-21d6881a><strong class="text-white" data-v-21d6881a>Result:</strong> Multiple tools to manage, integrate, and maintain. Each tool requires its own configuration, monitoring, and potentially separate teams. </p></div></div><div data-v-21d6881a><h3 class="text-xl font-light text-white mb-6" data-v-21d6881a>Bruin Architecture</h3><div class="space-y-4 text-gray-300" data-v-21d6881a><div class="bg-gray-800 rounded-sm p-6" data-v-21d6881a><h4 class="font-light text-white mb-2" data-v-21d6881a>Bruin Unified Stack:</h4><ul class="space-y-2 text-sm" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><span class="text-blue-400 mr-2" data-v-21d6881a>
1✓</span><span data-v-21d6881a>Ingestion (100+ connectors via ingestr)</span></li><li class="flex items-start" data-v-21d6881a><span class="text-blue-400 mr-2" data-v-21d6881a>✓</span><span data-v-21d6881a>SQL &amp; Python transformations</span></li><li class="flex items-start" data-v-21d6881a><span class="text-blue-400 mr-2" data-v-21d6881a>✓</span><span data-v-21d6881a>Built-in orchestration</span></li><li class="flex items-start" data-v-21d6881a><span class="text-blue-400 mr-2" data-v-21d6881a>✓</span><span data-v-21d6881a>Data quality checks</span></li><li class="flex items-start" data-v-21d6881a><span class="text-blue-400 mr-2" data-v-21d6881a>✓</span><span data-v-21d6881a>Column-level lineage</span></li></ul></div><p class="text-sm" data-v-21d6881a><strong class="text-white" data-v-21d6881a>Result:</strong> Single unified tool with consistent configuration, one CLI, one deployment process. Everything works together out of the box. </p></div></div></div>',2)),a("div",N,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm","dark-mode":""},{default:i(()=>[...t[8]||(t[8]=[r("Try Bruin's single-binary deployment",-1)])]),_:1})])])]),a("div",Y,[a("div",V,[t[16]||(t[16]=a("div",{class:"mx-auto max-w-2xl lg:text-center mb-16"},[a("h2",{class:"text-sm uppercase tracking-wide text-gray-500"},"Data Ingestion"),a("p",{class:"mt-2 text-[40px] font-light text-gray-900"},"Getting Data In")],-1)),a("div",W,[t[14]||(t[14]=e('<div class="bg-gray-50 p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-4" data-v-21d6881a>dbt</h3><div class="space-y-4" data-v-21d6881a><div class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-bruin-400 mt-1 mr-3 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="text-gray-900 font-medium" data-v-21d6881a>No Built-in Ingestion</p><p class="text-gray-600 text-sm mt-1" data-v-21d6881a>dbt only handles transformations. You need separate tools for data ingestion.</p></div></div><div class="mt-6 space-y-3" data-v-21d6881a><p class="text-sm text-gray-700 font-medium" data-v-21d6881a>Common Solutions:</p><ul class="space-y-2 text-sm text-gray-600" data-v-21d6881a><li data-v-21d6881a>• Fivetran ($$$$ - expensive, SaaS-only)</li><li data-v-21d6881a>• Airbyte (open-source but requires deployment)</li><li data-v-21d6881a>• Custom Python scripts (maintenance burden)</li><li data-v-21d6881a>• Singer taps (limited connectors)</li><li data-v-21d6881a>• Cloud-native tools (AWS Glue, Azure Data Factory)</li></ul></div><div class="mt-6 bg-yellow-50 border border-yellow-200 rounded-sm p-4" data-v-21d6881a><p class="text-sm text-yellow-800" data-v-21d6881a><strong data-v-21d6881a>Challenge:</strong> Managing separate ingestion infrastructure, different authentication systems, and ensuring coordination between tools. </p></div></div></div>',1)),a("div",H,[t[13]||(t[13]=a("h3",{class:"text-xl font-light text-gray-900 mb-4"},"Bruin",-1)),a("div",R,[t[11]||(t[11]=e('<div class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-green-500 mt-1 mr-3 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="text-gray-900 font-medium" data-v-21d6881a>Built-in Ingestion</p><p class="text-gray-600 text-sm mt-1" data-v-21d6881a>100+ connectors via ingestr, defined with simple YAML configuration.</p></div></div>',1)),a("div",J,[t[10]||(t[10]=a("p",{class:"text-sm text-gray-700 font-medium mb-3"},"Example: Ingest from PostgreSQL",-1)),s(p,{language:"yaml",code:`name: raw.users
2type: ingestr
3parameters:
4  source_connection: postgresql
5  source_table: 'public.users'
6  destination: bigquery`})]),t[12]||(t[12]=a("div",{class:"mt-6 space-y-3"},[a("p",{class:"text-sm text-gray-700 font-medium"},"Included Features:"),a("ul",{class:"space-y-2 text-sm text-gray-600"},[a("li",null,"✓ Incremental loading out of the box"),a("li",null,"✓ Quality checks on ingested data"),a("li",null,"✓ Unified with transformations in same pipeline"),a("li",null,"✓ 1-week SLA for custom connectors")])],-1))])])]),a("div",U,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm"},{default:i(()=>[...t[15]||(t[15]=[r("Check out Bruin's 100+ connectors",-1)])]),_:1})])])]),a("div",$,[a("div",K,[t[18]||(t[18]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-500" data-v-21d6881a>Transformations</h2><p class="mt-2 text-[40px] font-light text-gray-900" data-v-21d6881a>SQL &amp; Python Support</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-8" data-v-21d6881a><div class="bg-white p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>dbt</h3><div class="space-y-6" data-v-21d6881a><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>SQL Transformations</h4><ul class="space-y-2 text-sm text-gray-700" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Excellent SQL support with Jinja templating</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>
6Macros for code reuse</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Materializations (table, view, incremental)</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-yellow-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" data-v-21d6881a></path></svg><span data-v-21d6881a>Jinja can become complex at scale</span></li></ul></div><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>Python Support (dbt-py)</h4><ul class="space-y-2 text-sm text-gray-700" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-yellow-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" data-v-21d6881a></path></svg><span data-v-21d6881a>Limited Python support (added later)</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-yellow-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" data-v-21d6881a></path></svg><span data-v-21d6881a>Requires DataFrame API (platform-specific)</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-bruin-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-21d6881a></path></svg><span data-v-21d6881a>Not all platforms support Python models</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-bruin-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-21d6881a></path></svg><span data-v-21d6881a>Can&#39;t easily mix SQL and Python in same workflow</span></li></ul></div></div></div><div class="bg-white p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>Bruin</h3><div class="space-y-6" data-v-21d6881a><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>SQL Transformations</h4><ul class="space-y-2 text-sm text-gray-700" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Full SQL support with Jinja templating</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Materializations (table, view, incremental)</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Cross-platform compatibility</span></li></ul></div><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>Python Support</h4><ul class="space-y-2 text-sm text-gray-700" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a><strong data-v-21d6881a>First-class Python support</strong> from day one</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Use any Python library (pandas, sklearn, etc.)</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a><strong data-v-21d6881a>Mix SQL &amp; Python</strong> in the same pipeline</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Isolated environments with uv</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Cross-language dependencies</span></li></ul></div><div class="bg-white border border-blue-200 rounded-sm p-4 mt-4" data-v-21d6881a><p class="text-sm text-gray-700" data-v-21d6881a><strong data-v-21d6881a>Perfect for ML/AI:</strong> Combine SQL transformations with Python ML models in the same workflow seamlessly. </p></div></div></div></div>',2)),a("div",Z,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm"},{default:i(()=>[...t[17]||(t[17]=[r("Explore SQL & Python examples on GitHub",-1)])]),_:1})])])]),a("div",X,[a("div",aa,[t[20]||(t[20]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-500" data-v-21d6881a>Performance</h2><p class="mt-2 text-[40px] font-light text-gray-900" data-v-21d6881a>Speed &amp; Scalability</p></div><div class="bg-gray-900 p-8 border-l border-gray-100 mb-12 text-white" data-v-21d6881a><div class="flex items-start mb-4" data-v-21d6881a><svg class="w-8 h-8 text-blue-200 mr-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><h3 class="text-2xl font-light mb-2" data-v-21d6881a>Real-World Results: Buluttan Case Study</h3><p class="text-blue-100 text-lg mb-6" data-v-21d6881a> Weather intelligence company Buluttan migrated from dbt to Bruin and achieved remarkable improvements: </p></div></div><div class="grid grid-cols-1 md:grid-cols-3 gap-6 mt-6" data-v-21d6881a><div class="bg-white/10 backdrop-blur-sm rounded-sm p-6" data-v-21d6881a><div class="text-4xl font-bold mb-2" data-v-21d6881a>3x</div><div class="text-blue-100" data-v-21d6881a>Faster than their dbt pipeline</div></div><div class="bg-white/10 backdrop-blur-sm rounded-sm p-6" data-v-21d6881a><div class="text-4xl font-bold mb-2" data-v-21d6881a>90%</div><div class="text-blue-100" data-v-21d6881a>Faster deployments</div></div><div class="bg-white/10 backdrop-blur-sm rounded-sm p-6" data-v-21d6881a><div class="text-4xl font-bold mb-2" data-v-21d6881a>15 min</div><div class="text-blue-100" data-v-21d6881a>Time to respond to issues</div></div></div><div class="mt-6 pt-6 border-t border-white/20" data-v-21d6881a><p class="text-blue-100 italic" data-v-21d6881a> &quot;I loved the answers from Bruin AI data analyst, it&#39;s exactly the type of contribution I hope to have from it. It got straight to the point.&quot;
6 <span class="block mt-2 not-italic font-semibold" data-v-21d6881a>, Fabio Dellerba, Founder &amp; COO at Digitalmoka</span></p></div></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-8" data-v-21d6881a><div data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>dbt Performance Challenges</h3><div class="space-y-4" data-v-21d6881a><div class="bg-bruin-50 border border-bruin-100 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-bruin-400 mb-2" data-v-21d6881a>Scalability Issues</h4><p class="text-sm text-bruin-400" data-v-21d6881a> As projects grow beyond 400+ models, dbt can become slow and difficult to manage. Large DAGs take longer to compile and run. </p></div><div class="bg-yellow-50 border border-yellow-200 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-yellow-900 mb-2" data-v-21d6881a>Dependency Complexity</h4><p class="text-sm text-yellow-800" data-v-21d6881a> Managing dependencies between hundreds of models becomes cumbersome. Circular dependencies and incorrect ordering can cause pipeline failures. </p></div><div class="bg-yellow-50 border border-yellow-200 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-yellow-900 mb-2" data-v-21d6881a>Warehouse Compute</h4><p class="text-sm text-yellow-800" data-v-21d6881a> All transformations run in the data warehouse, which requires careful optimization to manage compute resources effectively. </p></div><div class="bg-gray-100 border border-gray-200 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-gray-900 mb-2" data-v-21d6881a>Compilation Overhead</h4><p class="text-sm text-gray-700" data-v-21d6881a> dbt compiles Jinja templates before execution, which adds overhead, especially for large projects with many macros. </p></div></div></div><div data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>Bruin Performance Advantages</h3><div class="space-y-4" data-v-21d6881a><div class="bg-green-50 border border-green-200 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-green-900 mb-2" data-v-21d6881a>Written in Go</h4><p class="text-sm text-green-800" data-v-21d6881a> Bruin is built with Go, providing fast execution and low overhead. Compiles to a single binary with no runtime dependencies. </p></div><div class="bg-green-50 border border-green-200 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-green-900 mb-2" data-v-21d6881a>Optimized Orchestration</h4><p class="text-sm text-green-800" data-v-21d6881a> Built-in orchestration means no external scheduler overhead. Dependency resolution is efficient even with complex pipelines. </p></div><div class="bg-green-50 border border-green-200 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-green-900 mb-2" data-v-21d6881a>Faster Deployments</h4><p class="text-sm text-green-800" data-v-21d6881a> Single binary deployment with no external dependencies. Changes can be validated and deployed in minutes, not hours. </p></div><div class="bg-blue-50 border border-blue-200 rounded-sm p-4" data-v-21d6881a><h4 class="font-light text-blue-900 mb-2" data-v-21d6881a>Proven Results</h4><p class="text-sm text-blue-800" data-v-21d6881a> Teams report 3x performance improvements over dbt and significantly faster development cycles. </p></div></div></div></div>',3)),a("div",ta,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm"},{default:i(()=>[...t[19]||(t[19]=[r("See Bruin's performance benchmarks",-1)])]),_:1})])])]),a("div",ea,[a("div",sa,[t[22]||(t[22]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-500" data-v-21d6881a>Data Quality</h2><p class="mt-2 text-[40px] font-light text-gray-900" data-v-21d6881a>Testing &amp; Validation</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-8" data-v-21d6881a><div class="bg-white p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>dbt Tests</h3><div class="space-y-6" data-v-21d6881a><p class="text-gray-700" data-v-21d6881a> dbt provides a testing framework where you define tests in YAML or SQL. Tests are separate from transformations and need to be explicitly run. </p><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>Built-in Tests</h4><ul class="space-y-2 text-sm text-gray-700" data-v-21d6881a><li data-v-21d6881a>• not_null</li><li data-v-21d6881a>• unique</li><li data-v-21d6881a>• accepted_values</li><li data-v-21d6881a>• relationships (foreign keys)</li></ul></div><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>Custom Tests</h4><p class="text-sm text-gray-700 mb-2" data-v-21d6881a> Write custom tests as SQL queries that return failing rows. </p></div><div class="bg-yellow-50 border border-yellow-200 rounded-sm p-4" data-v-21d6881a><p class="text-sm text-yellow-800" data-v-21d6881a><strong data-v-21d6881a>Limitation:</strong> Tests run separately from transformations. Quality checks aren&#39;t inherently part of the pipeline execution flow. </p></div></div></div><div class="bg-white p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>Bruin Quality Checks</h3><div class="space-y-6" data-v-21d6881a><p class="text-gray-700" data-v-21d6881a> Quality checks are <strong data-v-21d6881a>first-class citizens</strong> in Bruin, executed automatically after every transformation. They&#39;re blocking by default, preventing bad data from flowing downstream. </p><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>Built-in Checks</h4><ul class="space-y-2 text-sm text-gray-700" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>not_null, unique, accepted_values, positive, negative, non_negative</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a><strong data-v-21d6881a>Pattern matching:</strong> regex validation</span></li></ul></div><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>Custom SQL Checks</h4><p class="text-sm text-gray-700 mb-2" data-v-21d6881a> Define any custom validation logic in SQL with templating support for incremental checks. </p></div><div data-v-21d6881a><h4 class="font-light text-gray-900 mb-3" data-v-21d6881a>Key Advantages</h4><ul class="space-y-2 text-sm text-gray-700" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" data-v-21d6881a></path></svg><span data-v-21d6881a><strong data-v-21d6881a>Blocking by default:</strong> Bad data can&#39;t proceed</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" data-v-21d6881a></path></svg><span data-v-21d6881a>Works on ingestion, transformation, and any asset type</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" data-v-21d6881a></path></svg><span data-v-21d6881a>Automated alerting on failures</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" data-v-21d6881a></path></svg><span data-v-21d6881a>Optional non-blocking mode for monitoring</span></li></ul></div></div></div></div>',2)),a("div",da,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm"},{default:i(()=>[...t[21]||(t[21]=[r("Try Bruin's built-in quality checks",-1)])]),_:1})])])]),a("div",ia,[a("div",ra,[t[24]||(t[24]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-500" data-v-21d6881a>Orchestration &amp; Deployment</h2><p class="mt-2 text-[40px] font-light text-gray-900" data-v-21d6881a>How You Run Pipelines</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12" data-v-21d6881a><div class="bg-gray-50 p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>dbt</h3><div class="space-y-6" data-v-21d6881a><div class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-bruin-400 mt-1 mr-3 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="text-gray-900 font-medium" data-v-21d6881a>No Built-in Orchestration</p><p class="text-gray-600 text-sm mt-1" data-v-21d6881a> dbt needs an external orchestrator to schedule and manage pipeline runs. </p></div></div><div class="space-y-3" data-v-21d6881a><p class="text-sm text-gray-700 font-medium" data-v-21d6881a>Common Orchestrators:</p><div class="space-y-3" data-v-21d6881a><div class="bg-white border border-gray-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>Apache Airflow</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>Complex setup, steep learning curve, maintenance burden</p></div><div class="bg-white border border-gray-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>Dagster</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>
6Modern but requires separate infrastructure</p></div><div class="bg-white border border-gray-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>Prefect</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>Cloud-first, additional service to manage</p></div><div class="bg-white border border-gray-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>dbt Cloud</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>Managed option with vendor lock-in considerations</p></div></div></div><div class="bg-yellow-50 border border-yellow-200 rounded-sm p-4" data-v-21d6881a><p class="text-sm text-yellow-800" data-v-21d6881a><strong data-v-21d6881a>Challenge:</strong> Setting up and maintaining orchestration infrastructure, learning another tool, managing authentication between systems. </p></div></div></div><div class="bg-white p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>Bruin</h3><div class="space-y-6" data-v-21d6881a><div class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-green-500 mt-1 mr-3 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="text-gray-900 font-medium" data-v-21d6881a>Built-in Orchestration</p><p class="text-gray-600 text-sm mt-1" data-v-21d6881a> No external orchestrator needed. Bruin manages scheduling and execution natively. </p></div></div><div class="space-y-3" data-v-21d6881a><p class="text-sm text-gray-700 font-medium" data-v-21d6881a>Deployment Options:</p><div class="space-y-3" data-v-21d6881a><div class="bg-white border border-blue-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>Local Development</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>Run pipelines locally with <code data-v-21d6881a>bruin run</code></p></div><div class="bg-white border border-blue-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>GitHub Actions</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>CI/CD integration with single binary</p></div><div class="bg-white border border-blue-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>EC2 / VM</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>Self-hosted, no dependencies required</p></div><div class="bg-white border border-blue-200 rounded-sm p-3" data-v-21d6881a><p class="font-medium text-sm text-gray-900" data-v-21d6881a>Bruin Cloud</p><p class="text-xs text-gray-600 mt-1" data-v-21d6881a>Fully managed with governance, lineage, and monitoring</p></div></div></div><div class="bg-green-50 border border-green-200 rounded-sm p-4" data-v-21d6881a><p class="text-sm text-green-800" data-v-21d6881a><strong data-v-21d6881a>Advantage:</strong> Zero orchestration overhead. Deploy anywhere with a single binary. No Airflow, no Kubernetes, no complexity. </p></div></div></div></div>',2)),a("div",na,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm"},{default:i(()=>[...t[23]||(t[23]=[r("Deploy Bruin in minutes",-1)])]),_:1})])])]),a("div",oa,[a("div",la,[t[26]||(t[26]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-400" data-v-21d6881a>Developer Experience</h2><p class="mt-2 text-[40px] font-light text-white" data-v-21d6881a>Tools &amp; Workflow</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-8" data-v-21d6881a><div class="bg-gray-800 p-8" data-v-21d6881a><h3 class="text-xl font-light text-white mb-6" data-v-21d6881a>dbt</h3><div class="space-y-4 text-gray-300" data-v-21d6881a><ul class="space-y-3 text-sm" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>CLI for running models and tests</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Auto-generated documentation</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Large community with packages and examples</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-yellow-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" data-v-21d6881a></path></svg><span data-v-21d6881a>Steep learning curve with Jinja</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-yellow-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" data-v-21d6881a></path></svg><span data-v-21d6881a>Limited IDE support beyond dbt Cloud IDE</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-bruin-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-21d6881a></path></svg><span data-v-21d6881a>No lineage visualization in open-source</span></li></ul></div></div><div class="bg-gray-800 p-8" data-v-21d6881a><h3 class="text-xl font-light text-white mb-6" data-v-21d6881a>Bruin</h3><div class="space-y-4 text-gray-300" data-v-21d6881a><ul class="space-y-3 text-sm" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a><strong data-v-21d6881a>VS Code extension</strong> with visual lineage, docs, and execution</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Powerful CLI with validation, dry-run, and backfills</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>
6Simple installation: single binary, no dependencies</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Built-in lineage visualization (even locally)</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Fast feedback loop with instant validation</span></li><li class="flex items-start" data-v-21d6881a><svg class="w-5 h-5 text-green-400 mr-2 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-21d6881a></path></svg><span data-v-21d6881a>Easy to learn: simpler syntax, less boilerplate</span></li></ul></div></div></div>',2)),a("div",va,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"secondary",size:"sm","dark-mode":""},{default:i(()=>[...t[25]||(t[25]=[r("Get started with Bruin's VS Code extension",-1)])]),_:1})])])]),a("div",ca,[a("div",pa,[t[28]||(t[28]=e('<div class="mx-auto max-w-2xl lg:text-center mb-16" data-v-21d6881a><h2 class="text-sm uppercase tracking-wide text-gray-500" data-v-21d6881a>Decision Guide</h2><p class="mt-2 text-[40px] font-light text-gray-900" data-v-21d6881a>When to Choose Each Tool</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-8" data-v-21d6881a><div class="bg-white p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>Choose dbt if...</h3><ul class="space-y-4" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-500 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>You only need transformations</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Already have ingestion and orchestration figured out with other tools. </p></div></li><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-500 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>Your team is SQL-only</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> You work exclusively with SQL and don&#39;t need Python capabilities. </p></div></li><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-500 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>You want dbt Cloud</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Willing to pay for dbt Cloud&#39;s managed experience and are okay with the ecosystem. </p></div></li><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-500 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>You&#39;re heavily invested</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Already have hundreds of dbt models and migration would require significant effort. </p></div></li></ul></div><div class="bg-white p-8" data-v-21d6881a><h3 class="text-xl font-light text-gray-900 mb-6" data-v-21d6881a>Choose Bruin if...</h3><ul class="space-y-4" data-v-21d6881a><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-600 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>
6You want an end-to-end solution</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Need ingestion, transformation, and quality in one unified tool. </p></div></li><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-600 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>You need SQL + Python</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Building ML models, complex analytics, or need the flexibility of both languages. </p></div></li><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-600 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>You want to move fast</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Don&#39;t want to spend time configuring and maintaining multiple tools. Focus on business logic. </p></div></li><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-600 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>You&#39;re starting fresh or scaling</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Building new pipelines or your dbt setup is getting slow and complex. </p></div></li><li class="flex items-start" data-v-21d6881a><svg class="w-6 h-6 text-blue-600 mr-3 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-21d6881a><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" data-v-21d6881a></path></svg><div data-v-21d6881a><p class="font-medium text-gray-900" data-v-21d6881a>You want better performance</p><p class="text-sm text-gray-600 mt-1" data-v-21d6881a> Looking for 3x faster execution and simpler infrastructure (proven by real teams). </p></div></li></ul></div></div>',2)),a("div",ma,[s(d,{href:"https://github.com/bruin-data/bruin",external:"",variant:"primary",size:"lg"},{default:i(()=>[...t[27]||(t[27]=[r("Try Bruin today on GitHub",-1)])]),_:1})])])])])}}},ya=m(ua,[["__scopeId","data-v-21d6881a"]]);export{ya as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.