[{"data":1,"prerenderedAt":1543},["ShallowReactive",2],{"tutorial-bruin-templates/initialize-template":3,"content-query-CUTpUFw6mw":513,"content-query-x7eameAQjh":894},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"readingTime":11,"category":12,"tags":13,"difficulty":15,"module":5,"step":16,"subSteps":17,"learnMore":18,"author":25,"body":29,"_type":507,"_id":508,"_source":509,"_file":510,"_stem":511,"_extension":512},"/tutorials/bruin-templates/initialize-template","bruin-templates",false,"","Initialize from a Template","Use bruin init to scaffold a pipeline from a template - either interactively or by specifying the template name directly.","2026-04-15",4,"Tutorial",[14],"Bruin CLI","Beginner",1,true,[19,22],{"label":20,"url":21},"Bruin init command","https://getbruin.com/docs/bruin/commands/init.html",{"label":23,"url":24},"Bruin project structure (docs)","https://getbruin.com/docs/bruin/core-concepts/project.html",{"name":26,"role":27,"image":28},"Bruin Team","Bruin Data","/bruin-logo-2025.svg",{"type":30,"children":31,"toc":496},"root",[32,41,56,62,67,73,80,89,94,121,126,131,137,145,150,179,200,206,211,221,226,295,301,313,417,428,479,485,490],{"type":33,"tag":34,"props":35,"children":37},"element","h2",{"id":36},"what-youll-do",[38],{"type":39,"value":40},"text","What you'll do",{"type":33,"tag":42,"props":43,"children":44},"p",{},[45,47,54],{"type":39,"value":46},"Use ",{"type":33,"tag":48,"props":49,"children":51},"code",{"className":50},[],[52],{"type":39,"value":53},"bruin init",{"type":39,"value":55}," to create a new pipeline project from a template, then explore the generated project structure.",{"type":33,"tag":34,"props":57,"children":59},{"id":58},"why-this-step-matters",[60],{"type":39,"value":61},"Why this step matters",{"type":33,"tag":42,"props":63,"children":64},{},[65],{"type":39,"value":66},"Templates eliminate boilerplate. Instead of manually creating configuration files, asset definitions, and pipeline configs, a single command gives you a working project with everything wired up. Understanding how to pick and use templates is the fastest way to start building with Bruin.",{"type":33,"tag":34,"props":68,"children":70},{"id":69},"instructions",[71],{"type":39,"value":72},"Instructions",{"type":33,"tag":74,"props":75,"children":77},"h3",{"id":76},"_1-browse-available-templates",[78],{"type":39,"value":79},"1) Browse available templates",{"type":33,"tag":42,"props":81,"children":82},{},[83],{"type":33,"tag":84,"props":85,"children":88},"img",{"alt":86,"src":87},"bruin init interactive wizard","/img/learn/tutorials/init-wizard.gif",[],{"type":33,"tag":42,"props":90,"children":91},{},[92],{"type":39,"value":93},"Navigate to the folder where you want to create your project and run:",{"type":33,"tag":95,"props":96,"children":100},"pre",{"className":97,"code":98,"language":99,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","bruin init\n","bash",[101],{"type":33,"tag":48,"props":102,"children":103},{"__ignoreMap":7},[104],{"type":33,"tag":105,"props":106,"children":108},"span",{"class":107,"line":16},"line",[109,115],{"type":33,"tag":105,"props":110,"children":112},{"style":111},"--shiki-default:#B392F0",[113],{"type":39,"value":114},"bruin",{"type":33,"tag":105,"props":116,"children":118},{"style":117},"--shiki-default:#9ECBFF",[119],{"type":39,"value":120}," init\n",{"type":33,"tag":42,"props":122,"children":123},{},[124],{"type":39,"value":125},"You'll see an interactive menu listing all available templates. Use the arrow keys to browse through them and press Enter to select one.",{"type":33,"tag":42,"props":127,"children":128},{},[129],{"type":39,"value":130},"Each template is designed for a specific use case - some pull data from APIs, others connect to databases like Oracle or PostgreSQL.",{"type":33,"tag":74,"props":132,"children":134},{"id":133},"_2-initialize-with-a-specific-template",[135],{"type":39,"value":136},"2) Initialize with a specific template",{"type":33,"tag":42,"props":138,"children":139},{},[140],{"type":33,"tag":84,"props":141,"children":144},{"alt":142,"src":143},"bruin init with template name","/img/learn/tutorials/init.gif",[],{"type":33,"tag":42,"props":146,"children":147},{},[148],{"type":39,"value":149},"If you already know which template you want, skip the interactive menu by specifying the template name and folder directly:",{"type":33,"tag":95,"props":151,"children":153},{"className":97,"code":152,"language":99,"meta":7,"style":7},"bruin init frankfurter FXmetrics\n",[154],{"type":33,"tag":48,"props":155,"children":156},{"__ignoreMap":7},[157],{"type":33,"tag":105,"props":158,"children":159},{"class":107,"line":16},[160,164,169,174],{"type":33,"tag":105,"props":161,"children":162},{"style":111},[163],{"type":39,"value":114},{"type":33,"tag":105,"props":165,"children":166},{"style":117},[167],{"type":39,"value":168}," init",{"type":33,"tag":105,"props":170,"children":171},{"style":117},[172],{"type":39,"value":173}," frankfurter",{"type":33,"tag":105,"props":175,"children":176},{"style":117},[177],{"type":39,"value":178}," FXmetrics\n",{"type":33,"tag":42,"props":180,"children":181},{},[182,184,190,192,198],{"type":39,"value":183},"This creates a project called ",{"type":33,"tag":48,"props":185,"children":187},{"className":186},[],[188],{"type":39,"value":189},"FXmetrics",{"type":39,"value":191}," from the ",{"type":33,"tag":48,"props":193,"children":195},{"className":194},[],[196],{"type":39,"value":197},"frankfurter",{"type":39,"value":199}," template. The Frankfurter template ingests foreign exchange rate data from the open Frankfurter API - no credentials needed.",{"type":33,"tag":74,"props":201,"children":203},{"id":202},"_3-explore-the-project-structure",[204],{"type":39,"value":205},"3) Explore the project structure",{"type":33,"tag":42,"props":207,"children":208},{},[209],{"type":39,"value":210},"After initialization, your project looks like this:",{"type":33,"tag":95,"props":212,"children":216},{"className":213,"code":215,"language":39},[214],"language-text","FXmetrics/\n├── assets/\n│   ├── fx_rates.asset.yml        # ingestr: fetches exchange rate data\n│   └── exchange_rate_summary.sql # SQL: transforms the raw data\n├── .bruin.yml                     # connections and environment config\n├── pipeline.yml                   # pipeline name and defaults\n└── README.md                      # template documentation\n",[217],{"type":33,"tag":48,"props":218,"children":219},{"__ignoreMap":7},[220],{"type":39,"value":215},{"type":33,"tag":42,"props":222,"children":223},{},[224],{"type":39,"value":225},"Key files:",{"type":33,"tag":227,"props":228,"children":229},"ul",{},[230,246,260,278],{"type":33,"tag":231,"props":232,"children":233},"li",{},[234,244],{"type":33,"tag":235,"props":236,"children":237},"strong",{},[238],{"type":33,"tag":48,"props":239,"children":241},{"className":240},[],[242],{"type":39,"value":243},".bruin.yml",{"type":39,"value":245}," — Defines your connections and environments. The template pre-fills this with sensible defaults.",{"type":33,"tag":231,"props":247,"children":248},{},[249,258],{"type":33,"tag":235,"props":250,"children":251},{},[252],{"type":33,"tag":48,"props":253,"children":255},{"className":254},[],[256],{"type":39,"value":257},"pipeline.yml",{"type":39,"value":259}," — Sets the pipeline name and links it to the default connections.",{"type":33,"tag":231,"props":261,"children":262},{},[263,268,270,276],{"type":33,"tag":235,"props":264,"children":265},{},[266],{"type":39,"value":267},"Ingestr assets",{"type":39,"value":269}," (",{"type":33,"tag":48,"props":271,"children":273},{"className":272},[],[274],{"type":39,"value":275},".asset.yml",{"type":39,"value":277},") — Define where to pull data from and where to store it.",{"type":33,"tag":231,"props":279,"children":280},{},[281,286,287,293],{"type":33,"tag":235,"props":282,"children":283},{},[284],{"type":39,"value":285},"SQL assets",{"type":39,"value":269},{"type":33,"tag":48,"props":288,"children":290},{"className":289},[],[291],{"type":39,"value":292},".sql",{"type":39,"value":294},") — Transform the ingested data into analytical views.",{"type":33,"tag":74,"props":296,"children":298},{"id":297},"_4-review-the-configuration",[299],{"type":39,"value":300},"4) Review the configuration",{"type":33,"tag":42,"props":302,"children":303},{},[304,306,311],{"type":39,"value":305},"Open ",{"type":33,"tag":48,"props":307,"children":309},{"className":308},[],[310],{"type":39,"value":243},{"type":39,"value":312}," to see the pre-configured connections. The Frankfurter template typically sets up a DuckDB connection for local storage:",{"type":33,"tag":95,"props":314,"children":318},{"className":315,"code":316,"language":317,"meta":7,"style":7},"language-yaml shiki shiki-themes github-dark","environments:\n  default:\n    connections:\n      duckdb:\n        - name: \"duckdb-default\"\n          path: \"fx.db\"\n","yaml",[319],{"type":33,"tag":48,"props":320,"children":321},{"__ignoreMap":7},[322,337,350,363,375,399],{"type":33,"tag":105,"props":323,"children":324},{"class":107,"line":16},[325,331],{"type":33,"tag":105,"props":326,"children":328},{"style":327},"--shiki-default:#85E89D",[329],{"type":39,"value":330},"environments",{"type":33,"tag":105,"props":332,"children":334},{"style":333},"--shiki-default:#E1E4E8",[335],{"type":39,"value":336},":\n",{"type":33,"tag":105,"props":338,"children":340},{"class":107,"line":339},2,[341,346],{"type":33,"tag":105,"props":342,"children":343},{"style":327},[344],{"type":39,"value":345},"  default",{"type":33,"tag":105,"props":347,"children":348},{"style":333},[349],{"type":39,"value":336},{"type":33,"tag":105,"props":351,"children":353},{"class":107,"line":352},3,[354,359],{"type":33,"tag":105,"props":355,"children":356},{"style":327},[357],{"type":39,"value":358},"    connections",{"type":33,"tag":105,"props":360,"children":361},{"style":333},[362],{"type":39,"value":336},{"type":33,"tag":105,"props":364,"children":365},{"class":107,"line":11},[366,371],{"type":33,"tag":105,"props":367,"children":368},{"style":327},[369],{"type":39,"value":370},"      duckdb",{"type":33,"tag":105,"props":372,"children":373},{"style":333},[374],{"type":39,"value":336},{"type":33,"tag":105,"props":376,"children":378},{"class":107,"line":377},5,[379,384,389,394],{"type":33,"tag":105,"props":380,"children":381},{"style":333},[382],{"type":39,"value":383},"        - ",{"type":33,"tag":105,"props":385,"children":386},{"style":327},[387],{"type":39,"value":388},"name",{"type":33,"tag":105,"props":390,"children":391},{"style":333},[392],{"type":39,"value":393},": ",{"type":33,"tag":105,"props":395,"children":396},{"style":117},[397],{"type":39,"value":398},"\"duckdb-default\"\n",{"type":33,"tag":105,"props":400,"children":402},{"class":107,"line":401},6,[403,408,412],{"type":33,"tag":105,"props":404,"children":405},{"style":327},[406],{"type":39,"value":407},"          path",{"type":33,"tag":105,"props":409,"children":410},{"style":333},[411],{"type":39,"value":393},{"type":33,"tag":105,"props":413,"children":414},{"style":117},[415],{"type":39,"value":416},"\"fx.db\"\n",{"type":33,"tag":42,"props":418,"children":419},{},[420,421,426],{"type":39,"value":305},{"type":33,"tag":48,"props":422,"children":424},{"className":423},[],[425],{"type":39,"value":257},{"type":39,"value":427}," to see the pipeline configuration:",{"type":33,"tag":95,"props":429,"children":431},{"className":315,"code":430,"language":317,"meta":7,"style":7},"name: FXmetrics\ndefault_connections:\n  duckdb: \"duckdb-default\"\n",[432],{"type":33,"tag":48,"props":433,"children":434},{"__ignoreMap":7},[435,451,463],{"type":33,"tag":105,"props":436,"children":437},{"class":107,"line":16},[438,442,446],{"type":33,"tag":105,"props":439,"children":440},{"style":327},[441],{"type":39,"value":388},{"type":33,"tag":105,"props":443,"children":444},{"style":333},[445],{"type":39,"value":393},{"type":33,"tag":105,"props":447,"children":448},{"style":117},[449],{"type":39,"value":450},"FXmetrics\n",{"type":33,"tag":105,"props":452,"children":453},{"class":107,"line":339},[454,459],{"type":33,"tag":105,"props":455,"children":456},{"style":327},[457],{"type":39,"value":458},"default_connections",{"type":33,"tag":105,"props":460,"children":461},{"style":333},[462],{"type":39,"value":336},{"type":33,"tag":105,"props":464,"children":465},{"class":107,"line":352},[466,471,475],{"type":33,"tag":105,"props":467,"children":468},{"style":327},[469],{"type":39,"value":470},"  duckdb",{"type":33,"tag":105,"props":472,"children":473},{"style":333},[474],{"type":39,"value":393},{"type":33,"tag":105,"props":476,"children":477},{"style":117},[478],{"type":39,"value":398},{"type":33,"tag":34,"props":480,"children":482},{"id":481},"what-just-happened",[483],{"type":39,"value":484},"What just happened",{"type":33,"tag":42,"props":486,"children":487},{},[488],{"type":39,"value":489},"You scaffolded a complete pipeline project from a template. The project has pre-configured connections, ingestr assets for data ingestion, and SQL assets for transformation. Next, you'll run the pipeline and explore the results.",{"type":33,"tag":491,"props":492,"children":493},"style",{},[494],{"type":39,"value":495},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":339,"depth":339,"links":497},[498,499,500,506],{"id":36,"depth":339,"text":40},{"id":58,"depth":339,"text":61},{"id":69,"depth":339,"text":72,"children":501},[502,503,504,505],{"id":76,"depth":352,"text":79},{"id":133,"depth":352,"text":136},{"id":202,"depth":352,"text":205},{"id":297,"depth":352,"text":300},{"id":481,"depth":339,"text":484},"markdown","content:tutorials:bruin-templates:initialize-template.md","content","tutorials/bruin-templates/initialize-template.md","tutorials/bruin-templates/initialize-template","md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"readingTime":11,"category":12,"tags":514,"difficulty":15,"module":5,"step":16,"subSteps":17,"learnMore":515,"author":518,"body":519,"_type":507,"_id":508,"_source":509,"_file":510,"_stem":511,"_extension":512},[14],[516,517],{"label":20,"url":21},{"label":23,"url":24},{"name":26,"role":27,"image":28},{"type":30,"children":520,"toc":883},[521,525,535,539,543,547,551,557,561,578,582,586,590,596,600,625,641,645,649,657,661,716,720,730,814,824,871,875,879],{"type":33,"tag":34,"props":522,"children":523},{"id":36},[524],{"type":39,"value":40},{"type":33,"tag":42,"props":526,"children":527},{},[528,529,534],{"type":39,"value":46},{"type":33,"tag":48,"props":530,"children":532},{"className":531},[],[533],{"type":39,"value":53},{"type":39,"value":55},{"type":33,"tag":34,"props":536,"children":537},{"id":58},[538],{"type":39,"value":61},{"type":33,"tag":42,"props":540,"children":541},{},[542],{"type":39,"value":66},{"type":33,"tag":34,"props":544,"children":545},{"id":69},[546],{"type":39,"value":72},{"type":33,"tag":74,"props":548,"children":549},{"id":76},[550],{"type":39,"value":79},{"type":33,"tag":42,"props":552,"children":553},{},[554],{"type":33,"tag":84,"props":555,"children":556},{"alt":86,"src":87},[],{"type":33,"tag":42,"props":558,"children":559},{},[560],{"type":39,"value":93},{"type":33,"tag":95,"props":562,"children":563},{"className":97,"code":98,"language":99,"meta":7,"style":7},[564],{"type":33,"tag":48,"props":565,"children":566},{"__ignoreMap":7},[567],{"type":33,"tag":105,"props":568,"children":569},{"class":107,"line":16},[570,574],{"type":33,"tag":105,"props":571,"children":572},{"style":111},[573],{"type":39,"value":114},{"type":33,"tag":105,"props":575,"children":576},{"style":117},[577],{"type":39,"value":120},{"type":33,"tag":42,"props":579,"children":580},{},[581],{"type":39,"value":125},{"type":33,"tag":42,"props":583,"children":584},{},[585],{"type":39,"value":130},{"type":33,"tag":74,"props":587,"children":588},{"id":133},[589],{"type":39,"value":136},{"type":33,"tag":42,"props":591,"children":592},{},[593],{"type":33,"tag":84,"props":594,"children":595},{"alt":142,"src":143},[],{"type":33,"tag":42,"props":597,"children":598},{},[599],{"type":39,"value":149},{"type":33,"tag":95,"props":601,"children":602},{"className":97,"code":152,"language":99,"meta":7,"style":7},[603],{"type":33,"tag":48,"props":604,"children":605},{"__ignoreMap":7},[606],{"type":33,"tag":105,"props":607,"children":608},{"class":107,"line":16},[609,613,617,621],{"type":33,"tag":105,"props":610,"children":611},{"style":111},[612],{"type":39,"value":114},{"type":33,"tag":105,"props":614,"children":615},{"style":117},[616],{"type":39,"value":168},{"type":33,"tag":105,"props":618,"children":619},{"style":117},[620],{"type":39,"value":173},{"type":33,"tag":105,"props":622,"children":623},{"style":117},[624],{"type":39,"value":178},{"type":33,"tag":42,"props":626,"children":627},{},[628,629,634,635,640],{"type":39,"value":183},{"type":33,"tag":48,"props":630,"children":632},{"className":631},[],[633],{"type":39,"value":189},{"type":39,"value":191},{"type":33,"tag":48,"props":636,"children":638},{"className":637},[],[639],{"type":39,"value":197},{"type":39,"value":199},{"type":33,"tag":74,"props":642,"children":643},{"id":202},[644],{"type":39,"value":205},{"type":33,"tag":42,"props":646,"children":647},{},[648],{"type":39,"value":210},{"type":33,"tag":95,"props":650,"children":652},{"className":651,"code":215,"language":39},[214],[653],{"type":33,"tag":48,"props":654,"children":655},{"__ignoreMap":7},[656],{"type":39,"value":215},{"type":33,"tag":42,"props":658,"children":659},{},[660],{"type":39,"value":225},{"type":33,"tag":227,"props":662,"children":663},{},[664,676,688,702],{"type":33,"tag":231,"props":665,"children":666},{},[667,675],{"type":33,"tag":235,"props":668,"children":669},{},[670],{"type":33,"tag":48,"props":671,"children":673},{"className":672},[],[674],{"type":39,"value":243},{"type":39,"value":245},{"type":33,"tag":231,"props":677,"children":678},{},[679,687],{"type":33,"tag":235,"props":680,"children":681},{},[682],{"type":33,"tag":48,"props":683,"children":685},{"className":684},[],[686],{"type":39,"value":257},{"type":39,"value":259},{"type":33,"tag":231,"props":689,"children":690},{},[691,695,696,701],{"type":33,"tag":235,"props":692,"children":693},{},[694],{"type":39,"value":267},{"type":39,"value":269},{"type":33,"tag":48,"props":697,"children":699},{"className":698},[],[700],{"type":39,"value":275},{"type":39,"value":277},{"type":33,"tag":231,"props":703,"children":704},{},[705,709,710,715],{"type":33,"tag":235,"props":706,"children":707},{},[708],{"type":39,"value":285},{"type":39,"value":269},{"type":33,"tag":48,"props":711,"children":713},{"className":712},[],[714],{"type":39,"value":292},{"type":39,"value":294},{"type":33,"tag":74,"props":717,"children":718},{"id":297},[719],{"type":39,"value":300},{"type":33,"tag":42,"props":721,"children":722},{},[723,724,729],{"type":39,"value":305},{"type":33,"tag":48,"props":725,"children":727},{"className":726},[],[728],{"type":39,"value":243},{"type":39,"value":312},{"type":33,"tag":95,"props":731,"children":732},{"className":315,"code":316,"language":317,"meta":7,"style":7},[733],{"type":33,"tag":48,"props":734,"children":735},{"__ignoreMap":7},[736,747,758,769,780,799],{"type":33,"tag":105,"props":737,"children":738},{"class":107,"line":16},[739,743],{"type":33,"tag":105,"props":740,"children":741},{"style":327},[742],{"type":39,"value":330},{"type":33,"tag":105,"props":744,"children":745},{"style":333},[746],{"type":39,"value":336},{"type":33,"tag":105,"props":748,"children":749},{"class":107,"line":339},[750,754],{"type":33,"tag":105,"props":751,"children":752},{"style":327},[753],{"type":39,"value":345},{"type":33,"tag":105,"props":755,"children":756},{"style":333},[757],{"type":39,"value":336},{"type":33,"tag":105,"props":759,"children":760},{"class":107,"line":352},[761,765],{"type":33,"tag":105,"props":762,"children":763},{"style":327},[764],{"type":39,"value":358},{"type":33,"tag":105,"props":766,"children":767},{"style":333},[768],{"type":39,"value":336},{"type":33,"tag":105,"props":770,"children":771},{"class":107,"line":11},[772,776],{"type":33,"tag":105,"props":773,"children":774},{"style":327},[775],{"type":39,"value":370},{"type":33,"tag":105,"props":777,"children":778},{"style":333},[779],{"type":39,"value":336},{"type":33,"tag":105,"props":781,"children":782},{"class":107,"line":377},[783,787,791,795],{"type":33,"tag":105,"props":784,"children":785},{"style":333},[786],{"type":39,"value":383},{"type":33,"tag":105,"props":788,"children":789},{"style":327},[790],{"type":39,"value":388},{"type":33,"tag":105,"props":792,"children":793},{"style":333},[794],{"type":39,"value":393},{"type":33,"tag":105,"props":796,"children":797},{"style":117},[798],{"type":39,"value":398},{"type":33,"tag":105,"props":800,"children":801},{"class":107,"line":401},[802,806,810],{"type":33,"tag":105,"props":803,"children":804},{"style":327},[805],{"type":39,"value":407},{"type":33,"tag":105,"props":807,"children":808},{"style":333},[809],{"type":39,"value":393},{"type":33,"tag":105,"props":811,"children":812},{"style":117},[813],{"type":39,"value":416},{"type":33,"tag":42,"props":815,"children":816},{},[817,818,823],{"type":39,"value":305},{"type":33,"tag":48,"props":819,"children":821},{"className":820},[],[822],{"type":39,"value":257},{"type":39,"value":427},{"type":33,"tag":95,"props":825,"children":826},{"className":315,"code":430,"language":317,"meta":7,"style":7},[827],{"type":33,"tag":48,"props":828,"children":829},{"__ignoreMap":7},[830,845,856],{"type":33,"tag":105,"props":831,"children":832},{"class":107,"line":16},[833,837,841],{"type":33,"tag":105,"props":834,"children":835},{"style":327},[836],{"type":39,"value":388},{"type":33,"tag":105,"props":838,"children":839},{"style":333},[840],{"type":39,"value":393},{"type":33,"tag":105,"props":842,"children":843},{"style":117},[844],{"type":39,"value":450},{"type":33,"tag":105,"props":846,"children":847},{"class":107,"line":339},[848,852],{"type":33,"tag":105,"props":849,"children":850},{"style":327},[851],{"type":39,"value":458},{"type":33,"tag":105,"props":853,"children":854},{"style":333},[855],{"type":39,"value":336},{"type":33,"tag":105,"props":857,"children":858},{"class":107,"line":352},[859,863,867],{"type":33,"tag":105,"props":860,"children":861},{"style":327},[862],{"type":39,"value":470},{"type":33,"tag":105,"props":864,"children":865},{"style":333},[866],{"type":39,"value":393},{"type":33,"tag":105,"props":868,"children":869},{"style":117},[870],{"type":39,"value":398},{"type":33,"tag":34,"props":872,"children":873},{"id":481},[874],{"type":39,"value":484},{"type":33,"tag":42,"props":876,"children":877},{},[878],{"type":39,"value":489},{"type":33,"tag":491,"props":880,"children":881},{},[882],{"type":39,"value":495},{"title":7,"searchDepth":339,"depth":339,"links":884},[885,886,887,893],{"id":36,"depth":339,"text":40},{"id":58,"depth":339,"text":61},{"id":69,"depth":339,"text":72,"children":888},[889,890,891,892],{"id":76,"depth":352,"text":79},{"id":133,"depth":352,"text":136},{"id":202,"depth":352,"text":205},{"id":297,"depth":352,"text":300},{"id":481,"depth":339,"text":484},[895,1276],{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"readingTime":11,"category":12,"tags":896,"difficulty":15,"module":5,"step":16,"subSteps":17,"learnMore":897,"author":900,"body":901,"_type":507,"_id":508,"_source":509,"_file":510,"_stem":511,"_extension":512},[14],[898,899],{"label":20,"url":21},{"label":23,"url":24},{"name":26,"role":27,"image":28},{"type":30,"children":902,"toc":1265},[903,907,917,921,925,929,933,939,943,960,964,968,972,978,982,1007,1023,1027,1031,1039,1043,1098,1102,1112,1196,1206,1253,1257,1261],{"type":33,"tag":34,"props":904,"children":905},{"id":36},[906],{"type":39,"value":40},{"type":33,"tag":42,"props":908,"children":909},{},[910,911,916],{"type":39,"value":46},{"type":33,"tag":48,"props":912,"children":914},{"className":913},[],[915],{"type":39,"value":53},{"type":39,"value":55},{"type":33,"tag":34,"props":918,"children":919},{"id":58},[920],{"type":39,"value":61},{"type":33,"tag":42,"props":922,"children":923},{},[924],{"type":39,"value":66},{"type":33,"tag":34,"props":926,"children":927},{"id":69},[928],{"type":39,"value":72},{"type":33,"tag":74,"props":930,"children":931},{"id":76},[932],{"type":39,"value":79},{"type":33,"tag":42,"props":934,"children":935},{},[936],{"type":33,"tag":84,"props":937,"children":938},{"alt":86,"src":87},[],{"type":33,"tag":42,"props":940,"children":941},{},[942],{"type":39,"value":93},{"type":33,"tag":95,"props":944,"children":945},{"className":97,"code":98,"language":99,"meta":7,"style":7},[946],{"type":33,"tag":48,"props":947,"children":948},{"__ignoreMap":7},[949],{"type":33,"tag":105,"props":950,"children":951},{"class":107,"line":16},[952,956],{"type":33,"tag":105,"props":953,"children":954},{"style":111},[955],{"type":39,"value":114},{"type":33,"tag":105,"props":957,"children":958},{"style":117},[959],{"type":39,"value":120},{"type":33,"tag":42,"props":961,"children":962},{},[963],{"type":39,"value":125},{"type":33,"tag":42,"props":965,"children":966},{},[967],{"type":39,"value":130},{"type":33,"tag":74,"props":969,"children":970},{"id":133},[971],{"type":39,"value":136},{"type":33,"tag":42,"props":973,"children":974},{},[975],{"type":33,"tag":84,"props":976,"children":977},{"alt":142,"src":143},[],{"type":33,"tag":42,"props":979,"children":980},{},[981],{"type":39,"value":149},{"type":33,"tag":95,"props":983,"children":984},{"className":97,"code":152,"language":99,"meta":7,"style":7},[985],{"type":33,"tag":48,"props":986,"children":987},{"__ignoreMap":7},[988],{"type":33,"tag":105,"props":989,"children":990},{"class":107,"line":16},[991,995,999,1003],{"type":33,"tag":105,"props":992,"children":993},{"style":111},[994],{"type":39,"value":114},{"type":33,"tag":105,"props":996,"children":997},{"style":117},[998],{"type":39,"value":168},{"type":33,"tag":105,"props":1000,"children":1001},{"style":117},[1002],{"type":39,"value":173},{"type":33,"tag":105,"props":1004,"children":1005},{"style":117},[1006],{"type":39,"value":178},{"type":33,"tag":42,"props":1008,"children":1009},{},[1010,1011,1016,1017,1022],{"type":39,"value":183},{"type":33,"tag":48,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":39,"value":189},{"type":39,"value":191},{"type":33,"tag":48,"props":1018,"children":1020},{"className":1019},[],[1021],{"type":39,"value":197},{"type":39,"value":199},{"type":33,"tag":74,"props":1024,"children":1025},{"id":202},[1026],{"type":39,"value":205},{"type":33,"tag":42,"props":1028,"children":1029},{},[1030],{"type":39,"value":210},{"type":33,"tag":95,"props":1032,"children":1034},{"className":1033,"code":215,"language":39},[214],[1035],{"type":33,"tag":48,"props":1036,"children":1037},{"__ignoreMap":7},[1038],{"type":39,"value":215},{"type":33,"tag":42,"props":1040,"children":1041},{},[1042],{"type":39,"value":225},{"type":33,"tag":227,"props":1044,"children":1045},{},[1046,1058,1070,1084],{"type":33,"tag":231,"props":1047,"children":1048},{},[1049,1057],{"type":33,"tag":235,"props":1050,"children":1051},{},[1052],{"type":33,"tag":48,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":39,"value":243},{"type":39,"value":245},{"type":33,"tag":231,"props":1059,"children":1060},{},[1061,1069],{"type":33,"tag":235,"props":1062,"children":1063},{},[1064],{"type":33,"tag":48,"props":1065,"children":1067},{"className":1066},[],[1068],{"type":39,"value":257},{"type":39,"value":259},{"type":33,"tag":231,"props":1071,"children":1072},{},[1073,1077,1078,1083],{"type":33,"tag":235,"props":1074,"children":1075},{},[1076],{"type":39,"value":267},{"type":39,"value":269},{"type":33,"tag":48,"props":1079,"children":1081},{"className":1080},[],[1082],{"type":39,"value":275},{"type":39,"value":277},{"type":33,"tag":231,"props":1085,"children":1086},{},[1087,1091,1092,1097],{"type":33,"tag":235,"props":1088,"children":1089},{},[1090],{"type":39,"value":285},{"type":39,"value":269},{"type":33,"tag":48,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":39,"value":292},{"type":39,"value":294},{"type":33,"tag":74,"props":1099,"children":1100},{"id":297},[1101],{"type":39,"value":300},{"type":33,"tag":42,"props":1103,"children":1104},{},[1105,1106,1111],{"type":39,"value":305},{"type":33,"tag":48,"props":1107,"children":1109},{"className":1108},[],[1110],{"type":39,"value":243},{"type":39,"value":312},{"type":33,"tag":95,"props":1113,"children":1114},{"className":315,"code":316,"language":317,"meta":7,"style":7},[1115],{"type":33,"tag":48,"props":1116,"children":1117},{"__ignoreMap":7},[1118,1129,1140,1151,1162,1181],{"type":33,"tag":105,"props":1119,"children":1120},{"class":107,"line":16},[1121,1125],{"type":33,"tag":105,"props":1122,"children":1123},{"style":327},[1124],{"type":39,"value":330},{"type":33,"tag":105,"props":1126,"children":1127},{"style":333},[1128],{"type":39,"value":336},{"type":33,"tag":105,"props":1130,"children":1131},{"class":107,"line":339},[1132,1136],{"type":33,"tag":105,"props":1133,"children":1134},{"style":327},[1135],{"type":39,"value":345},{"type":33,"tag":105,"props":1137,"children":1138},{"style":333},[1139],{"type":39,"value":336},{"type":33,"tag":105,"props":1141,"children":1142},{"class":107,"line":352},[1143,1147],{"type":33,"tag":105,"props":1144,"children":1145},{"style":327},[1146],{"type":39,"value":358},{"type":33,"tag":105,"props":1148,"children":1149},{"style":333},[1150],{"type":39,"value":336},{"type":33,"tag":105,"props":1152,"children":1153},{"class":107,"line":11},[1154,1158],{"type":33,"tag":105,"props":1155,"children":1156},{"style":327},[1157],{"type":39,"value":370},{"type":33,"tag":105,"props":1159,"children":1160},{"style":333},[1161],{"type":39,"value":336},{"type":33,"tag":105,"props":1163,"children":1164},{"class":107,"line":377},[1165,1169,1173,1177],{"type":33,"tag":105,"props":1166,"children":1167},{"style":333},[1168],{"type":39,"value":383},{"type":33,"tag":105,"props":1170,"children":1171},{"style":327},[1172],{"type":39,"value":388},{"type":33,"tag":105,"props":1174,"children":1175},{"style":333},[1176],{"type":39,"value":393},{"type":33,"tag":105,"props":1178,"children":1179},{"style":117},[1180],{"type":39,"value":398},{"type":33,"tag":105,"props":1182,"children":1183},{"class":107,"line":401},[1184,1188,1192],{"type":33,"tag":105,"props":1185,"children":1186},{"style":327},[1187],{"type":39,"value":407},{"type":33,"tag":105,"props":1189,"children":1190},{"style":333},[1191],{"type":39,"value":393},{"type":33,"tag":105,"props":1193,"children":1194},{"style":117},[1195],{"type":39,"value":416},{"type":33,"tag":42,"props":1197,"children":1198},{},[1199,1200,1205],{"type":39,"value":305},{"type":33,"tag":48,"props":1201,"children":1203},{"className":1202},[],[1204],{"type":39,"value":257},{"type":39,"value":427},{"type":33,"tag":95,"props":1207,"children":1208},{"className":315,"code":430,"language":317,"meta":7,"style":7},[1209],{"type":33,"tag":48,"props":1210,"children":1211},{"__ignoreMap":7},[1212,1227,1238],{"type":33,"tag":105,"props":1213,"children":1214},{"class":107,"line":16},[1215,1219,1223],{"type":33,"tag":105,"props":1216,"children":1217},{"style":327},[1218],{"type":39,"value":388},{"type":33,"tag":105,"props":1220,"children":1221},{"style":333},[1222],{"type":39,"value":393},{"type":33,"tag":105,"props":1224,"children":1225},{"style":117},[1226],{"type":39,"value":450},{"type":33,"tag":105,"props":1228,"children":1229},{"class":107,"line":339},[1230,1234],{"type":33,"tag":105,"props":1231,"children":1232},{"style":327},[1233],{"type":39,"value":458},{"type":33,"tag":105,"props":1235,"children":1236},{"style":333},[1237],{"type":39,"value":336},{"type":33,"tag":105,"props":1239,"children":1240},{"class":107,"line":352},[1241,1245,1249],{"type":33,"tag":105,"props":1242,"children":1243},{"style":327},[1244],{"type":39,"value":470},{"type":33,"tag":105,"props":1246,"children":1247},{"style":333},[1248],{"type":39,"value":393},{"type":33,"tag":105,"props":1250,"children":1251},{"style":117},[1252],{"type":39,"value":398},{"type":33,"tag":34,"props":1254,"children":1255},{"id":481},[1256],{"type":39,"value":484},{"type":33,"tag":42,"props":1258,"children":1259},{},[1260],{"type":39,"value":489},{"type":33,"tag":491,"props":1262,"children":1263},{},[1264],{"type":39,"value":495},{"title":7,"searchDepth":339,"depth":339,"links":1266},[1267,1268,1269,1275],{"id":36,"depth":339,"text":40},{"id":58,"depth":339,"text":61},{"id":69,"depth":339,"text":72,"children":1270},[1271,1272,1273,1274],{"id":76,"depth":352,"text":79},{"id":133,"depth":352,"text":136},{"id":202,"depth":352,"text":205},{"id":297,"depth":352,"text":300},{"id":481,"depth":339,"text":484},{"_path":1277,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1278,"description":1279,"date":10,"readingTime":11,"category":12,"tags":1280,"difficulty":15,"module":5,"step":339,"subSteps":17,"learnMore":1281,"author":1291,"body":1292,"_type":507,"_id":1540,"_source":509,"_file":1541,"_stem":1542,"_extension":512},"/tutorials/bruin-templates/explore-run","Explore & Run","Run the templated pipeline and explore the ingested and transformed data.",[14],[1282,1285,1288],{"label":1283,"url":1284},"Bruin run command","https://getbruin.com/docs/bruin/commands/run.html",{"label":1286,"url":1287},"Bruin query command","https://getbruin.com/docs/bruin/commands/query.html",{"label":1289,"url":1290},"Tutorial video on Bruin templates","https://youtu.be/8RuVoSCNHQI",{"name":26,"role":27,"image":28},{"type":30,"children":1293,"toc":1529},[1294,1298,1303,1307,1312,1316,1322,1327,1336,1345,1350,1356,1361,1385,1390,1404,1409,1415,1420,1460,1465,1471,1476,1511,1516,1520,1525],{"type":33,"tag":34,"props":1295,"children":1296},{"id":36},[1297],{"type":39,"value":40},{"type":33,"tag":42,"props":1299,"children":1300},{},[1301],{"type":39,"value":1302},"Run the pipeline to ingest and transform exchange rate data, then explore the results.",{"type":33,"tag":34,"props":1304,"children":1305},{"id":58},[1306],{"type":39,"value":61},{"type":33,"tag":42,"props":1308,"children":1309},{},[1310],{"type":39,"value":1311},"Running the pipeline is where the template pays off. A single command executes the full ingestion and transformation workflow that the template set up for you. The result is queryable data in DuckDB, ready for analysis.",{"type":33,"tag":34,"props":1313,"children":1314},{"id":69},[1315],{"type":39,"value":72},{"type":33,"tag":74,"props":1317,"children":1319},{"id":1318},"_1-understand-the-assets",[1320],{"type":39,"value":1321},"1) Understand the assets",{"type":33,"tag":42,"props":1323,"children":1324},{},[1325],{"type":39,"value":1326},"Before running, take a look at what the template created:",{"type":33,"tag":42,"props":1328,"children":1329},{},[1330,1334],{"type":33,"tag":235,"props":1331,"children":1332},{},[1333],{"type":39,"value":267},{"type":39,"value":1335}," pull exchange rate data from the Frankfurter API. These are YAML files that tell Bruin what data to fetch and where to store it.",{"type":33,"tag":42,"props":1337,"children":1338},{},[1339,1343],{"type":33,"tag":235,"props":1340,"children":1341},{},[1342],{"type":39,"value":285},{"type":39,"value":1344}," transform the raw ingested data. For example, the template includes a SQL query that presents exchange rate trends over the last 30 days.",{"type":33,"tag":42,"props":1346,"children":1347},{},[1348],{"type":39,"value":1349},"The SQL assets depend on the ingestr assets, so Bruin automatically runs ingestion first, then transformation.",{"type":33,"tag":74,"props":1351,"children":1353},{"id":1352},"_2-run-the-pipeline",[1354],{"type":39,"value":1355},"2) Run the pipeline",{"type":33,"tag":42,"props":1357,"children":1358},{},[1359],{"type":39,"value":1360},"Execute the entire pipeline:",{"type":33,"tag":95,"props":1362,"children":1364},{"className":97,"code":1363,"language":99,"meta":7,"style":7},"bruin run .\n",[1365],{"type":33,"tag":48,"props":1366,"children":1367},{"__ignoreMap":7},[1368],{"type":33,"tag":105,"props":1369,"children":1370},{"class":107,"line":16},[1371,1375,1380],{"type":33,"tag":105,"props":1372,"children":1373},{"style":111},[1374],{"type":39,"value":114},{"type":33,"tag":105,"props":1376,"children":1377},{"style":117},[1378],{"type":39,"value":1379}," run",{"type":33,"tag":105,"props":1381,"children":1382},{"style":117},[1383],{"type":39,"value":1384}," .\n",{"type":33,"tag":42,"props":1386,"children":1387},{},[1388],{"type":39,"value":1389},"Bruin resolves the dependency graph and runs assets in the correct order:",{"type":33,"tag":1391,"props":1392,"children":1393},"ol",{},[1394,1399],{"type":33,"tag":231,"props":1395,"children":1396},{},[1397],{"type":39,"value":1398},"First, the ingestr assets fetch exchange rate data from the Frankfurter API",{"type":33,"tag":231,"props":1400,"children":1401},{},[1402],{"type":39,"value":1403},"Then, the SQL assets transform the raw data into analytical views",{"type":33,"tag":42,"props":1405,"children":1406},{},[1407],{"type":39,"value":1408},"You'll see progress output as each asset completes.",{"type":33,"tag":74,"props":1410,"children":1412},{"id":1411},"_3-query-the-results",[1413],{"type":39,"value":1414},"3) Query the results",{"type":33,"tag":42,"props":1416,"children":1417},{},[1418],{"type":39,"value":1419},"After the pipeline finishes, query the transformed data:",{"type":33,"tag":95,"props":1421,"children":1423},{"className":97,"code":1422,"language":99,"meta":7,"style":7},"bruin query --c duckdb-default --q \"SELECT * FROM exchange_rate_summary LIMIT 10;\"\n",[1424],{"type":33,"tag":48,"props":1425,"children":1426},{"__ignoreMap":7},[1427],{"type":33,"tag":105,"props":1428,"children":1429},{"class":107,"line":16},[1430,1434,1439,1445,1450,1455],{"type":33,"tag":105,"props":1431,"children":1432},{"style":111},[1433],{"type":39,"value":114},{"type":33,"tag":105,"props":1435,"children":1436},{"style":117},[1437],{"type":39,"value":1438}," query",{"type":33,"tag":105,"props":1440,"children":1442},{"style":1441},"--shiki-default:#79B8FF",[1443],{"type":39,"value":1444}," --c",{"type":33,"tag":105,"props":1446,"children":1447},{"style":117},[1448],{"type":39,"value":1449}," duckdb-default",{"type":33,"tag":105,"props":1451,"children":1452},{"style":1441},[1453],{"type":39,"value":1454}," --q",{"type":33,"tag":105,"props":1456,"children":1457},{"style":117},[1458],{"type":39,"value":1459}," \"SELECT * FROM exchange_rate_summary LIMIT 10;\"\n",{"type":33,"tag":42,"props":1461,"children":1462},{},[1463],{"type":39,"value":1464},"You should see exchange rate data with dates, currency pairs, and rates - a clean analytical view created by the SQL transformation.",{"type":33,"tag":74,"props":1466,"children":1468},{"id":1467},"_4-explore-further",[1469],{"type":39,"value":1470},"4) Explore further",{"type":33,"tag":42,"props":1472,"children":1473},{},[1474],{"type":39,"value":1475},"Try querying the raw ingested data to see what the ingestr asset pulled:",{"type":33,"tag":95,"props":1477,"children":1479},{"className":97,"code":1478,"language":99,"meta":7,"style":7},"bruin query --c duckdb-default --q \"SELECT * FROM fx_rates LIMIT 10;\"\n",[1480],{"type":33,"tag":48,"props":1481,"children":1482},{"__ignoreMap":7},[1483],{"type":33,"tag":105,"props":1484,"children":1485},{"class":107,"line":16},[1486,1490,1494,1498,1502,1506],{"type":33,"tag":105,"props":1487,"children":1488},{"style":111},[1489],{"type":39,"value":114},{"type":33,"tag":105,"props":1491,"children":1492},{"style":117},[1493],{"type":39,"value":1438},{"type":33,"tag":105,"props":1495,"children":1496},{"style":1441},[1497],{"type":39,"value":1444},{"type":33,"tag":105,"props":1499,"children":1500},{"style":117},[1501],{"type":39,"value":1449},{"type":33,"tag":105,"props":1503,"children":1504},{"style":1441},[1505],{"type":39,"value":1454},{"type":33,"tag":105,"props":1507,"children":1508},{"style":117},[1509],{"type":39,"value":1510}," \"SELECT * FROM fx_rates LIMIT 10;\"\n",{"type":33,"tag":42,"props":1512,"children":1513},{},[1514],{"type":39,"value":1515},"You can modify the SQL asset to create different views, add new currencies, or change the date range. The template is a starting point - customize it to fit your needs.",{"type":33,"tag":34,"props":1517,"children":1518},{"id":481},[1519],{"type":39,"value":484},{"type":33,"tag":42,"props":1521,"children":1522},{},[1523],{"type":39,"value":1524},"You ran a complete pipeline that was set up entirely from a template. Data was fetched from the Frankfurter API, loaded into DuckDB, and transformed into an analytical view - all with minimal configuration. Templates let you skip the boilerplate and get straight to working with data.",{"type":33,"tag":491,"props":1526,"children":1527},{},[1528],{"type":39,"value":495},{"title":7,"searchDepth":339,"depth":339,"links":1530},[1531,1532,1533,1539],{"id":36,"depth":339,"text":40},{"id":58,"depth":339,"text":61},{"id":69,"depth":339,"text":72,"children":1534},[1535,1536,1537,1538],{"id":1318,"depth":352,"text":1321},{"id":1352,"depth":352,"text":1355},{"id":1411,"depth":352,"text":1414},{"id":1467,"depth":352,"text":1470},{"id":481,"depth":339,"text":484},"content:tutorials:bruin-templates:explore-run.md","tutorials/bruin-templates/explore-run.md","tutorials/bruin-templates/explore-run",1776427881347]