1"use strict";(self.webpackChunkdbdeux_docs=self.webpackChunkdbdeux_docs||[]).push([["4008"],{1600(e,t,n){n.r(t),n.d(t,{metadata:()=>r,default:()=>G,frontMatter:()=>P,contentTitle:()=>T,toc:()=>_,assets:()=>z});var r=JSON.parse('{"id":"features/data-products","title":"Atlas Data Products","description":"Turn tables into governed, discoverable data products. Atlas Data Products lets you bundle dbt models, metrics, and exposures into curated products with ownership, SLAs, and maturity tracking, all defined in Git.","source":"@site/docs/features/data-products.mdx","sourceDirName":"features","slug":"/features/data-products","permalink":"/docs/features/data-products","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":17,"frontMatter":{"sidebar_position":17},"sidebar":"docsSidebar","previous":{"title":"Semantic Layer","permalink":"/docs/features/semantic-layer"},"next":{"title":"dbt Mesh and Cross-Project References","permalink":"/docs/features/mesh"}}'),s=n(4848),i=n(8453),a=n(6540);let d=[{name:"revenue_analytics",title:"Revenue Analytics",domain:"Finance",owner:"data-team",maturity:"production",access:"internal",sla:"gold",metrics:8,models:5,description:"Core revenue metrics including MRR, ARR, churn, and expansion revenue"},{name:"customer_360",title:"Customer 360",domain:"Marketing",owner:"analytics",maturity:"production",access:"public",sla:"gold",metrics:12,models:7,description:"Unified customer profile with LTV, segments, and engagement scoring"},{name:"supply_chain",title:"Supply Chain Ops",domain:"Operations",owner:"ops-analytics",maturity:"beta",access:"internal",sla:"silver",metrics:5,models:4,description:"Inventory levels, lead times, and supplier performance tracking"},{name:"product_usage",title:"Product Usage",domain:"Product",owner:"product-analytics",maturity:"draft",access:"internal",sla:"bronze",metrics:3,models:2,description:"Feature adoption, session metrics, and funnel analysis"}],l={production:{bg:"rgba(63,185,80,0.12)",text:"#3fb950"},beta:{bg:"rgba(210,153,34,0.12)",text:"#d29922"},draft:{bg:"rgba(139,148,158,0.12)",text:"#8b949e"}},o={gold:{bg:"rgba(210,168,34,0.12)",text:"#d2a822",icon:"\u2605"},silver:{bg:"rgba(139,148,158,0.12)",text:"#8b949e",icon:"\u2605"},bronze:{bg:"rgba(180,130,90,0.12)",text:"#b4825a",icon:"\u2605"}},c={maxWidth:740,margin:"2rem auto",fontFamily:"-apple-system, BlinkMacSystemFont, sans-serif"},h={display:"flex",gap:20,marginBottom:20},u={flex:1,padding:"14px 16px",borderRadius:10,border:"1px solid #21262d",background:"#0d1117",display:"flex",alignItems:"center",gap:10},x={width:36,height:36,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",fontSize:16},p={fontSize:22,fontWeight:700,color:"#e6edf3",lineHeight:1},g={fontSize:11,color:"#8b949e"},j={display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},m={border:"1px solid #21262d",borderRadius:10,padding:"16px 18px",background:"#0d1117",cursor:"pointer",transition:"all 0.25s ease"},f={fontSize:15,fontWeight:700,color:"#e6edf3",marginBottom:4},b={fontSize:12,color:"#8b949e",lineHeight:1.5,marginBottom:12},v={display:"flex",gap:6,flexWrap:"wrap",marginBottom:10},y={padding:"2px 8px",borderRadius:4,fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:.3},w={display:"flex",gap:14,fontSize:11,color:"#484f58"},S={display:"flex",alignItems:"center",gap:4},k={marginTop:16,border:"1px solid #21262d",borderRadius:10,background:"#0d1117",overflow:"hidden"},A={padding:"20px 20px 16px",borderBottom:"1px solid #21262d",background:"linear-gradient(135deg, rgba(88,166,255,0.06) 0%, rgba(210,168,255,0.06) 100%)"},C={padding:"16px 20px"},R={fontSize:10,textTransform:"uppercase",letterSpacing:1,color:"#484f58",fontWeight:600,marginBottom:8,marginTop:16},D={display:"flex",alignItems:"center",gap:8,padding:"6px 0",fontSize:12,color:"#e6edf3",borderBottom:"1px solid #21262d"},I={fontSize:9,padding:"2px 6px",borderRadius:3,fontWeight:600,textTransform:"uppercase"},M={marginLeft:"auto",fontSize:10,fontWeight:600,display:"flex",alignItems:"center",gap:3};function L(){let e=(0,a.useRef)(null),[t,n]=(0,a.useState)(!1),[r,i]=(0,a.useState)(null),[L,P]=(0,a.useState)(0);(0,a.useEffect)(()=>{let t=e.current;if(!t)return;let r=new IntersectionObserver(([e])=>{e.isIntersecting&&n(!0)},{threshold:.1});return r.observe(t),()=>r.disconnect()},[]),(0,a.useEffect)(()=>
1{if(!t)return;let e=0,n=setInterval(()=>{P(++e),e>=d.length&&clearInterval(n)},200);return()=>clearInterval(n)},[t]);let T=d.reduce((e,t)=>e+t.metrics,0),z=d.reduce((e,t)=>e+t.models,0),_=null!==r?d[r]:null,B=_?[...Array.from({length:_.metrics},(e,t)=>({type:"metric",name:`metric_${t+1}`,resolved:!0})),...Array.from({length:_.models},(e,t)=>({type:"model",name:`model_${t+1}`,resolved:t<_.models-("draft"===_.maturity)}))].slice(0,6):[];return(0,s.jsxs)("div",{ref:e,style:c,children:[(0,s.jsx)("div",{style:{...h,opacity:+!!t,transform:t?"translateY(0)":"translateY(12px)",transition:"opacity 0.5s ease, transform 0.5s ease"},children:[{icon:"\u25A6",color:"#58a6ff",bg:"rgba(88,166,255,0.12)",num:d.length,label:"Data Products"},{icon:"\u03A3",color:"#d2a8ff",bg:"rgba(210,168,255,0.12)",num:T,label:"Governed Metrics"},{icon:"\u229E",color:"#3fb950",bg:"rgba(63,185,80,0.12)",num:z,label:"Bundled Models"}].map(e=>(0,s.jsxs)("div",{style:u,children:[(0,s.jsx)("span",{style:{...x,background:e.bg,color:e.color},children:e.icon}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:p,children:e.num}),(0,s.jsx)("div",{style:g,children:e.label})]})]},e.label))}),(0,s.jsx)("div",{style:j,children:d.map((e,t)=>{let n=l[e.maturity],a=o[e.sla],d=t<L;return(0,s.jsxs)("div",{style:{...m,opacity:+!!d,transform:d?"translateY(0)":"translateY(16px)",transition:"opacity 0.35s ease, transform 0.35s ease, border-color 0.2s ease",borderColor:r===t?"#58a6ff":"#21262d"},onClick:()=>i(r===t?null:t),children:[(0,s.jsxs)("div",{style:v,children:[(0,s.jsx)("span",{style:{...y,background:n.bg,color:n.text},children:e.maturity}),(0,s.jsx)("span",{style:{...y,background:"rgba(88,166,255,0.1)",color:"#58a6ff"},children:e.access}),(0,s.jsxs)("span",{style:{...y,background:a.bg,color:a.text},children:[a.icon," ",e.sla]})]}),(0,s.jsx)("div",{style:f,children:e.title}),(0,s.jsx)("div",{style:b,children:e.description}),(0,s.jsxs)("div",{style:w,children:[(0,s.jsx)("span",{style:S,children:e.domain}),(0,s.jsxs)("span",{style:S,children:[e.metrics," metrics"]}),(0,s.jsxs)("span",{style:S,children:[e.models," models"]})]})]},e.name)})}),_&&(0,s.jsxs)("div",{style:{...k,opacity:1,animation:"fadeSlideIn 0.3s ease"},children:[(0,s.jsxs)("div",{style:A,children:[(0,s.jsx)("div",{style:f,children:_.title}),(0,s.jsxs)("div",{style:{fontSize:12,color:"#8b949e",marginTop:4},children:[_.domain," / ",_.owner]}),(0,s.jsxs)("div",{style:{...v,marginTop:10},children:[(0,s.jsx)("span",{style:{...y,background:l[_.maturity].bg,color:l[_.maturity].text},children:_.maturity}),(0,s.jsxs)("span",{style:{...y,background:o[_.sla].bg,color:o[_.sla].text},children:["SLA: ",_.sla]}),(0,s.jsx)("span",{style:{...y,background:"rgba(88,166,255,0.1)",color:"#58a6ff"},children:_.access})]})]}),(0,s.jsxs)("div",{style:C,children:[(0,s.jsx)("div",{style:R,children:"Contains"}),B.map((e,t)=>(0,s.jsxs)("div",{style:D,children:[(0,s.jsx)("span",{style:{...I,background:"metric"===e.type?"rgba(210,168,255,0.1)":"rgba(63,185,80,0.1)",color:"metric"===e.type?"#d2a8ff":"#3fb950",border:`1px solid ${"metric"===e.type?"rgba(210,168,255,0.2)":"rgba(63,185,80,0.2)"}`},children:e.type}),(0,s.jsx)("span",{style:{fontFamily:"Consolas, Monaco, monospace",fontSize:12},children:e.name}),(0,s.jsx)("span",{style:{...M,color:e.resolved?"#3fb950":"#d29922"},children:e.resolved?"\u2714 Resolved":"\u26A0 Unresolved"})]},t))]})]})]})}let P={sidebar_position:17},T="Atlas Data Products",z={},_=[{value:"Overview",id:"overview",level:2},{value:"Defining a Data Product",id:"defining-a-data-product",level:2},{value:"Catalog Grid",id:"catalog-grid",level:2},{value:"Governance Metadata",id:"governance-metadata",level:2},{value:"Maturity",id:"maturity",level:3},{value:"Access Level",id:"access-level",level:3},{value:"SLA Tiers",id:"sla-tiers",level:3},{value:"Detail Sheet",id:"detail-sheet",level:2},{value:"Reference Validation",id:"reference-validation",level:2},{value:"Sharing Data Products",id:"sharing-data-products",level:2},{value:"How It Fits Together",id:"how-it-fits-together",level:2},{value:"How It Compares",id:"how-it-compares",level:2}];function B(e){let t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"atlas-data-products",children:"Atlas Data Products"})}),"\n",(0,s.jsx)(t.p,{children:"Turn tables into governed, discoverable data products. Atlas Data Products lets you bundle dbt models, metrics, and exposures into curated products with ownership, SLAs, and maturity tracking, all defined in Git."}),"\n",(0,s.jsx)(L,{}),"\n",(0,s.jsx)(t.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(t.p,{children:["Data Products live in the left navigation under ",(0,s.jsx)(t.strong,{children:"Atlas Data Products"}),". Each product is defined in a ",(0,s.jsx)(t.code,{children:"*.dataproduct.yml"})," file committed to your repository (the same Git-native approach as the Semantic Layer). The catalog page shows a searchable grid of all products with stats, filters, and a detail sheet for deep inspection."]}),"\n",(0,s.jsx)(t.h2,{id:"defining-a-data-product",children:"Defining a Data Product"}),"\n",(0,s.jsx)(t.p,{children:"A data product is a YAML file that bundles existing project assets into a governed package:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-yaml",children:"data_product:\n name: revenue_analytics\n title: Revenue Analytics\n description: Core revenue metrics for finance reporting\n owner: data-team\n domain: Finance\n maturity: production\n access: internal\n sla:\n tier: gold\n freshness: 1h\n contains:\n metrics:\n - total_revenue\n - monthly_recurring_revenue\n - churn_rate\n models:\n - fct_orders\n - dim_customers\n exposures:\n - finance_dashboard\n links:\n - label: Finance Dashboard\n url: https://dashboard.example.com/finance\n - label: Runbook\n url: https://wiki.example.com/revenue-runbook\n"})}),"\n",(0,s.jsx)(t.p,{children:"The product itself carries no metric math. It points at metrics defined in the Semantic Layer, so there is one definition governed once."}),"\n",(0,s.jsx)(t.h2,{id:"catalog-grid",children:"Catalog Grid"}),"\n",(0,s.jsx)(t.p,{children:"The Data Products page displays:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Stats bar"})," with totals for products, governed metrics, and bundled models"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Search"})," to find products by name, domain, or description"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Maturity filter"})," to show only production, beta, draft, or deprecated products"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Product cards"})," showing title, description, governance badges, and asset counts"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Click any card to open the detail sheet."}),"\n",(0,s.jsx)(t.h2,{id:"governance-metadata",children:"Governance Metadata"}),"\n",(0,s.jsx)(t.p,{children:"Each product carries governance attributes that help consumers understand trust and expectations:"}),"\n",(0,s.jsx)(t.h3,{id:"maturity",children:"Maturity"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Level"}),(0,s.jsx)(t.th,{children:"Meaning"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Production"})}),(0,s.jsx)(t.td,{children:"Stable, tested, and safe for downstream consumers"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Beta"})}),(0,s.jsx)(t.td,{children:"Feature-complete but still being validated"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Draft"})}),(0,s.jsx)(t.td,{children:"Work in progress, not ready for consumption"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Deprecated"})}),(0,s.jsx)(t.td,{children:"Scheduled for removal, consumers should migrate"})]})]})]}),"\n",(0,s.jsx)(t.h3,{id:"access-level",children:"Access Level"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Level"}),(0,s.jsx)(t.th,{children:"Meaning"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Internal"})}),(0,s.jsx)(t.td,{children:"Available to your organization"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Public"})}),(0,s.jsx)(t.td,{children:"Shareable outside your organization"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Restricted"})}),(0,s.jsx)(t.td,{children:"Limited to specific teams or roles"})]})]})]}),"\n",(0,s.jsx)(t.h3,{id:"sla-tiers",children:"SLA Tiers"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Tier"}),(0,s.jsx)(t.th,{children:"Meaning"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Gold"})}
1),(0,s.jsx)(t.td,{children:"Highest freshness guarantee, mission-critical data"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Silver"})}),(0,s.jsx)(t.td,{children:"Standard freshness, suitable for most reporting"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Bronze"})}),(0,s.jsx)(t.td,{children:"Best-effort freshness, suitable for exploration"})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:["Each tier can specify a ",(0,s.jsx)(t.strong,{children:"freshness"})," interval (e.g., 1h, 6h, 24h) representing how often the underlying data should be refreshed."]}),"\n",(0,s.jsx)(t.h2,{id:"detail-sheet",children:"Detail Sheet"}),"\n",(0,s.jsx)(t.p,{children:"Click a product card to open the detail sheet, which shows:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Hero header"})," with title, domain, owner, and governance badges"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Contains section"}),": all bundled metrics, models, dimensions, and exposures with resolution status"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Resolution health"}),": each reference is checked against the live metric catalog and project manifest. Unresolved references (a metric that no longer exists, a model that was renamed) are flagged with a warning"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Consumer links"}),": dashboards, documentation, and runbook URLs"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"reference-validation",children:"Reference Validation"}),"\n",(0,s.jsx)(t.p,{children:"Data products are automatically cross-referenced against your live project:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Metrics are checked against the Semantic Layer catalog"}),"\n",(0,s.jsx)(t.li,{children:"Models are checked against the dbt manifest"}),"\n",(0,s.jsx)(t.li,{children:"Unresolved references surface as warnings in the detail sheet"}),"\n",(0,s.jsx)(t.li,{children:"A product cannot silently claim a metric that does not exist"}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"This keeps the catalog honest as the project evolves."}),"\n",(0,s.jsx)(t.h2,{id:"sharing-data-products",children:"Sharing Data Products"}),"\n",(0,s.jsxs)(t.p,{children:["Data products can be shared externally using ",(0,s.jsx)(t.a,{href:"/docs/features/share-links",children:"Share Links"}),":"]}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Click ",(0,s.jsx)(t.strong,{children:"Share"})," on any product card"]}),"\n",(0,s.jsx)(t.li,{children:"Choose between sharing the full catalog or a single product"}),"\n",(0,s.jsx)(t.li,{children:"Generate a tokenized link with an optional expiry"}),"\n",(0,s.jsx)(t.li,{children:"Recipients can view the product details without logging in"}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"how-it-fits-together",children:"How It Fits Together"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Semantic Layer"}),": Data products reference governed metrics, so definitions stay consistent"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Slimmer CI"}),": Breaking metric changes that affect a data product are caught in PR validation"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Atlas AI"}),": Atlas understands data product structure and can answer questions about product contents"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Atlas Catalog"}),": Browse documentation for the models that data products reference in the ",(0,s.jsx)(t.a,{href:"/docs/features/atlas-catalog",children:"Atlas Catalog"})]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Scheduling"}),": Scheduled builds keep the underlying models fresh per the product SLA"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"how-it-compares",children:"How It Compares"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Capability"}),(0,s.jsx)(t.th,{children:"dbdeux Data Products"}),(0,s.jsx)(t.th,{children:"dbt Exposures"}),(0,s.jsx)(t.th,{children:"Data catalogs (Atlan, Collibra)"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Definition format"})}),(0,s.jsx)(t.td,{children:"Git-native YAML in your dbt project"}),(0,s.jsx)(t.td,{children:"dbt exposure YAML"}),(0,s.jsx)(t.td,{children:"Web UI forms"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Governance metadata"})}),(0,s.jsx)(t.td,{children:"Maturity, access level, SLA tiers, domain, and owner"}),(0,s.jsx)(t.td,{children:"Owner and description only"}
1),(0,s.jsx)(t.td,{children:"Varies by vendor"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Reference validation"})}),(0,s.jsx)(t.td,{children:"Automatic cross-check against live metrics and manifest"}),(0,s.jsx)(t.td,{children:"No validation"}),(0,s.jsx)(t.td,{children:"Manual tagging"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Sharing"})}),(0,s.jsx)(t.td,{children:"Tokenized links with no login required"}),(0,s.jsx)(t.td,{children:"Not available"}),(0,s.jsx)(t.td,{children:"Requires platform license"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"AI integration"})}),(0,s.jsx)(t.td,{children:"Atlas AI understands product structure and contents"}),(0,s.jsx)(t.td,{children:"Not available"}),(0,s.jsx)(t.td,{children:"Varies"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Cost"})}),(0,s.jsx)(t.td,{children:"Included in platform"}),(0,s.jsx)(t.td,{children:"Included in dbt Cloud"}),(0,s.jsx)(t.td,{children:"Significant additional licensing"})]})]})]})]})}function G(e={}){let{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(B,{...e})}):B(e)}},8453(e,t,n){n.d(t,{R:()=>a,x:()=>d});var r=n(6540);let s={},i=r.createContext(s);function a(e){let t=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]);
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.