[{"data":1,"prerenderedAt":6106},["ShallowReactive",2],{"tutorial-incremental-vs-full-refresh-runs":3,"content-query-xZuikJkYA0":2845,"content-query-iGO3cCGNKy":5232},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"readingTime":11,"category":12,"tags":13,"difficulty":18,"journeys":19,"hidden":6,"author":22,"body":26,"_type":2839,"_id":2840,"_source":2841,"_file":2842,"_stem":2843,"_extension":2844},"/tutorials/incremental-vs-full-refresh-runs","tutorials",false,"","Incremental vs. Full Refresh Runs in Bruin","Learn how Bruin's interval start/end variables drive incremental runs, how --full-refresh changes the picture, how each behaves across SQL, Python, and ingestr assets, and how to protect critical tables with refresh_restricted.","2026-04-26",7,"Tutorial",[14,15,16,17],"Bruin CLI","SQL","Python","ingestr","Beginner",[20,21],"Data Engineer","Data Analyst",{"name":23,"role":24,"image":25},"Bruin Team","Bruin Data","/bruin-logo-2025.svg",{"type":27,"children":28,"toc":2825},"root",[29,38,61,89,102,226,238,334,339,343,349,361,471,476,617,657,677,684,713,789,862,875,878,884,2023,2026,2038,2061,2066,2215,2226,2245,2266,2499,2504,2517,2520,2526,2749,2752,2758,2819],{"type":30,"tag":31,"props":32,"children":34},"element","h2",{"id":33},"overview",[35],{"type":36,"value":37},"text","Overview",{"type":30,"tag":39,"props":40,"children":41},"p",{},[42,44,50,52,59],{"type":36,"value":43},"Every Bruin run has an ",{"type":30,"tag":45,"props":46,"children":47},"strong",{},[48],{"type":36,"value":49},"interval",{"type":36,"value":51}," - a time window of data the run is responsible for, defined by two ",{"type":30,"tag":53,"props":54,"children":56},"a",{"href":55},"/learn/core-concepts/variables",[57],{"type":36,"value":58},"built-in variables",{"type":36,"value":60},":",{"type":30,"tag":62,"props":63,"children":64},"ul",{},[65,78],{"type":30,"tag":66,"props":67,"children":68},"li",{},[69,76],{"type":30,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":36,"value":75},"start_date",{"type":36,"value":77}," - inclusive lower bound of the window",{"type":30,"tag":66,"props":79,"children":80},{},[81,87],{"type":30,"tag":70,"props":82,"children":84},{"className":83},[],[85],{"type":36,"value":86},"end_date",{"type":36,"value":88}," - exclusive upper bound of the window",{"type":30,"tag":39,"props":90,"children":91},{},[92,94,100],{"type":36,"value":93},"The window tracks the pipeline's ",{"type":30,"tag":70,"props":95,"children":97},{"className":96},[],[98],{"type":36,"value":99},"schedule",{"type":36,"value":101}," one-for-one:",{"type":30,"tag":103,"props":104,"children":105},"table",{},[106,141],{"type":30,"tag":107,"props":108,"children":109},"thead",{},[110],{"type":30,"tag":111,"props":112,"children":113},"tr",{},[114,120,125,133],{"type":30,"tag":115,"props":116,"children":117},"th",{},[118],{"type":36,"value":119},"Schedule",{"type":30,"tag":115,"props":121,"children":122},{},[123],{"type":36,"value":124},"Run at",{"type":30,"tag":115,"props":126,"children":127},{},[128],{"type":30,"tag":70,"props":129,"children":131},{"className":130},[],[132],{"type":36,"value":75},{"type":30,"tag":115,"props":134,"children":135},{},[136],{"type":30,"tag":70,"props":137,"children":139},{"className":138},[],[140],{"type":36,"value":86},{"type":30,"tag":142,"props":143,"children":144},"tbody",{},[145,172,198],{"type":30,"tag":111,"props":146,"children":147},{},[148,158,163,168],{"type":30,"tag":149,"props":150,"children":151},"td",{},[152],{"type":30,"tag":70,"props":153,"children":155},{"className":154},[],[156],{"type":36,"value":157},"@hourly",{"type":30,"tag":149,"props":159,"children":160},{},[161],{"type":36,"value":162},"2026-04-26 14:00",{"type":30,"tag":149,"props":164,"children":165},{},[166],{"type":36,"value":167},"2026-04-26 13:00",{"type":30,"tag":149,"props":169,"children":170},{},[171],{"type":36,"value":162},{"type":30,"tag":111,"props":173,"children":174},{},[175,184,189,194],{"type":30,"tag":149,"props":176,"children":177},{},[178],{"type":30,"tag":70,"props":179,"children":181},{"className":180},[],[182],{"type":36,"value":183},"@daily",{"type":30,"tag":149,"props":185,"children":186},{},[187],{"type":36,"value":188},"2026-04-26 00:00",{"type":30,"tag":149,"props":190,"children":191},{},[192],{"type":36,"value":193},"2026-04-25",{"type":30,"tag":149,"props":195,"children":196},{},[197],{"type":36,"value":10},{"type":30,"tag":111,"props":199,"children":200},{},[201,212,217,222],{"type":30,"tag":149,"props":202,"children":203},{},[204,210],{"type":30,"tag":70,"props":205,"children":207},{"className":206},[],[208],{"type":36,"value":209},"0 */6 * * *",{"type":36,"value":211}," (every 6 hours)",{"type":30,"tag":149,"props":213,"children":214},{},[215],{"type":36,"value":216},"2026-04-26 18:00",{"type":30,"tag":149,"props":218,"children":219},{},[220],{"type":36,"value":221},"2026-04-26 12:00",{"type":30,"tag":149,"props":223,"children":224},{},[225],{"type":36,"value":216},{"type":30,"tag":39,"props":227,"children":228},{},[229,231,236],{"type":36,"value":230},"Bruin computes these values ",{"type":30,"tag":45,"props":232,"children":233},{},[234],{"type":36,"value":235},"at runtime",{"type":36,"value":237}," and injects them directly into your assets - never hard-code them. The mechanism depends on the asset type:",{"type":30,"tag":103,"props":239,"children":240},{},[241,257],{"type":30,"tag":107,"props":242,"children":243},{},[244],{"type":30,"tag":111,"props":245,"children":246},{},[247,252],{"type":30,"tag":115,"props":248,"children":249},{},[250],{"type":36,"value":251},"Asset type",{"type":30,"tag":115,"props":253,"children":254},{},[255],{"type":36,"value":256},"How the interval is injected",{"type":30,"tag":142,"props":258,"children":259},{},[260,291,319],{"type":30,"tag":111,"props":261,"children":262},{},[263,270],{"type":30,"tag":149,"props":264,"children":265},{},[266],{"type":30,"tag":45,"props":267,"children":268},{},[269],{"type":36,"value":15},{"type":30,"tag":149,"props":271,"children":272},{},[273,275,281,283,289],{"type":36,"value":274},"Jinja templating - reference ",{"type":30,"tag":70,"props":276,"children":278},{"className":277},[],[279],{"type":36,"value":280},"{{ start_date }}",{"type":36,"value":282}," / ",{"type":30,"tag":70,"props":284,"children":286},{"className":285},[],[287],{"type":36,"value":288},"{{ end_date }}",{"type":36,"value":290}," in your query",{"type":30,"tag":111,"props":292,"children":293},{},[294,301],{"type":30,"tag":149,"props":295,"children":296},{},[297],{"type":30,"tag":45,"props":298,"children":299},{},[300],{"type":36,"value":16},{"type":30,"tag":149,"props":302,"children":303},{},[304,306,312,313],{"type":36,"value":305},"Environment variables - read ",{"type":30,"tag":70,"props":307,"children":309},{"className":308},[],[310],{"type":36,"value":311},"os.environ[\"BRUIN_START_DATE\"]",{"type":36,"value":282},{"type":30,"tag":70,"props":314,"children":316},{"className":315},[],[317],{"type":36,"value":318},"os.environ[\"BRUIN_END_DATE\"]",{"type":30,"tag":111,"props":320,"children":321},{},[322,329],{"type":30,"tag":149,"props":323,"children":324},{},[325],{"type":30,"tag":45,"props":326,"children":327},{},[328],{"type":36,"value":17},{"type":30,"tag":149,"props":330,"children":331},{},[332],{"type":36,"value":333},"CLI flags Bruin passes to ingestr automatically - no wiring needed",{"type":30,"tag":39,"props":335,"children":336},{},[337],{"type":36,"value":338},"Use the interval to filter source data so each run only processes the rows in its window - this is the foundation of incremental loading in Bruin.",{"type":30,"tag":340,"props":341,"children":342},"hr",{},[],{"type":30,"tag":31,"props":344,"children":346},{"id":345},"run-modes",[347],{"type":36,"value":348},"Run modes",{"type":30,"tag":39,"props":350,"children":351},{},[352,354,359],{"type":36,"value":353},"Three different things in Bruin are called ",{"type":30,"tag":70,"props":355,"children":357},{"className":356},[],[358],{"type":36,"value":75},{"type":36,"value":360}," - distinguish them before reading the table:",{"type":30,"tag":103,"props":362,"children":363},{},[364,388],{"type":30,"tag":107,"props":365,"children":366},{},[367],{"type":30,"tag":111,"props":368,"children":369},{},[370,378,383],{"type":30,"tag":115,"props":371,"children":372},{},[373],{"type":30,"tag":70,"props":374,"children":376},{"className":375},[],[377],{"type":36,"value":75},{"type":30,"tag":115,"props":379,"children":380},{},[381],{"type":36,"value":382},"Where it lives",{"type":30,"tag":115,"props":384,"children":385},{},[386],{"type":36,"value":387},"Role",{"type":30,"tag":142,"props":389,"children":390},{},[391,423,444],{"type":30,"tag":111,"props":392,"children":393},{},[394,402,418],{"type":30,"tag":149,"props":395,"children":396},{},[397],{"type":30,"tag":45,"props":398,"children":399},{},[400],{"type":36,"value":401},"Pipeline default",{"type":30,"tag":149,"props":403,"children":404},{},[405,410,412],{"type":30,"tag":70,"props":406,"children":408},{"className":407},[],[409],{"type":36,"value":75},{"type":36,"value":411}," in ",{"type":30,"tag":70,"props":413,"children":415},{"className":414},[],[416],{"type":36,"value":417},"pipeline.yml",{"type":30,"tag":149,"props":419,"children":420},{},[421],{"type":36,"value":422},"Earliest point full-refresh will rewind to",{"type":30,"tag":111,"props":424,"children":425},{},[426,434,439],{"type":30,"tag":149,"props":427,"children":428},{},[429],{"type":30,"tag":45,"props":430,"children":431},{},[432],{"type":36,"value":433},"Schedule-derived runtime",{"type":30,"tag":149,"props":435,"children":436},{},[437],{"type":36,"value":438},"Computed by Bruin per scheduled run",{"type":30,"tag":149,"props":440,"children":441},{},[442],{"type":36,"value":443},"Start of the previous schedule interval, set automatically",{"type":30,"tag":111,"props":445,"children":446},{},[447,455,466],{"type":30,"tag":149,"props":448,"children":449},{},[450],{"type":30,"tag":45,"props":451,"children":452},{},[453],{"type":36,"value":454},"Manual runtime",{"type":30,"tag":149,"props":456,"children":457},{},[458,464],{"type":30,"tag":70,"props":459,"children":461},{"className":460},[],[462],{"type":36,"value":463},"--start-date",{"type":36,"value":465}," CLI flag",{"type":30,"tag":149,"props":467,"children":468},{},[469],{"type":36,"value":470},"Ad-hoc override for backfills",{"type":30,"tag":39,"props":472,"children":473},{},[474],{"type":36,"value":475},"These three sources map directly to the three ways a run can be triggered:",{"type":30,"tag":103,"props":477,"children":478},{},[479,514],{"type":30,"tag":107,"props":480,"children":481},{},[482],{"type":30,"tag":111,"props":483,"children":484},{},[485,490,500,509],{"type":30,"tag":115,"props":486,"children":487},{},[488],{"type":36,"value":489},"Command",{"type":30,"tag":115,"props":491,"children":492},{},[493,495],{"type":36,"value":494},"Runtime ",{"type":30,"tag":70,"props":496,"children":498},{"className":497},[],[499],{"type":36,"value":75},{"type":30,"tag":115,"props":501,"children":502},{},[503,504],{"type":36,"value":494},{"type":30,"tag":70,"props":505,"children":507},{"className":506},[],[508],{"type":36,"value":86},{"type":30,"tag":115,"props":510,"children":511},{},[512],{"type":36,"value":513},"When to use",{"type":30,"tag":142,"props":515,"children":516},{},[517,549,576],{"type":30,"tag":111,"props":518,"children":519},{},[520,529,539,544],{"type":30,"tag":149,"props":521,"children":522},{},[523],{"type":30,"tag":70,"props":524,"children":526},{"className":525},[],[527],{"type":36,"value":528},"bruin run --full-refresh",{"type":30,"tag":149,"props":530,"children":531},{},[532,534],{"type":36,"value":533},"pipeline default ",{"type":30,"tag":70,"props":535,"children":537},{"className":536},[],[538],{"type":36,"value":75},{"type":30,"tag":149,"props":540,"children":541},{},[542],{"type":36,"value":543},"now",{"type":30,"tag":149,"props":545,"children":546},{},[547],{"type":36,"value":548},"First run, or full rebuild",{"type":30,"tag":111,"props":550,"children":551},{},[552,561,566,571],{"type":30,"tag":149,"props":553,"children":554},{},[555],{"type":30,"tag":70,"props":556,"children":558},{"className":557},[],[559],{"type":36,"value":560},"bruin run",{"type":30,"tag":149,"props":562,"children":563},{},[564],{"type":36,"value":565},"schedule-derived (start of previous interval)",{"type":30,"tag":149,"props":567,"children":568},{},[569],{"type":36,"value":570},"schedule-derived (start of current interval)",{"type":30,"tag":149,"props":572,"children":573},{},[574],{"type":36,"value":575},"Regular scheduled runs",{"type":30,"tag":111,"props":577,"children":578},{},[579,588,601,612],{"type":30,"tag":149,"props":580,"children":581},{},[582],{"type":30,"tag":70,"props":583,"children":585},{"className":584},[],[586],{"type":36,"value":587},"bruin run --start-date X --end-date Y",{"type":30,"tag":149,"props":589,"children":590},{},[591,593,599],{"type":36,"value":592},"manual (",{"type":30,"tag":70,"props":594,"children":596},{"className":595},[],[597],{"type":36,"value":598},"X",{"type":36,"value":600},")",{"type":30,"tag":149,"props":602,"children":603},{},[604,605,611],{"type":36,"value":592},{"type":30,"tag":70,"props":606,"children":608},{"className":607},[],[609],{"type":36,"value":610},"Y",{"type":36,"value":600},{"type":30,"tag":149,"props":613,"children":614},{},[615],{"type":36,"value":616},"Manual backfills of a specific window",{"type":30,"tag":39,"props":618,"children":619},{},[620,622,627,629,634,636,641,642,648,649,655],{"type":36,"value":621},"These rules are ",{"type":30,"tag":45,"props":623,"children":624},{},[625],{"type":36,"value":626},"schedule-agnostic",{"type":36,"value":628}," - they apply identically to ",{"type":30,"tag":70,"props":630,"children":632},{"className":631},[],[633],{"type":36,"value":157},{"type":36,"value":635},", ",{"type":30,"tag":70,"props":637,"children":639},{"className":638},[],[640],{"type":36,"value":183},{"type":36,"value":635},{"type":30,"tag":70,"props":643,"children":645},{"className":644},[],[646],{"type":36,"value":647},"@weekly",{"type":36,"value":635},{"type":30,"tag":70,"props":650,"children":652},{"className":651},[],[653],{"type":36,"value":654},"@monthly",{"type":36,"value":656},", or any cron expression. The window simply tracks the schedule cadence one-for-one (hourly schedule → one-hour window, weekly → one-week, and so on).",{"type":30,"tag":39,"props":658,"children":659},{},[660,662,668,670,675],{"type":36,"value":661},"The classic \"load history once, then incrementals\" pattern falls straight out of this: trigger the first run with ",{"type":30,"tag":70,"props":663,"children":665},{"className":664},[],[666],{"type":36,"value":667},"--full-refresh",{"type":36,"value":669}," to absorb history from the pipeline default ",{"type":30,"tag":70,"props":671,"children":673},{"className":672},[],[674],{"type":36,"value":75},{"type":36,"value":676},", then let the schedule take over.",{"type":30,"tag":678,"props":679,"children":681},"h3",{"id":680},"interval-modifiers",[682],{"type":36,"value":683},"Interval modifiers",{"type":30,"tag":39,"props":685,"children":686},{},[687,689,697,699,704,706,711],{"type":36,"value":688},"To catch late-arriving events or add a lookback/lookahead on top of the runtime interval, use ",{"type":30,"tag":53,"props":690,"children":694},{"href":691,"rel":692},"https://getbruin.com/docs/bruin/assets/interval-modifiers.html",[693],"nofollow",[695],{"type":36,"value":696},"interval modifiers",{"type":36,"value":698}," - they shift ",{"type":30,"tag":70,"props":700,"children":702},{"className":701},[],[703],{"type":36,"value":75},{"type":36,"value":705}," and ",{"type":30,"tag":70,"props":707,"children":709},{"className":708},[],[710],{"type":36,"value":86},{"type":36,"value":712}," by a fixed offset. Set them on the asset (overrides) or the pipeline (default):",{"type":30,"tag":714,"props":715,"children":719},"pre",{"className":716,"code":717,"language":718,"meta":7,"style":7},"language-yaml shiki shiki-themes github-dark","# Asset-level: shift this asset's window back 2 hours\ninterval_modifiers:\n  start: -2h\n  end: 0h\n","yaml",[720],{"type":30,"tag":70,"props":721,"children":722},{"__ignoreMap":7},[723,735,751,771],{"type":30,"tag":724,"props":725,"children":728},"span",{"class":726,"line":727},"line",1,[729],{"type":30,"tag":724,"props":730,"children":732},{"style":731},"--shiki-default:#6A737D",[733],{"type":36,"value":734},"# Asset-level: shift this asset's window back 2 hours\n",{"type":30,"tag":724,"props":736,"children":738},{"class":726,"line":737},2,[739,745],{"type":30,"tag":724,"props":740,"children":742},{"style":741},"--shiki-default:#85E89D",[743],{"type":36,"value":744},"interval_modifiers",{"type":30,"tag":724,"props":746,"children":748},{"style":747},"--shiki-default:#E1E4E8",[749],{"type":36,"value":750},":\n",{"type":30,"tag":724,"props":752,"children":754},{"class":726,"line":753},3,[755,760,765],{"type":30,"tag":724,"props":756,"children":757},{"style":741},[758],{"type":36,"value":759},"  start",{"type":30,"tag":724,"props":761,"children":762},{"style":747},[763],{"type":36,"value":764},": ",{"type":30,"tag":724,"props":766,"children":768},{"style":767},"--shiki-default:#9ECBFF",[769],{"type":36,"value":770},"-2h\n",{"type":30,"tag":724,"props":772,"children":774},{"class":726,"line":773},4,[775,780,784],{"type":30,"tag":724,"props":776,"children":777},{"style":741},[778],{"type":36,"value":779},"  end",{"type":30,"tag":724,"props":781,"children":782},{"style":747},[783],{"type":36,"value":764},{"type":30,"tag":724,"props":785,"children":786},{"style":767},[787],{"type":36,"value":788},"0h\n",{"type":30,"tag":714,"props":790,"children":792},{"className":716,"code":791,"language":718,"meta":7,"style":7},"# Pipeline-level: applies to every asset that doesn't override it\ndefault:\n  interval_modifiers:\n    start: -1d\n    end: 0h\n",[793],{"type":30,"tag":70,"props":794,"children":795},{"__ignoreMap":7},[796,804,816,828,845],{"type":30,"tag":724,"props":797,"children":798},{"class":726,"line":727},[799],{"type":30,"tag":724,"props":800,"children":801},{"style":731},[802],{"type":36,"value":803},"# Pipeline-level: applies to every asset that doesn't override it\n",{"type":30,"tag":724,"props":805,"children":806},{"class":726,"line":737},[807,812],{"type":30,"tag":724,"props":808,"children":809},{"style":741},[810],{"type":36,"value":811},"default",{"type":30,"tag":724,"props":813,"children":814},{"style":747},[815],{"type":36,"value":750},{"type":30,"tag":724,"props":817,"children":818},{"class":726,"line":753},[819,824],{"type":30,"tag":724,"props":820,"children":821},{"style":741},[822],{"type":36,"value":823},"  interval_modifiers",{"type":30,"tag":724,"props":825,"children":826},{"style":747},[827],{"type":36,"value":750},{"type":30,"tag":724,"props":829,"children":830},{"class":726,"line":773},[831,836,840],{"type":30,"tag":724,"props":832,"children":833},{"style":741},[834],{"type":36,"value":835},"    start",{"type":30,"tag":724,"props":837,"children":838},{"style":747},[839],{"type":36,"value":764},{"type":30,"tag":724,"props":841,"children":842},{"style":767},[843],{"type":36,"value":844},"-1d\n",{"type":30,"tag":724,"props":846,"children":848},{"class":726,"line":847},5,[849,854,858],{"type":30,"tag":724,"props":850,"children":851},{"style":741},[852],{"type":36,"value":853},"    end",{"type":30,"tag":724,"props":855,"children":856},{"style":747},[857],{"type":36,"value":764},{"type":30,"tag":724,"props":859,"children":860},{"style":767},[861],{"type":36,"value":788},{"type":30,"tag":39,"props":863,"children":864},{},[865,867,873],{"type":36,"value":866},"Modifiers only kick in when the run is invoked with ",{"type":30,"tag":70,"props":868,"children":870},{"className":869},[],[871],{"type":36,"value":872},"--apply-interval-modifiers",{"type":36,"value":874},", so it's an opt-in per run.",{"type":30,"tag":340,"props":876,"children":877},{},[],{"type":30,"tag":31,"props":879,"children":881},{"id":880},"using-intervals-in-assets",[882],{"type":36,"value":883},"Using intervals in assets",{"type":30,"tag":885,"props":886,"children":889},"variant-tabs",{":variants":887,"group":888},"[{\"id\":\"sql\",\"label\":\"SQL\"},{\"id\":\"python\",\"label\":\"Python\"},{\"id\":\"ingestr\",\"label\":\"ingestr\"}]","interval-asset-type",[890,1178,1794],{"type":30,"tag":891,"props":892,"children":893},"template",{"v-slot:sql":7},[894,907,1116,1165],{"type":30,"tag":39,"props":895,"children":896},{},[897,899,905],{"type":36,"value":898},"Built-in variables are exposed via Jinja templating. Use them in your ",{"type":30,"tag":70,"props":900,"children":902},{"className":901},[],[903],{"type":36,"value":904},"WHERE",{"type":36,"value":906}," clause:",{"type":30,"tag":714,"props":908,"children":912},{"className":909,"code":910,"language":911,"meta":7,"style":7},"language-sql shiki shiki-themes github-dark","-- assets/contact_events.sql\n/* @bruin\nname: raw.contact_events\ntype: bq.sql\nmaterialization:\n  type: table\n  strategy: time_interval\n  incremental_key: event_date\n  time_granularity: date\n@bruin */\n\nSELECT\n  contact_id,\n  event_type,\n  event_date,\n  account_id\nFROM `external.crm_events`\nWHERE event_date >= '{{ start_date }}'\n  AND event_date \u003C  '{{ end_date }}'\n","sql",[913],{"type":30,"tag":70,"props":914,"children":915},{"__ignoreMap":7},[916,924,932,940,948,956,965,973,982,991,1000,1010,1020,1029,1038,1047,1056,1070,1093],{"type":30,"tag":724,"props":917,"children":918},{"class":726,"line":727},[919],{"type":30,"tag":724,"props":920,"children":921},{"style":731},[922],{"type":36,"value":923},"-- assets/contact_events.sql\n",{"type":30,"tag":724,"props":925,"children":926},{"class":726,"line":737},[927],{"type":30,"tag":724,"props":928,"children":929},{"style":731},[930],{"type":36,"value":931},"/* @bruin\n",{"type":30,"tag":724,"props":933,"children":934},{"class":726,"line":753},[935],{"type":30,"tag":724,"props":936,"children":937},{"style":731},[938],{"type":36,"value":939},"name: raw.contact_events\n",{"type":30,"tag":724,"props":941,"children":942},{"class":726,"line":773},[943],{"type":30,"tag":724,"props":944,"children":945},{"style":731},[946],{"type":36,"value":947},"type: bq.sql\n",{"type":30,"tag":724,"props":949,"children":950},{"class":726,"line":847},[951],{"type":30,"tag":724,"props":952,"children":953},{"style":731},[954],{"type":36,"value":955},"materialization:\n",{"type":30,"tag":724,"props":957,"children":959},{"class":726,"line":958},6,[960],{"type":30,"tag":724,"props":961,"children":962},{"style":731},[963],{"type":36,"value":964},"  type: table\n",{"type":30,"tag":724,"props":966,"children":967},{"class":726,"line":11},[968],{"type":30,"tag":724,"props":969,"children":970},{"style":731},[971],{"type":36,"value":972},"  strategy: time_interval\n",{"type":30,"tag":724,"props":974,"children":976},{"class":726,"line":975},8,[977],{"type":30,"tag":724,"props":978,"children":979},{"style":731},[980],{"type":36,"value":981},"  incremental_key: event_date\n",{"type":30,"tag":724,"props":983,"children":985},{"class":726,"line":984},9,[986],{"type":30,"tag":724,"props":987,"children":988},{"style":731},[989],{"type":36,"value":990},"  time_granularity: date\n",{"type":30,"tag":724,"props":992,"children":994},{"class":726,"line":993},10,[995],{"type":30,"tag":724,"props":996,"children":997},{"style":731},[998],{"type":36,"value":999},"@bruin */\n",{"type":30,"tag":724,"props":1001,"children":1003},{"class":726,"line":1002},11,[1004],{"type":30,"tag":724,"props":1005,"children":1007},{"emptyLinePlaceholder":1006},true,[1008],{"type":36,"value":1009},"\n",{"type":30,"tag":724,"props":1011,"children":1013},{"class":726,"line":1012},12,[1014],{"type":30,"tag":724,"props":1015,"children":1017},{"style":1016},"--shiki-default:#F97583",[1018],{"type":36,"value":1019},"SELECT\n",{"type":30,"tag":724,"props":1021,"children":1023},{"class":726,"line":1022},13,[1024],{"type":30,"tag":724,"props":1025,"children":1026},{"style":747},[1027],{"type":36,"value":1028},"  contact_id,\n",{"type":30,"tag":724,"props":1030,"children":1032},{"class":726,"line":1031},14,[1033],{"type":30,"tag":724,"props":1034,"children":1035},{"style":747},[1036],{"type":36,"value":1037},"  event_type,\n",{"type":30,"tag":724,"props":1039,"children":1041},{"class":726,"line":1040},15,[1042],{"type":30,"tag":724,"props":1043,"children":1044},{"style":747},[1045],{"type":36,"value":1046},"  event_date,\n",{"type":30,"tag":724,"props":1048,"children":1050},{"class":726,"line":1049},16,[1051],{"type":30,"tag":724,"props":1052,"children":1053},{"style":747},[1054],{"type":36,"value":1055},"  account_id\n",{"type":30,"tag":724,"props":1057,"children":1059},{"class":726,"line":1058},17,[1060,1065],{"type":30,"tag":724,"props":1061,"children":1062},{"style":1016},[1063],{"type":36,"value":1064},"FROM",{"type":30,"tag":724,"props":1066,"children":1067},{"style":767},[1068],{"type":36,"value":1069}," `external.crm_events`\n",{"type":30,"tag":724,"props":1071,"children":1073},{"class":726,"line":1072},18,[1074,1078,1083,1088],{"type":30,"tag":724,"props":1075,"children":1076},{"style":1016},[1077],{"type":36,"value":904},{"type":30,"tag":724,"props":1079,"children":1080},{"style":747},[1081],{"type":36,"value":1082}," event_date ",{"type":30,"tag":724,"props":1084,"children":1085},{"style":1016},[1086],{"type":36,"value":1087},">=",{"type":30,"tag":724,"props":1089,"children":1090},{"style":767},[1091],{"type":36,"value":1092}," '{{ start_date }}'\n",{"type":30,"tag":724,"props":1094,"children":1096},{"class":726,"line":1095},19,[1097,1102,1106,1111],{"type":30,"tag":724,"props":1098,"children":1099},{"style":1016},[1100],{"type":36,"value":1101},"  AND",{"type":30,"tag":724,"props":1103,"children":1104},{"style":747},[1105],{"type":36,"value":1082},{"type":30,"tag":724,"props":1107,"children":1108},{"style":1016},[1109],{"type":36,"value":1110},"\u003C",{"type":30,"tag":724,"props":1112,"children":1113},{"style":767},[1114],{"type":36,"value":1115},"  '{{ end_date }}'\n",{"type":30,"tag":39,"props":1117,"children":1118},{},[1119,1125,1127,1133,1134,1140,1141,1147,1148,1154,1156,1163],{"type":30,"tag":70,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":36,"value":1124},"strategy: time_interval",{"type":36,"value":1126}," deletes existing rows in the interval before inserting the new batch - safe to re-run any window without duplicates. Other supported strategies: ",{"type":30,"tag":70,"props":1128,"children":1130},{"className":1129},[],[1131],{"type":36,"value":1132},"create+replace",{"type":36,"value":635},{"type":30,"tag":70,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":36,"value":1139},"append",{"type":36,"value":635},{"type":30,"tag":70,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":36,"value":1146},"merge",{"type":36,"value":635},{"type":30,"tag":70,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":36,"value":1153},"delete+insert",{"type":36,"value":1155}," (",{"type":30,"tag":53,"props":1157,"children":1160},{"href":1158,"rel":1159},"https://getbruin.com/docs/bruin/assets/materialization.html",[693],[1161],{"type":36,"value":1162},"full reference",{"type":36,"value":1164},").",{"type":30,"tag":39,"props":1166,"children":1167},{},[1168,1170,1176],{"type":36,"value":1169},"Preview the compiled query with ",{"type":30,"tag":70,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":36,"value":1175},"bruin render assets/contact_events.sql",{"type":36,"value":1177}," to see the actual injected dates.",{"type":30,"tag":891,"props":1179,"children":1180},{"v-slot:python":7},[1181,1192,1581,1592,1613],{"type":30,"tag":39,"props":1182,"children":1183},{},[1184,1186,1191],{"type":36,"value":1185},"Built-in variables are exposed as ",{"type":30,"tag":45,"props":1187,"children":1188},{},[1189],{"type":36,"value":1190},"environment variables",{"type":36,"value":60},{"type":30,"tag":714,"props":1193,"children":1197},{"className":1194,"code":1195,"language":1196,"meta":7,"style":7},"language-python shiki shiki-themes github-dark","# assets/contacts_history.py\n\"\"\"@bruin\nname: raw.contacts_history\nimage: python:3.13\n@bruin\"\"\"\n\nimport os\nimport requests\nimport pandas as pd\n\nstart_date = os.environ[\"BRUIN_START_DATE\"]\nend_date   = os.environ[\"BRUIN_END_DATE\"]\nfull_refresh = os.environ.get(\"BRUIN_FULL_REFRESH\") == \"1\"\n\nif full_refresh:\n    # First run: pull every contact ever created\n    url = f\"https://api.example-crm.com/contacts?from=2015-01-01&to={end_date}\"\nelse:\n    # Daily run: only contacts updated in the new window\n    url = f\"https://api.example-crm.com/contacts?from={start_date}&to={end_date}\"\n\ndf = pd.DataFrame(requests.get(url).json())\ndf.to_parquet(\"/tmp/contacts.parquet\")\n","python",[1198],{"type":30,"tag":70,"props":1199,"children":1200},{"__ignoreMap":7},[1201,1209,1217,1225,1233,1241,1248,1261,1273,1295,1302,1330,1355,1392,1399,1412,1420,1462,1474,1482,1536,1544,1562],{"type":30,"tag":724,"props":1202,"children":1203},{"class":726,"line":727},[1204],{"type":30,"tag":724,"props":1205,"children":1206},{"style":731},[1207],{"type":36,"value":1208},"# assets/contacts_history.py\n",{"type":30,"tag":724,"props":1210,"children":1211},{"class":726,"line":737},[1212],{"type":30,"tag":724,"props":1213,"children":1214},{"style":767},[1215],{"type":36,"value":1216},"\"\"\"@bruin\n",{"type":30,"tag":724,"props":1218,"children":1219},{"class":726,"line":753},[1220],{"type":30,"tag":724,"props":1221,"children":1222},{"style":767},[1223],{"type":36,"value":1224},"name: raw.contacts_history\n",{"type":30,"tag":724,"props":1226,"children":1227},{"class":726,"line":773},[1228],{"type":30,"tag":724,"props":1229,"children":1230},{"style":767},[1231],{"type":36,"value":1232},"image: python:3.13\n",{"type":30,"tag":724,"props":1234,"children":1235},{"class":726,"line":847},[1236],{"type":30,"tag":724,"props":1237,"children":1238},{"style":767},[1239],{"type":36,"value":1240},"@bruin\"\"\"\n",{"type":30,"tag":724,"props":1242,"children":1243},{"class":726,"line":958},[1244],{"type":30,"tag":724,"props":1245,"children":1246},{"emptyLinePlaceholder":1006},[1247],{"type":36,"value":1009},{"type":30,"tag":724,"props":1249,"children":1250},{"class":726,"line":11},[1251,1256],{"type":30,"tag":724,"props":1252,"children":1253},{"style":1016},[1254],{"type":36,"value":1255},"import",{"type":30,"tag":724,"props":1257,"children":1258},{"style":747},[1259],{"type":36,"value":1260}," os\n",{"type":30,"tag":724,"props":1262,"children":1263},{"class":726,"line":975},[1264,1268],{"type":30,"tag":724,"props":1265,"children":1266},{"style":1016},[1267],{"type":36,"value":1255},{"type":30,"tag":724,"props":1269,"children":1270},{"style":747},[1271],{"type":36,"value":1272}," requests\n",{"type":30,"tag":724,"props":1274,"children":1275},{"class":726,"line":984},[1276,1280,1285,1290],{"type":30,"tag":724,"props":1277,"children":1278},{"style":1016},[1279],{"type":36,"value":1255},{"type":30,"tag":724,"props":1281,"children":1282},{"style":747},[1283],{"type":36,"value":1284}," pandas ",{"type":30,"tag":724,"props":1286,"children":1287},{"style":1016},[1288],{"type":36,"value":1289},"as",{"type":30,"tag":724,"props":1291,"children":1292},{"style":747},[1293],{"type":36,"value":1294}," pd\n",{"type":30,"tag":724,"props":1296,"children":1297},{"class":726,"line":993},[1298],{"type":30,"tag":724,"props":1299,"children":1300},{"emptyLinePlaceholder":1006},[1301],{"type":36,"value":1009},{"type":30,"tag":724,"props":1303,"children":1304},{"class":726,"line":1002},[1305,1310,1315,1320,1325],{"type":30,"tag":724,"props":1306,"children":1307},{"style":747},[1308],{"type":36,"value":1309},"start_date ",{"type":30,"tag":724,"props":1311,"children":1312},{"style":1016},[1313],{"type":36,"value":1314},"=",{"type":30,"tag":724,"props":1316,"children":1317},{"style":747},[1318],{"type":36,"value":1319}," os.environ[",{"type":30,"tag":724,"props":1321,"children":1322},{"style":767},[1323],{"type":36,"value":1324},"\"BRUIN_START_DATE\"",{"type":30,"tag":724,"props":1326,"children":1327},{"style":747},[1328],{"type":36,"value":1329},"]\n",{"type":30,"tag":724,"props":1331,"children":1332},{"class":726,"line":1012},[1333,1338,1342,1346,1351],{"type":30,"tag":724,"props":1334,"children":1335},{"style":747},[1336],{"type":36,"value":1337},"end_date   ",{"type":30,"tag":724,"props":1339,"children":1340},{"style":1016},[1341],{"type":36,"value":1314},{"type":30,"tag":724,"props":1343,"children":1344},{"style":747},[1345],{"type":36,"value":1319},{"type":30,"tag":724,"props":1347,"children":1348},{"style":767},[1349],{"type":36,"value":1350},"\"BRUIN_END_DATE\"",{"type":30,"tag":724,"props":1352,"children":1353},{"style":747},[1354],{"type":36,"value":1329},{"type":30,"tag":724,"props":1356,"children":1357},{"class":726,"line":1022},[1358,1363,1367,1372,1377,1382,1387],{"type":30,"tag":724,"props":1359,"children":1360},{"style":747},[1361],{"type":36,"value":1362},"full_refresh ",{"type":30,"tag":724,"props":1364,"children":1365},{"style":1016},[1366],{"type":36,"value":1314},{"type":30,"tag":724,"props":1368,"children":1369},{"style":747},[1370],{"type":36,"value":1371}," os.environ.get(",{"type":30,"tag":724,"props":1373,"children":1374},{"style":767},[1375],{"type":36,"value":1376},"\"BRUIN_FULL_REFRESH\"",{"type":30,"tag":724,"props":1378,"children":1379},{"style":747},[1380],{"type":36,"value":1381},") ",{"type":30,"tag":724,"props":1383,"children":1384},{"style":1016},[1385],{"type":36,"value":1386},"==",{"type":30,"tag":724,"props":1388,"children":1389},{"style":767},[1390],{"type":36,"value":1391}," \"1\"\n",{"type":30,"tag":724,"props":1393,"children":1394},{"class":726,"line":1031},[1395],{"type":30,"tag":724,"props":1396,"children":1397},{"emptyLinePlaceholder":1006},[1398],{"type":36,"value":1009},{"type":30,"tag":724,"props":1400,"children":1401},{"class":726,"line":1040},[1402,1407],{"type":30,"tag":724,"props":1403,"children":1404},{"style":1016},[1405],{"type":36,"value":1406},"if",{"type":30,"tag":724,"props":1408,"children":1409},{"style":747},[1410],{"type":36,"value":1411}," full_refresh:\n",{"type":30,"tag":724,"props":1413,"children":1414},{"class":726,"line":1049},[1415],{"type":30,"tag":724,"props":1416,"children":1417},{"style":731},[1418],{"type":36,"value":1419},"    # First run: pull every contact ever created\n",{"type":30,"tag":724,"props":1421,"children":1422},{"class":726,"line":1058},[1423,1428,1432,1437,1442,1448,1452,1457],{"type":30,"tag":724,"props":1424,"children":1425},{"style":747},[1426],{"type":36,"value":1427},"    url ",{"type":30,"tag":724,"props":1429,"children":1430},{"style":1016},[1431],{"type":36,"value":1314},{"type":30,"tag":724,"props":1433,"children":1434},{"style":1016},[1435],{"type":36,"value":1436}," f",{"type":30,"tag":724,"props":1438,"children":1439},{"style":767},[1440],{"type":36,"value":1441},"\"https://api.example-crm.com/contacts?from=2015-01-01&to=",{"type":30,"tag":724,"props":1443,"children":1445},{"style":1444},"--shiki-default:#79B8FF",[1446],{"type":36,"value":1447},"{",{"type":30,"tag":724,"props":1449,"children":1450},{"style":747},[1451],{"type":36,"value":86},{"type":30,"tag":724,"props":1453,"children":1454},{"style":1444},[1455],{"type":36,"value":1456},"}",{"type":30,"tag":724,"props":1458,"children":1459},{"style":767},[1460],{"type":36,"value":1461},"\"\n",{"type":30,"tag":724,"props":1463,"children":1464},{"class":726,"line":1072},[1465,1470],{"type":30,"tag":724,"props":1466,"children":1467},{"style":1016},[1468],{"type":36,"value":1469},"else",{"type":30,"tag":724,"props":1471,"children":1472},{"style":747},[1473],{"type":36,"value":750},{"type":30,"tag":724,"props":1475,"children":1476},{"class":726,"line":1095},[1477],{"type":30,"tag":724,"props":1478,"children":1479},{"style":731},[1480],{"type":36,"value":1481},"    # Daily run: only contacts updated in the new window\n",{"type":30,"tag":724,"props":1483,"children":1485},{"class":726,"line":1484},20,[1486,1490,1494,1498,1503,1507,1511,1515,1520,1524,1528,1532],{"type":30,"tag":724,"props":1487,"children":1488},{"style":747},[1489],{"type":36,"value":1427},{"type":30,"tag":724,"props":1491,"children":1492},{"style":1016},[1493],{"type":36,"value":1314},{"type":30,"tag":724,"props":1495,"children":1496},{"style":1016},[1497],{"type":36,"value":1436},{"type":30,"tag":724,"props":1499,"children":1500},{"style":767},[1501],{"type":36,"value":1502},"\"https://api.example-crm.com/contacts?from=",{"type":30,"tag":724,"props":1504,"children":1505},{"style":1444},[1506],{"type":36,"value":1447},{"type":30,"tag":724,"props":1508,"children":1509},{"style":747},[1510],{"type":36,"value":75},{"type":30,"tag":724,"props":1512,"children":1513},{"style":1444},[1514],{"type":36,"value":1456},{"type":30,"tag":724,"props":1516,"children":1517},{"style":767},[1518],{"type":36,"value":1519},"&to=",{"type":30,"tag":724,"props":1521,"children":1522},{"style":1444},[1523],{"type":36,"value":1447},{"type":30,"tag":724,"props":1525,"children":1526},{"style":747},[1527],{"type":36,"value":86},{"type":30,"tag":724,"props":1529,"children":1530},{"style":1444},[1531],{"type":36,"value":1456},{"type":30,"tag":724,"props":1533,"children":1534},{"style":767},[1535],{"type":36,"value":1461},{"type":30,"tag":724,"props":1537,"children":1539},{"class":726,"line":1538},21,[1540],{"type":30,"tag":724,"props":1541,"children":1542},{"emptyLinePlaceholder":1006},[1543],{"type":36,"value":1009},{"type":30,"tag":724,"props":1545,"children":1547},{"class":726,"line":1546},22,[1548,1553,1557],{"type":30,"tag":724,"props":1549,"children":1550},{"style":747},[1551],{"type":36,"value":1552},"df ",{"type":30,"tag":724,"props":1554,"children":1555},{"style":1016},[1556],{"type":36,"value":1314},{"type":30,"tag":724,"props":1558,"children":1559},{"style":747},[1560],{"type":36,"value":1561}," pd.DataFrame(requests.get(url).json())\n",{"type":30,"tag":724,"props":1563,"children":1565},{"class":726,"line":1564},23,[1566,1571,1576],{"type":30,"tag":724,"props":1567,"children":1568},{"style":747},[1569],{"type":36,"value":1570},"df.to_parquet(",{"type":30,"tag":724,"props":1572,"children":1573},{"style":767},[1574],{"type":36,"value":1575},"\"/tmp/contacts.parquet\"",{"type":30,"tag":724,"props":1577,"children":1578},{"style":747},[1579],{"type":36,"value":1580},")\n",{"type":30,"tag":39,"props":1582,"children":1583},{},[1584,1590],{"type":30,"tag":70,"props":1585,"children":1587},{"className":1586},[],[1588],{"type":36,"value":1589},"BRUIN_FULL_REFRESH",{"type":36,"value":1591}," lets you branch between \"rebuild from scratch\" and \"incremental window\" without changing the pipeline definition.",{"type":30,"tag":39,"props":1593,"children":1594},{},[1595,1597,1603,1605,1611],{"type":36,"value":1596},"The ",{"type":30,"tag":53,"props":1598,"children":1600},{"href":1599},"/learn/bruin-python-sdk",[1601],{"type":36,"value":1602},"Bruin Python SDK",{"type":36,"value":1604}," exposes the same values on a ",{"type":30,"tag":70,"props":1606,"children":1608},{"className":1607},[],[1609],{"type":36,"value":1610},"context",{"type":36,"value":1612}," object:",{"type":30,"tag":714,"props":1614,"children":1616},{"className":1194,"code":1615,"language":1196,"meta":7,"style":7},"from bruin import context\n\nif context.is_full_refresh:\n    df = query(\"SELECT * FROM raw.contact_events\")\nelse:\n    df = query(f\"\"\"\n        SELECT * FROM raw.contact_events\n        WHERE event_ts >= '{context.start_date}'\n          AND event_ts \u003C  '{context.end_date}'\n    \"\"\")\n",[1617],{"type":30,"tag":70,"props":1618,"children":1619},{"__ignoreMap":7},[1620,1642,1649,1661,1687,1698,1723,1731,1757,1782],{"type":30,"tag":724,"props":1621,"children":1622},{"class":726,"line":727},[1623,1628,1633,1637],{"type":30,"tag":724,"props":1624,"children":1625},{"style":1016},[1626],{"type":36,"value":1627},"from",{"type":30,"tag":724,"props":1629,"children":1630},{"style":747},[1631],{"type":36,"value":1632}," bruin ",{"type":30,"tag":724,"props":1634,"children":1635},{"style":1016},[1636],{"type":36,"value":1255},{"type":30,"tag":724,"props":1638,"children":1639},{"style":747},[1640],{"type":36,"value":1641}," context\n",{"type":30,"tag":724,"props":1643,"children":1644},{"class":726,"line":737},[1645],{"type":30,"tag":724,"props":1646,"children":1647},{"emptyLinePlaceholder":1006},[1648],{"type":36,"value":1009},{"type":30,"tag":724,"props":1650,"children":1651},{"class":726,"line":753},[1652,1656],{"type":30,"tag":724,"props":1653,"children":1654},{"style":1016},[1655],{"type":36,"value":1406},{"type":30,"tag":724,"props":1657,"children":1658},{"style":747},[1659],{"type":36,"value":1660}," context.is_full_refresh:\n",{"type":30,"tag":724,"props":1662,"children":1663},{"class":726,"line":773},[1664,1669,1673,1678,1683],{"type":30,"tag":724,"props":1665,"children":1666},{"style":747},[1667],{"type":36,"value":1668},"    df ",{"type":30,"tag":724,"props":1670,"children":1671},{"style":1016},[1672],{"type":36,"value":1314},{"type":30,"tag":724,"props":1674,"children":1675},{"style":747},[1676],{"type":36,"value":1677}," query(",{"type":30,"tag":724,"props":1679,"children":1680},{"style":767},[1681],{"type":36,"value":1682},"\"SELECT * FROM raw.contact_events\"",{"type":30,"tag":724,"props":1684,"children":1685},{"style":747},[1686],{"type":36,"value":1580},{"type":30,"tag":724,"props":1688,"children":1689},{"class":726,"line":847},[1690,1694],{"type":30,"tag":724,"props":1691,"children":1692},{"style":1016},[1693],{"type":36,"value":1469},{"type":30,"tag":724,"props":1695,"children":1696},{"style":747},[1697],{"type":36,"value":750},{"type":30,"tag":724,"props":1699,"children":1700},{"class":726,"line":958},[1701,1705,1709,1713,1718],{"type":30,"tag":724,"props":1702,"children":1703},{"style":747},[1704],{"type":36,"value":1668},{"type":30,"tag":724,"props":1706,"children":1707},{"style":1016},[1708],{"type":36,"value":1314},{"type":30,"tag":724,"props":1710,"children":1711},{"style":747},[1712],{"type":36,"value":1677},{"type":30,"tag":724,"props":1714,"children":1715},{"style":1016},[1716],{"type":36,"value":1717},"f",{"type":30,"tag":724,"props":1719,"children":1720},{"style":767},[1721],{"type":36,"value":1722},"\"\"\"\n",{"type":30,"tag":724,"props":1724,"children":1725},{"class":726,"line":11},[1726],{"type":30,"tag":724,"props":1727,"children":1728},{"style":767},[1729],{"type":36,"value":1730},"        SELECT * FROM raw.contact_events\n",{"type":30,"tag":724,"props":1732,"children":1733},{"class":726,"line":975},[1734,1739,1743,1748,1752],{"type":30,"tag":724,"props":1735,"children":1736},{"style":767},[1737],{"type":36,"value":1738},"        WHERE event_ts >= '",{"type":30,"tag":724,"props":1740,"children":1741},{"style":1444},[1742],{"type":36,"value":1447},{"type":30,"tag":724,"props":1744,"children":1745},{"style":747},[1746],{"type":36,"value":1747},"context.start_date",{"type":30,"tag":724,"props":1749,"children":1750},{"style":1444},[1751],{"type":36,"value":1456},{"type":30,"tag":724,"props":1753,"children":1754},{"style":767},[1755],{"type":36,"value":1756},"'\n",{"type":30,"tag":724,"props":1758,"children":1759},{"class":726,"line":984},[1760,1765,1769,1774,1778],{"type":30,"tag":724,"props":1761,"children":1762},{"style":767},[1763],{"type":36,"value":1764},"          AND event_ts \u003C  '",{"type":30,"tag":724,"props":1766,"children":1767},{"style":1444},[1768],{"type":36,"value":1447},{"type":30,"tag":724,"props":1770,"children":1771},{"style":747},[1772],{"type":36,"value":1773},"context.end_date",{"type":30,"tag":724,"props":1775,"children":1776},{"style":1444},[1777],{"type":36,"value":1456},{"type":30,"tag":724,"props":1779,"children":1780},{"style":767},[1781],{"type":36,"value":1756},{"type":30,"tag":724,"props":1783,"children":1784},{"class":726,"line":993},[1785,1790],{"type":30,"tag":724,"props":1786,"children":1787},{"style":767},[1788],{"type":36,"value":1789},"    \"\"\"",{"type":30,"tag":724,"props":1791,"children":1792},{"style":747},[1793],{"type":36,"value":1580},{"type":30,"tag":891,"props":1795,"children":1796},{"v-slot:ingestr":7},[1797,1824,1970,1990],{"type":30,"tag":39,"props":1798,"children":1799},{},[1800,1802,1807,1809,1815,1816,1822],{"type":36,"value":1801},"No wiring needed - Bruin ",{"type":30,"tag":45,"props":1803,"children":1804},{},[1805],{"type":36,"value":1806},"automatically",{"type":36,"value":1808}," appends ",{"type":30,"tag":70,"props":1810,"children":1812},{"className":1811},[],[1813],{"type":36,"value":1814},"--interval-start",{"type":36,"value":705},{"type":30,"tag":70,"props":1817,"children":1819},{"className":1818},[],[1820],{"type":36,"value":1821},"--interval-end",{"type":36,"value":1823}," to the underlying ingestr invocation:",{"type":30,"tag":714,"props":1825,"children":1827},{"className":716,"code":1826,"language":718,"meta":7,"style":7},"# assets/hubspot_contacts.asset.yml\nname: raw.hubspot_contacts\ntype: ingestr\nparameters:\n  source_connection: hubspot\n  source_table: contacts\n  destination: bigquery\n  incremental_strategy: merge\n  incremental_key: updated_at\n",[1828],{"type":30,"tag":70,"props":1829,"children":1830},{"__ignoreMap":7},[1831,1839,1856,1873,1885,1902,1919,1936,1953],{"type":30,"tag":724,"props":1832,"children":1833},{"class":726,"line":727},[1834],{"type":30,"tag":724,"props":1835,"children":1836},{"style":731},[1837],{"type":36,"value":1838},"# assets/hubspot_contacts.asset.yml\n",{"type":30,"tag":724,"props":1840,"children":1841},{"class":726,"line":737},[1842,1847,1851],{"type":30,"tag":724,"props":1843,"children":1844},{"style":741},[1845],{"type":36,"value":1846},"name",{"type":30,"tag":724,"props":1848,"children":1849},{"style":747},[1850],{"type":36,"value":764},{"type":30,"tag":724,"props":1852,"children":1853},{"style":767},[1854],{"type":36,"value":1855},"raw.hubspot_contacts\n",{"type":30,"tag":724,"props":1857,"children":1858},{"class":726,"line":753},[1859,1864,1868],{"type":30,"tag":724,"props":1860,"children":1861},{"style":741},[1862],{"type":36,"value":1863},"type",{"type":30,"tag":724,"props":1865,"children":1866},{"style":747},[1867],{"type":36,"value":764},{"type":30,"tag":724,"props":1869,"children":1870},{"style":767},[1871],{"type":36,"value":1872},"ingestr\n",{"type":30,"tag":724,"props":1874,"children":1875},{"class":726,"line":773},[1876,1881],{"type":30,"tag":724,"props":1877,"children":1878},{"style":741},[1879],{"type":36,"value":1880},"parameters",{"type":30,"tag":724,"props":1882,"children":1883},{"style":747},[1884],{"type":36,"value":750},{"type":30,"tag":724,"props":1886,"children":1887},{"class":726,"line":847},[1888,1893,1897],{"type":30,"tag":724,"props":1889,"children":1890},{"style":741},[1891],{"type":36,"value":1892},"  source_connection",{"type":30,"tag":724,"props":1894,"children":1895},{"style":747},[1896],{"type":36,"value":764},{"type":30,"tag":724,"props":1898,"children":1899},{"style":767},[1900],{"type":36,"value":1901},"hubspot\n",{"type":30,"tag":724,"props":1903,"children":1904},{"class":726,"line":958},[1905,1910,1914],{"type":30,"tag":724,"props":1906,"children":1907},{"style":741},[1908],{"type":36,"value":1909},"  source_table",{"type":30,"tag":724,"props":1911,"children":1912},{"style":747},[1913],{"type":36,"value":764},{"type":30,"tag":724,"props":1915,"children":1916},{"style":767},[1917],{"type":36,"value":1918},"contacts\n",{"type":30,"tag":724,"props":1920,"children":1921},{"class":726,"line":11},[1922,1927,1931],{"type":30,"tag":724,"props":1923,"children":1924},{"style":741},[1925],{"type":36,"value":1926},"  destination",{"type":30,"tag":724,"props":1928,"children":1929},{"style":747},[1930],{"type":36,"value":764},{"type":30,"tag":724,"props":1932,"children":1933},{"style":767},[1934],{"type":36,"value":1935},"bigquery\n",{"type":30,"tag":724,"props":1937,"children":1938},{"class":726,"line":975},[1939,1944,1948],{"type":30,"tag":724,"props":1940,"children":1941},{"style":741},[1942],{"type":36,"value":1943},"  incremental_strategy",{"type":30,"tag":724,"props":1945,"children":1946},{"style":747},[1947],{"type":36,"value":764},{"type":30,"tag":724,"props":1949,"children":1950},{"style":767},[1951],{"type":36,"value":1952},"merge\n",{"type":30,"tag":724,"props":1954,"children":1955},{"class":726,"line":984},[1956,1961,1965],{"type":30,"tag":724,"props":1957,"children":1958},{"style":741},[1959],{"type":36,"value":1960},"  incremental_key",{"type":30,"tag":724,"props":1962,"children":1963},{"style":747},[1964],{"type":36,"value":764},{"type":30,"tag":724,"props":1966,"children":1967},{"style":767},[1968],{"type":36,"value":1969},"updated_at\n",{"type":30,"tag":39,"props":1971,"children":1972},{},[1973,1975,1981,1983,1988],{"type":36,"value":1974},"Regular runs fetch only rows where ",{"type":30,"tag":70,"props":1976,"children":1978},{"className":1977},[],[1979],{"type":36,"value":1980},"updated_at",{"type":36,"value":1982}," falls in the interval window; ",{"type":30,"tag":70,"props":1984,"children":1986},{"className":1985},[],[1987],{"type":36,"value":667},{"type":36,"value":1989}," propagates and ingestr replaces the destination table.",{"type":30,"tag":1991,"props":1992,"children":1993},"blockquote",{},[1994],{"type":30,"tag":39,"props":1995,"children":1996},{},[1997,1999,2005,2007,2013,2015,2021],{"type":36,"value":1998},"If ",{"type":30,"tag":70,"props":2000,"children":2002},{"className":2001},[],[2003],{"type":36,"value":2004},"incremental_key",{"type":36,"value":2006}," is typed as ",{"type":30,"tag":70,"props":2008,"children":2010},{"className":2009},[],[2011],{"type":36,"value":2012},"date",{"type":36,"value":2014},", Bruin also forwards it via ingestr's ",{"type":30,"tag":70,"props":2016,"children":2018},{"className":2017},[],[2019],{"type":36,"value":2020},"--columns",{"type":36,"value":2022}," option so it's parsed as a date, not a string.",{"type":30,"tag":340,"props":2024,"children":2025},{},[],{"type":30,"tag":31,"props":2027,"children":2029},{"id":2028},"full-refresh-and-refresh_restricted",[2030,2032],{"type":36,"value":2031},"Full refresh and ",{"type":30,"tag":70,"props":2033,"children":2035},{"className":2034},[],[2036],{"type":36,"value":2037},"refresh_restricted",{"type":30,"tag":39,"props":2039,"children":2040},{},[2041,2046,2048,2053,2054,2059],{"type":30,"tag":70,"props":2042,"children":2044},{"className":2043},[],[2045],{"type":36,"value":667},{"type":36,"value":2047}," does two things at once: expands the interval back to the pipeline ",{"type":30,"tag":70,"props":2049,"children":2051},{"className":2050},[],[2052],{"type":36,"value":75},{"type":36,"value":635},{"type":30,"tag":45,"props":2055,"children":2056},{},[2057],{"type":36,"value":2058},"and",{"type":36,"value":2060}," drops/recreates tables instead of appending or merging.",{"type":30,"tag":39,"props":2062,"children":2063},{},[2064],{"type":36,"value":2065},"The strategy-by-strategy behavior:",{"type":30,"tag":103,"props":2067,"children":2068},{},[2069,2093],{"type":30,"tag":107,"props":2070,"children":2071},{},[2072],{"type":30,"tag":111,"props":2073,"children":2074},{},[2075,2080,2085],{"type":30,"tag":115,"props":2076,"children":2077},{},[2078],{"type":36,"value":2079},"Strategy",{"type":30,"tag":115,"props":2081,"children":2082},{},[2083],{"type":36,"value":2084},"Default run",{"type":30,"tag":115,"props":2086,"children":2087},{},[2088],{"type":30,"tag":70,"props":2089,"children":2091},{"className":2090},[],[2092],{"type":36,"value":667},{"type":30,"tag":142,"props":2094,"children":2095},{},[2096,2117,2138,2164,2189],{"type":30,"tag":111,"props":2097,"children":2098},{},[2099,2107,2112],{"type":30,"tag":149,"props":2100,"children":2101},{},[2102],{"type":30,"tag":70,"props":2103,"children":2105},{"className":2104},[],[2106],{"type":36,"value":1132},{"type":30,"tag":149,"props":2108,"children":2109},{},[2110],{"type":36,"value":2111},"full overwrite every run",{"type":30,"tag":149,"props":2113,"children":2114},{},[2115],{"type":36,"value":2116},"full overwrite (same)",{"type":30,"tag":111,"props":2118,"children":2119},{},[2120,2128,2133],{"type":30,"tag":149,"props":2121,"children":2122},{},[2123],{"type":30,"tag":70,"props":2124,"children":2126},{"className":2125},[],[2127],{"type":36,"value":1139},{"type":30,"tag":149,"props":2129,"children":2130},{},[2131],{"type":36,"value":2132},"inserts new rows for the interval",{"type":30,"tag":149,"props":2134,"children":2135},{},[2136],{"type":36,"value":2137},"drops + reinserts everything",{"type":30,"tag":111,"props":2139,"children":2140},{},[2141,2149,2154],{"type":30,"tag":149,"props":2142,"children":2143},{},[2144],{"type":30,"tag":70,"props":2145,"children":2147},{"className":2146},[],[2148],{"type":36,"value":1146},{"type":30,"tag":149,"props":2150,"children":2151},{},[2152],{"type":36,"value":2153},"upserts rows in the interval",{"type":30,"tag":149,"props":2155,"children":2156},{},[2157,2159],{"type":36,"value":2158},"drops + reloads from ",{"type":30,"tag":70,"props":2160,"children":2162},{"className":2161},[],[2163],{"type":36,"value":75},{"type":30,"tag":111,"props":2165,"children":2166},{},[2167,2175,2180],{"type":30,"tag":149,"props":2168,"children":2169},{},[2170],{"type":30,"tag":70,"props":2171,"children":2173},{"className":2172},[],[2174],{"type":36,"value":1153},{"type":30,"tag":149,"props":2176,"children":2177},{},[2178],{"type":36,"value":2179},"deletes interval, reinserts",{"type":30,"tag":149,"props":2181,"children":2182},{},[2183,2184],{"type":36,"value":2158},{"type":30,"tag":70,"props":2185,"children":2187},{"className":2186},[],[2188],{"type":36,"value":75},{"type":30,"tag":111,"props":2190,"children":2191},{},[2192,2201,2206],{"type":30,"tag":149,"props":2193,"children":2194},{},[2195],{"type":30,"tag":70,"props":2196,"children":2198},{"className":2197},[],[2199],{"type":36,"value":2200},"time_interval",{"type":30,"tag":149,"props":2202,"children":2203},{},[2204],{"type":36,"value":2205},"deletes interval window, reinserts",{"type":30,"tag":149,"props":2207,"children":2208},{},[2209,2210],{"type":36,"value":2158},{"type":30,"tag":70,"props":2211,"children":2213},{"className":2212},[],[2214],{"type":36,"value":75},{"type":30,"tag":678,"props":2216,"children":2218},{"id":2217},"protecting-tables-with-refresh_restricted",[2219,2221],{"type":36,"value":2220},"Protecting tables with ",{"type":30,"tag":70,"props":2222,"children":2224},{"className":2223},[],[2225],{"type":36,"value":2037},{"type":30,"tag":39,"props":2227,"children":2228},{},[2229,2231,2236,2238,2243],{"type":36,"value":2230},"Some tables must ",{"type":30,"tag":45,"props":2232,"children":2233},{},[2234],{"type":36,"value":2235},"never",{"type":36,"value":2237}," be dropped on ",{"type":30,"tag":70,"props":2239,"children":2241},{"className":2240},[],[2242],{"type":36,"value":667},{"type":36,"value":2244}," - manually backfilled dimensions, tables with external dependencies, or slow-to-rebuild aggregates whose source has rotated out.",{"type":30,"tag":39,"props":2246,"children":2247},{},[2248,2250,2256,2258,2264],{"type":36,"value":2249},"Set ",{"type":30,"tag":70,"props":2251,"children":2253},{"className":2252},[],[2254],{"type":36,"value":2255},"refresh_restricted: true",{"type":36,"value":2257}," in the asset's ",{"type":30,"tag":70,"props":2259,"children":2261},{"className":2260},[],[2262],{"type":36,"value":2263},"materialization",{"type":36,"value":2265}," block to opt out of full-refresh drops:",{"type":30,"tag":714,"props":2267,"children":2269},{"className":716,"code":2268,"language":718,"meta":7,"style":7},"# assets/dim_customer.sql\n/* @bruin\nname: warehouse.dim_customer\ntype: bq.sql\nmaterialization:\n  type: table\n  strategy: merge\n  refresh_restricted: true\ncolumns:\n  - name: customer_id\n    type: integer\n    primary_key: true\n@bruin */\n\nSELECT customer_id, name, last_seen_at\nFROM raw.customers\nWHERE updated_at >= '{{ start_date }}'\n  AND updated_at \u003C  '{{ end_date }}'\n",[2270],{"type":30,"tag":70,"props":2271,"children":2272},{"__ignoreMap":7},[2273,2281,2288,2304,2320,2331,2348,2364,2381,2393,2414,2431,2447,2460,2467,2475,2483,2491],{"type":30,"tag":724,"props":2274,"children":2275},{"class":726,"line":727},[2276],{"type":30,"tag":724,"props":2277,"children":2278},{"style":731},[2279],{"type":36,"value":2280},"# assets/dim_customer.sql\n",{"type":30,"tag":724,"props":2282,"children":2283},{"class":726,"line":737},[2284],{"type":30,"tag":724,"props":2285,"children":2286},{"style":767},[2287],{"type":36,"value":931},{"type":30,"tag":724,"props":2289,"children":2290},{"class":726,"line":753},[2291,2295,2299],{"type":30,"tag":724,"props":2292,"children":2293},{"style":741},[2294],{"type":36,"value":1846},{"type":30,"tag":724,"props":2296,"children":2297},{"style":747},[2298],{"type":36,"value":764},{"type":30,"tag":724,"props":2300,"children":2301},{"style":767},[2302],{"type":36,"value":2303},"warehouse.dim_customer\n",{"type":30,"tag":724,"props":2305,"children":2306},{"class":726,"line":773},[2307,2311,2315],{"type":30,"tag":724,"props":2308,"children":2309},{"style":741},[2310],{"type":36,"value":1863},{"type":30,"tag":724,"props":2312,"children":2313},{"style":747},[2314],{"type":36,"value":764},{"type":30,"tag":724,"props":2316,"children":2317},{"style":767},[2318],{"type":36,"value":2319},"bq.sql\n",{"type":30,"tag":724,"props":2321,"children":2322},{"class":726,"line":847},[2323,2327],{"type":30,"tag":724,"props":2324,"children":2325},{"style":741},[2326],{"type":36,"value":2263},{"type":30,"tag":724,"props":2328,"children":2329},{"style":747},[2330],{"type":36,"value":750},{"type":30,"tag":724,"props":2332,"children":2333},{"class":726,"line":958},[2334,2339,2343],{"type":30,"tag":724,"props":2335,"children":2336},{"style":741},[2337],{"type":36,"value":2338},"  type",{"type":30,"tag":724,"props":2340,"children":2341},{"style":747},[2342],{"type":36,"value":764},{"type":30,"tag":724,"props":2344,"children":2345},{"style":767},[2346],{"type":36,"value":2347},"table\n",{"type":30,"tag":724,"props":2349,"children":2350},{"class":726,"line":11},[2351,2356,2360],{"type":30,"tag":724,"props":2352,"children":2353},{"style":741},[2354],{"type":36,"value":2355},"  strategy",{"type":30,"tag":724,"props":2357,"children":2358},{"style":747},[2359],{"type":36,"value":764},{"type":30,"tag":724,"props":2361,"children":2362},{"style":767},[2363],{"type":36,"value":1952},{"type":30,"tag":724,"props":2365,"children":2366},{"class":726,"line":975},[2367,2372,2376],{"type":30,"tag":724,"props":2368,"children":2369},{"style":741},[2370],{"type":36,"value":2371},"  refresh_restricted",{"type":30,"tag":724,"props":2373,"children":2374},{"style":747},[2375],{"type":36,"value":764},{"type":30,"tag":724,"props":2377,"children":2378},{"style":1444},[2379],{"type":36,"value":2380},"true\n",{"type":30,"tag":724,"props":2382,"children":2383},{"class":726,"line":984},[2384,2389],{"type":30,"tag":724,"props":2385,"children":2386},{"style":741},[2387],{"type":36,"value":2388},"columns",{"type":30,"tag":724,"props":2390,"children":2391},{"style":747},[2392],{"type":36,"value":750},{"type":30,"tag":724,"props":2394,"children":2395},{"class":726,"line":993},[2396,2401,2405,2409],{"type":30,"tag":724,"props":2397,"children":2398},{"style":747},[2399],{"type":36,"value":2400},"  - ",{"type":30,"tag":724,"props":2402,"children":2403},{"style":741},[2404],{"type":36,"value":1846},{"type":30,"tag":724,"props":2406,"children":2407},{"style":747},[2408],{"type":36,"value":764},{"type":30,"tag":724,"props":2410,"children":2411},{"style":767},[2412],{"type":36,"value":2413},"customer_id\n",{"type":30,"tag":724,"props":2415,"children":2416},{"class":726,"line":1002},[2417,2422,2426],{"type":30,"tag":724,"props":2418,"children":2419},{"style":741},[2420],{"type":36,"value":2421},"    type",{"type":30,"tag":724,"props":2423,"children":2424},{"style":747},[2425],{"type":36,"value":764},{"type":30,"tag":724,"props":2427,"children":2428},{"style":767},[2429],{"type":36,"value":2430},"integer\n",{"type":30,"tag":724,"props":2432,"children":2433},{"class":726,"line":1012},[2434,2439,2443],{"type":30,"tag":724,"props":2435,"children":2436},{"style":741},[2437],{"type":36,"value":2438},"    primary_key",{"type":30,"tag":724,"props":2440,"children":2441},{"style":747},[2442],{"type":36,"value":764},{"type":30,"tag":724,"props":2444,"children":2445},{"style":1444},[2446],{"type":36,"value":2380},{"type":30,"tag":724,"props":2448,"children":2449},{"class":726,"line":1022},[2450,2455],{"type":30,"tag":724,"props":2451,"children":2452},{"style":747},[2453],{"type":36,"value":2454},"@",{"type":30,"tag":724,"props":2456,"children":2457},{"style":767},[2458],{"type":36,"value":2459},"bruin */\n",{"type":30,"tag":724,"props":2461,"children":2462},{"class":726,"line":1031},[2463],{"type":30,"tag":724,"props":2464,"children":2465},{"emptyLinePlaceholder":1006},[2466],{"type":36,"value":1009},{"type":30,"tag":724,"props":2468,"children":2469},{"class":726,"line":1040},[2470],{"type":30,"tag":724,"props":2471,"children":2472},{"style":767},[2473],{"type":36,"value":2474},"SELECT customer_id, name, last_seen_at\n",{"type":30,"tag":724,"props":2476,"children":2477},{"class":726,"line":1049},[2478],{"type":30,"tag":724,"props":2479,"children":2480},{"style":767},[2481],{"type":36,"value":2482},"FROM raw.customers\n",{"type":30,"tag":724,"props":2484,"children":2485},{"class":726,"line":1058},[2486],{"type":30,"tag":724,"props":2487,"children":2488},{"style":767},[2489],{"type":36,"value":2490},"WHERE updated_at >= '{{ start_date }}'\n",{"type":30,"tag":724,"props":2492,"children":2493},{"class":726,"line":1072},[2494],{"type":30,"tag":724,"props":2495,"children":2496},{"style":767},[2497],{"type":36,"value":2498},"  AND updated_at \u003C  '{{ end_date }}'\n",{"type":30,"tag":39,"props":2500,"children":2501},{},[2502],{"type":36,"value":2503},"The asset now behaves like a regular incremental run no matter how the pipeline is invoked - the table on disk is never replaced, only updated by its declared strategy.",{"type":30,"tag":39,"props":2505,"children":2506},{},[2507,2509,2515],{"type":36,"value":2508},"To rebuild a restricted asset, flip the flag to ",{"type":30,"tag":70,"props":2510,"children":2512},{"className":2511},[],[2513],{"type":36,"value":2514},"false",{"type":36,"value":2516},", run, then flip it back. That makes the destructive intent explicit in version control rather than a hidden side effect of how the run was triggered.",{"type":30,"tag":340,"props":2518,"children":2519},{},[],{"type":30,"tag":31,"props":2521,"children":2523},{"id":2522},"best-practices",[2524],{"type":36,"value":2525},"Best practices",{"type":30,"tag":62,"props":2527,"children":2528},{},[2529,2554,2591,2620,2678,2701,2717,2732],{"type":30,"tag":66,"props":2530,"children":2531},{},[2532,2544,2546,2552],{"type":30,"tag":45,"props":2533,"children":2534},{},[2535,2537,2542],{"type":36,"value":2536},"Always interval-bound ",{"type":30,"tag":70,"props":2538,"children":2540},{"className":2539},[],[2541],{"type":36,"value":904},{"type":36,"value":2543}," clauses",{"type":36,"value":2545}," - ",{"type":30,"tag":70,"props":2547,"children":2549},{"className":2548},[],[2550],{"type":36,"value":2551},"WHERE ts >= '{{ start_date }}' AND ts \u003C '{{ end_date }}'",{"type":36,"value":2553},". Open-ended filters defeat the purpose of intervals",{"type":30,"tag":66,"props":2555,"children":2556},{},[2557,2582,2584,2589],{"type":30,"tag":45,"props":2558,"children":2559},{},[2560,2562,2567,2569,2575,2577],{"type":36,"value":2561},"Use ",{"type":30,"tag":70,"props":2563,"children":2565},{"className":2564},[],[2566],{"type":36,"value":1110},{"type":36,"value":2568}," (not ",{"type":30,"tag":70,"props":2570,"children":2572},{"className":2571},[],[2573],{"type":36,"value":2574},"\u003C=",{"type":36,"value":2576},") on ",{"type":30,"tag":70,"props":2578,"children":2580},{"className":2579},[],[2581],{"type":36,"value":86},{"type":36,"value":2583}," - it's exclusive; ",{"type":30,"tag":70,"props":2585,"children":2587},{"className":2586},[],[2588],{"type":36,"value":2574},{"type":36,"value":2590}," causes overlap with the next run",{"type":30,"tag":66,"props":2592,"children":2593},{},[2594,2599,2600,2605,2606,2611,2613,2618],{"type":30,"tag":45,"props":2595,"children":2596},{},[2597],{"type":36,"value":2598},"Pick the right strategy for re-runs",{"type":36,"value":2545},{"type":30,"tag":70,"props":2601,"children":2603},{"className":2602},[],[2604],{"type":36,"value":2200},{"type":36,"value":705},{"type":30,"tag":70,"props":2607,"children":2609},{"className":2608},[],[2610],{"type":36,"value":1153},{"type":36,"value":2612}," make windows idempotent; ",{"type":30,"tag":70,"props":2614,"children":2616},{"className":2615},[],[2617],{"type":36,"value":1139},{"type":36,"value":2619}," does not",{"type":30,"tag":66,"props":2621,"children":2622},{},[2623,2628,2629,2634,2635,2640,2642,2647,2649,2654,2656,2662,2664,2669,2671,2676],{"type":30,"tag":45,"props":2624,"children":2625},{},[2626],{"type":36,"value":2627},"Keep filter window = delete window",{"type":36,"value":2545},{"type":30,"tag":70,"props":2630,"children":2632},{"className":2631},[],[2633],{"type":36,"value":2200},{"type":36,"value":705},{"type":30,"tag":70,"props":2636,"children":2638},{"className":2637},[],[2639],{"type":36,"value":1153},{"type":36,"value":2641}," only delete rows in the runtime interval, so a query that reaches further back inserts rows it didn't delete. Example: ",{"type":30,"tag":70,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":36,"value":183},{"type":36,"value":2648}," + ",{"type":30,"tag":70,"props":2650,"children":2652},{"className":2651},[],[2653],{"type":36,"value":2200},{"type":36,"value":2655}," deletes 1 day, but ",{"type":30,"tag":70,"props":2657,"children":2659},{"className":2658},[],[2660],{"type":36,"value":2661},"WHERE ts >= start_date - 3 days",{"type":36,"value":2663}," inserts 4 - that's 3 duplicates. Extend the window with ",{"type":30,"tag":53,"props":2665,"children":2667},{"href":691,"rel":2666},[693],[2668],{"type":36,"value":696},{"type":36,"value":2670},", not the ",{"type":30,"tag":70,"props":2672,"children":2674},{"className":2673},[],[2675],{"type":36,"value":904},{"type":36,"value":2677}," clause",{"type":30,"tag":66,"props":2679,"children":2680},{},[2681,2691,2693,2699],{"type":30,"tag":45,"props":2682,"children":2683},{},[2684,2686],{"type":36,"value":2685},"In Python, branch on ",{"type":30,"tag":70,"props":2687,"children":2689},{"className":2688},[],[2690],{"type":36,"value":1589},{"type":36,"value":2692}," - check ",{"type":30,"tag":70,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":36,"value":2698},"os.environ.get(\"BRUIN_FULL_REFRESH\") == \"1\"",{"type":36,"value":2700}," to pick between the full-history path and the incremental-window path, keeping both in one asset",{"type":30,"tag":66,"props":2702,"children":2703},{},[2704,2715],{"type":30,"tag":45,"props":2705,"children":2706},{},[2707,2708,2713],{"type":36,"value":2249},{"type":30,"tag":70,"props":2709,"children":2711},{"className":2710},[],[2712],{"type":36,"value":2255},{"type":36,"value":2714}," on hand-curated tables",{"type":36,"value":2716}," - prevents accidental drops during pipeline-wide full refresh",{"type":30,"tag":66,"props":2718,"children":2719},{},[2720,2730],{"type":30,"tag":45,"props":2721,"children":2722},{},[2723,2725],{"type":36,"value":2724},"Set a sensible pipeline ",{"type":30,"tag":70,"props":2726,"children":2728},{"className":2727},[],[2729],{"type":36,"value":75},{"type":36,"value":2731}," - it bounds how far back full-refresh will go",{"type":30,"tag":66,"props":2733,"children":2734},{},[2735,2740,2741,2747],{"type":30,"tag":45,"props":2736,"children":2737},{},[2738],{"type":36,"value":2739},"Render before you run",{"type":36,"value":2545},{"type":30,"tag":70,"props":2742,"children":2744},{"className":2743},[],[2745],{"type":36,"value":2746},"bruin render",{"type":36,"value":2748}," shows the exact dates Bruin will inject so you catch off-by-one mistakes early",{"type":30,"tag":340,"props":2750,"children":2751},{},[],{"type":30,"tag":31,"props":2753,"children":2755},{"id":2754},"helpful-links",[2756],{"type":36,"value":2757},"Helpful links",{"type":30,"tag":62,"props":2759,"children":2760},{},[2761,2771,2781,2791,2801,2809],{"type":30,"tag":66,"props":2762,"children":2763},{},[2764],{"type":30,"tag":53,"props":2765,"children":2768},{"href":2766,"rel":2767},"https://getbruin.com/docs/bruin/variables/overview.html",[693],[2769],{"type":36,"value":2770},"Variables overview",{"type":30,"tag":66,"props":2772,"children":2773},{},[2774],{"type":30,"tag":53,"props":2775,"children":2778},{"href":2776,"rel":2777},"https://getbruin.com/docs/bruin/assets/materialization.html#full-refresh-and-refresh-restricted",[693],[2779],{"type":36,"value":2780},"Materialization and full-refresh",{"type":30,"tag":66,"props":2782,"children":2783},{},[2784],{"type":30,"tag":53,"props":2785,"children":2788},{"href":2786,"rel":2787},"https://getbruin.com/docs/bruin/pipelines/definition.html#start-date",[693],[2789],{"type":36,"value":2790},"Pipeline definition - start_date",{"type":30,"tag":66,"props":2792,"children":2793},{},[2794],{"type":30,"tag":53,"props":2795,"children":2798},{"href":2796,"rel":2797},"https://getbruin.com/docs/bruin/assets/ingestr.html",[693],[2799],{"type":36,"value":2800},"ingestr asset reference",{"type":30,"tag":66,"props":2802,"children":2803},{},[2804],{"type":30,"tag":53,"props":2805,"children":2806},{"href":55},[2807],{"type":36,"value":2808},"Variables tutorial",{"type":30,"tag":66,"props":2810,"children":2811},{},[2812],{"type":30,"tag":53,"props":2813,"children":2816},{"href":2814,"rel":2815},"https://youtu.be/XCx0nDmhhxA",[693],[2817],{"type":36,"value":2818},"Variables video walkthrough",{"type":30,"tag":2820,"props":2821,"children":2822},"style",{},[2823],{"type":36,"value":2824},"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":737,"depth":737,"links":2826},[2827,2828,2831,2832,2837,2838],{"id":33,"depth":737,"text":37},{"id":345,"depth":737,"text":348,"children":2829},[2830],{"id":680,"depth":753,"text":683},{"id":880,"depth":737,"text":883},{"id":2028,"depth":737,"text":2833,"children":2834},"Full refresh and refresh_restricted",[2835],{"id":2217,"depth":753,"text":2836},"Protecting tables with refresh_restricted",{"id":2522,"depth":737,"text":2525},{"id":2754,"depth":737,"text":2757},"markdown","content:tutorials:incremental-vs-full-refresh-runs.md","content","tutorials/incremental-vs-full-refresh-runs.md","tutorials/incremental-vs-full-refresh-runs","md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"readingTime":11,"category":12,"tags":2846,"difficulty":18,"journeys":2847,"hidden":6,"author":2848,"body":2849,"_type":2839,"_id":2840,"_source":2841,"_file":2842,"_stem":2843,"_extension":2844},[14,15,16,17],[20,21],{"name":23,"role":24,"image":25},{"type":27,"children":2850,"toc":5220},[2851,2855,2869,2890,2900,3006,3015,3100,3104,3107,3111,3121,3218,3222,3346,3379,3395,3399,3421,3475,3540,3550,3553,3557,4522,4525,4534,4554,4558,4696,4705,4720,4736,4948,4952,4962,4965,4969,5159,5162,5166,5216],{"type":30,"tag":31,"props":2852,"children":2853},{"id":33},[2854],{"type":36,"value":37},{"type":30,"tag":39,"props":2856,"children":2857},{},[2858,2859,2863,2864,2868],{"type":36,"value":43},{"type":30,"tag":45,"props":2860,"children":2861},{},[2862],{"type":36,"value":49},{"type":36,"value":51},{"type":30,"tag":53,"props":2865,"children":2866},{"href":55},[2867],{"type":36,"value":58},{"type":36,"value":60},{"type":30,"tag":62,"props":2870,"children":2871},{},[2872,2881],{"type":30,"tag":66,"props":2873,"children":2874},{},[2875,2880],{"type":30,"tag":70,"props":2876,"children":2878},{"className":2877},[],[2879],{"type":36,"value":75},{"type":36,"value":77},{"type":30,"tag":66,"props":2882,"children":2883},{},[2884,2889],{"type":30,"tag":70,"props":2885,"children":2887},{"className":2886},[],[2888],{"type":36,"value":86},{"type":36,"value":88},{"type":30,"tag":39,"props":2891,"children":2892},{},[2893,2894,2899],{"type":36,"value":93},{"type":30,"tag":70,"props":2895,"children":2897},{"className":2896},[],[2898],{"type":36,"value":99},{"type":36,"value":101},{"type":30,"tag":103,"props":2901,"children":2902},{},[2903,2933],{"type":30,"tag":107,"props":2904,"children":2905},{},[2906],{"type":30,"tag":111,"props":2907,"children":2908},{},[2909,2913,2917,2925],{"type":30,"tag":115,"props":2910,"children":2911},{},[2912],{"type":36,"value":119},{"type":30,"tag":115,"props":2914,"children":2915},{},[2916],{"type":36,"value":124},{"type":30,"tag":115,"props":2918,"children":2919},{},[2920],{"type":30,"tag":70,"props":2921,"children":2923},{"className":2922},[],[2924],{"type":36,"value":75},{"type":30,"tag":115,"props":2926,"children":2927},{},[2928],{"type":30,"tag":70,"props":2929,"children":2931},{"className":2930},[],[2932],{"type":36,"value":86},{"type":30,"tag":142,"props":2934,"children":2935},{},[2936,2959,2982],{"type":30,"tag":111,"props":2937,"children":2938},{},[2939,2947,2951,2955],{"type":30,"tag":149,"props":2940,"children":2941},{},[2942],{"type":30,"tag":70,"props":2943,"children":2945},{"className":2944},[],[2946],{"type":36,"value":157},{"type":30,"tag":149,"props":2948,"children":2949},{},[2950],{"type":36,"value":162},{"type":30,"tag":149,"props":2952,"children":2953},{},[2954],{"type":36,"value":167},{"type":30,"tag":149,"props":2956,"children":2957},{},[2958],{"type":36,"value":162},{"type":30,"tag":111,"props":2960,"children":2961},{},[2962,2970,2974,2978],{"type":30,"tag":149,"props":2963,"children":2964},{},[2965],{"type":30,"tag":70,"props":2966,"children":2968},{"className":2967},[],[2969],{"type":36,"value":183},{"type":30,"tag":149,"props":2971,"children":2972},{},[2973],{"type":36,"value":188},{"type":30,"tag":149,"props":2975,"children":2976},{},[2977],{"type":36,"value":193},{"type":30,"tag":149,"props":2979,"children":2980},{},[2981],{"type":36,"value":10},{"type":30,"tag":111,"props":2983,"children":2984},{},[2985,2994,2998,3002],{"type":30,"tag":149,"props":2986,"children":2987},{},[2988,2993],{"type":30,"tag":70,"props":2989,"children":2991},{"className":2990},[],[2992],{"type":36,"value":209},{"type":36,"value":211},{"type":30,"tag":149,"props":2995,"children":2996},{},[2997],{"type":36,"value":216},{"type":30,"tag":149,"props":2999,"children":3000},{},[3001],{"type":36,"value":221},{"type":30,"tag":149,"props":3003,"children":3004},{},[3005],{"type":36,"value":216},{"type":30,"tag":39,"props":3007,"children":3008},{},[3009,3010,3014],{"type":36,"value":230},{"type":30,"tag":45,"props":3011,"children":3012},{},[3013],{"type":36,"value":235},{"type":36,"value":237},{"type":30,"tag":103,"props":3016,"children":3017},{},[3018,3032],{"type":30,"tag":107,"props":3019,"children":3020},{},[3021],{"type":30,"tag":111,"props":3022,"children":3023},{},[3024,3028],{"type":30,"tag":115,"props":3025,"children":3026},{},[3027],{"type":36,"value":251},{"type":30,"tag":115,"props":3029,"children":3030},{},[3031],{"type":36,"value":256},{"type":30,"tag":142,"props":3033,"children":3034},{},[3035,3061,3086],{"type":30,"tag":111,"props":3036,"children":3037},{},[3038,3045],{"type":30,"tag":149,"props":3039,"children":3040},{},[3041],{"type":30,"tag":45,"props":3042,"children":3043},{},[3044],{"type":36,"value":15},{"type":30,"tag":149,"props":3046,"children":3047},{},[3048,3049,3054,3055,3060],{"type":36,"value":274},{"type":30,"tag":70,"props":3050,"children":3052},{"className":3051},[],[3053],{"type":36,"value":280},{"type":36,"value":282},{"type":30,"tag":70,"props":3056,"children":3058},{"className":3057},[],[3059],{"type":36,"value":288},{"type":36,"value":290},{"type":30,"tag":111,"props":3062,"children":3063},{},[3064,3071],{"type":30,"tag":149,"props":3065,"children":3066},{},[3067],{"type":30,"tag":45,"props":3068,"children":3069},{},[3070],{"type":36,"value":16},{"type":30,"tag":149,"props":3072,"children":3073},{},[3074,3075,3080,3081],{"type":36,"value":305},{"type":30,"tag":70,"props":3076,"children":3078},{"className":3077},[],[3079],{"type":36,"value":311},{"type":36,"value":282},{"type":30,"tag":70,"props":3082,"children":3084},{"className":3083},[],[3085],{"type":36,"value":318},{"type":30,"tag":111,"props":3087,"children":3088},{},[3089,3096],{"type":30,"tag":149,"props":3090,"children":3091},{},[3092],{"type":30,"tag":45,"props":3093,"children":3094},{},[3095],{"type":36,"value":17},{"type":30,"tag":149,"props":3097,"children":3098},{},[3099],{"type":36,"value":333},{"type":30,"tag":39,"props":3101,"children":3102},{},[3103],{"type":36,"value":338},{"type":30,"tag":340,"props":3105,"children":3106},{},[],{"type":30,"tag":31,"props":3108,"children":3109},{"id":345},[3110],{"type":36,"value":348},{"type":30,"tag":39,"props":3112,"children":3113},{},[3114,3115,3120],{"type":36,"value":353},{"type":30,"tag":70,"props":3116,"children":3118},{"className":3117},[],[3119],{"type":36,"value":75},{"type":36,"value":360},{"type":30,"tag":103,"props":3122,"children":3123},{},[3124,3146],{"type":30,"tag":107,"props":3125,"children":3126},{},[3127],{"type":30,"tag":111,"props":3128,"children":3129},{},[3130,3138,3142],{"type":30,"tag":115,"props":3131,"children":3132},{},[3133],{"type":30,"tag":70,"props":3134,"children":3136},{"className":3135},[],[3137],{"type":36,"value":75},{"type":30,"tag":115,"props":3139,"children":3140},{},[3141],{"type":36,"value":382},{"type":30,"tag":115,"props":3143,"children":3144},{},[3145],{"type":36,"value":387},{"type":30,"tag":142,"props":3147,"children":3148},{},[3149,3177,3195],{"type":30,"tag":111,"props":3150,"children":3151},{},[3152,3159,3173],{"type":30,"tag":149,"props":3153,"children":3154},{},[3155],{"type":30,"tag":45,"props":3156,"children":3157},{},[3158],{"type":36,"value":401},{"type":30,"tag":149,"props":3160,"children":3161},{},[3162,3167,3168],{"type":30,"tag":70,"props":3163,"children":3165},{"className":3164},[],[3166],{"type":36,"value":75},{"type":36,"value":411},{"type":30,"tag":70,"props":3169,"children":3171},{"className":3170},[],[3172],{"type":36,"value":417},{"type":30,"tag":149,"props":3174,"children":3175},{},[3176],{"type":36,"value":422},{"type":30,"tag":111,"props":3178,"children":3179},{},[3180,3187,3191],{"type":30,"tag":149,"props":3181,"children":3182},{},[3183],{"type":30,"tag":45,"props":3184,"children":3185},{},[3186],{"type":36,"value":433},{"type":30,"tag":149,"props":3188,"children":3189},{},[3190],{"type":36,"value":438},{"type":30,"tag":149,"props":3192,"children":3193},{},[3194],{"type":36,"value":443},{"type":30,"tag":111,"props":3196,"children":3197},{},[3198,3205,3214],{"type":30,"tag":149,"props":3199,"children":3200},{},[3201],{"type":30,"tag":45,"props":3202,"children":3203},{},[3204],{"type":36,"value":454},{"type":30,"tag":149,"props":3206,"children":3207},{},[3208,3213],{"type":30,"tag":70,"props":3209,"children":3211},{"className":3210},[],[3212],{"type":36,"value":463},{"type":36,"value":465},{"type":30,"tag":149,"props":3215,"children":3216},{},[3217],{"type":36,"value":470},{"type":30,"tag":39,"props":3219,"children":3220},{},[3221],{"type":36,"value":475},{"type":30,"tag":103,"props":3223,"children":3224},{},[3225,3257],{"type":30,"tag":107,"props":3226,"children":3227},{},[3228],{"type":30,"tag":111,"props":3229,"children":3230},{},[3231,3235,3244,3253],{"type":30,"tag":115,"props":3232,"children":3233},{},[3234],{"type":36,"value":489},{"type":30,"tag":115,"props":3236,"children":3237},{},[3238,3239],{"type":36,"value":494},{"type":30,"tag":70,"props":3240,"children":3242},{"className":3241},[],[3243],{"type":36,"value":75},{"type":30,"tag":115,"props":3245,"children":3246},{},[3247,3248],{"type":36,"value":494},{"type":30,"tag":70,"props":3249,"children":3251},{"className":3250},[],[3252],{"type":36,"value":86},{"type":30,"tag":115,"props":3254,"children":3255},{},[3256],{"type":36,"value":513},{"type":30,"tag":142,"props":3258,"children":3259},{},[3260,3288,3311],{"type":30,"tag":111,"props":3261,"children":3262},{},[3263,3271,3280,3284],{"type":30,"tag":149,"props":3264,"children":3265},{},[3266],{"type":30,"tag":70,"props":3267,"children":3269},{"className":3268},[],[3270],{"type":36,"value":528},{"type":30,"tag":149,"props":3272,"children":3273},{},[3274,3275],{"type":36,"value":533},{"type":30,"tag":70,"props":3276,"children":3278},{"className":3277},[],[3279],{"type":36,"value":75},{"type":30,"tag":149,"props":3281,"children":3282},{},[3283],{"type":36,"value":543},{"type":30,"tag":149,"props":3285,"children":3286},{},[3287],{"type":36,"value":548},{"type":30,"tag":111,"props":3289,"children":3290},{},[3291,3299,3303,3307],{"type":30,"tag":149,"props":3292,"children":3293},{},[3294],{"type":30,"tag":70,"props":3295,"children":3297},{"className":3296},[],[3298],{"type":36,"value":560},{"type":30,"tag":149,"props":3300,"children":3301},{},[3302],{"type":36,"value":565},{"type":30,"tag":149,"props":3304,"children":3305},{},[3306],{"type":36,"value":570},{"type":30,"tag":149,"props":3308,"children":3309},{},[3310],{"type":36,"value":575},{"type":30,"tag":111,"props":3312,"children":3313},{},[3314,3322,3332,3342],{"type":30,"tag":149,"props":3315,"children":3316},{},[3317],{"type":30,"tag":70,"props":3318,"children":3320},{"className":3319},[],[3321],{"type":36,"value":587},{"type":30,"tag":149,"props":3323,"children":3324},{},[3325,3326,3331],{"type":36,"value":592},{"type":30,"tag":70,"props":3327,"children":3329},{"className":3328},[],[3330],{"type":36,"value":598},{"type":36,"value":600},{"type":30,"tag":149,"props":3333,"children":3334},{},[3335,3336,3341],{"type":36,"value":592},{"type":30,"tag":70,"props":3337,"children":3339},{"className":3338},[],[3340],{"type":36,"value":610},{"type":36,"value":600},{"type":30,"tag":149,"props":3343,"children":3344},{},[3345],{"type":36,"value":616},{"type":30,"tag":39,"props":3347,"children":3348},{},[3349,3350,3354,3355,3360,3361,3366,3367,3372,3373,3378],{"type":36,"value":621},{"type":30,"tag":45,"props":3351,"children":3352},{},[3353],{"type":36,"value":626},{"type":36,"value":628},{"type":30,"tag":70,"props":3356,"children":3358},{"className":3357},[],[3359],{"type":36,"value":157},{"type":36,"value":635},{"type":30,"tag":70,"props":3362,"children":3364},{"className":3363},[],[3365],{"type":36,"value":183},{"type":36,"value":635},{"type":30,"tag":70,"props":3368,"children":3370},{"className":3369},[],[3371],{"type":36,"value":647},{"type":36,"value":635},{"type":30,"tag":70,"props":3374,"children":3376},{"className":3375},[],[3377],{"type":36,"value":654},{"type":36,"value":656},{"type":30,"tag":39,"props":3380,"children":3381},{},[3382,3383,3388,3389,3394],{"type":36,"value":661},{"type":30,"tag":70,"props":3384,"children":3386},{"className":3385},[],[3387],{"type":36,"value":667},{"type":36,"value":669},{"type":30,"tag":70,"props":3390,"children":3392},{"className":3391},[],[3393],{"type":36,"value":75},{"type":36,"value":676},{"type":30,"tag":678,"props":3396,"children":3397},{"id":680},[3398],{"type":36,"value":683},{"type":30,"tag":39,"props":3400,"children":3401},{},[3402,3403,3408,3409,3414,3415,3420],{"type":36,"value":688},{"type":30,"tag":53,"props":3404,"children":3406},{"href":691,"rel":3405},[693],[3407],{"type":36,"value":696},{"type":36,"value":698},{"type":30,"tag":70,"props":3410,"children":3412},{"className":3411},[],[3413],{"type":36,"value":75},{"type":36,"value":705},{"type":30,"tag":70,"props":3416,"children":3418},{"className":3417},[],[3419],{"type":36,"value":86},{"type":36,"value":712},{"type":30,"tag":714,"props":3422,"children":3423},{"className":716,"code":717,"language":718,"meta":7,"style":7},[3424],{"type":30,"tag":70,"props":3425,"children":3426},{"__ignoreMap":7},[3427,3434,3445,3460],{"type":30,"tag":724,"props":3428,"children":3429},{"class":726,"line":727},[3430],{"type":30,"tag":724,"props":3431,"children":3432},{"style":731},[3433],{"type":36,"value":734},{"type":30,"tag":724,"props":3435,"children":3436},{"class":726,"line":737},[3437,3441],{"type":30,"tag":724,"props":3438,"children":3439},{"style":741},[3440],{"type":36,"value":744},{"type":30,"tag":724,"props":3442,"children":3443},{"style":747},[3444],{"type":36,"value":750},{"type":30,"tag":724,"props":3446,"children":3447},{"class":726,"line":753},[3448,3452,3456],{"type":30,"tag":724,"props":3449,"children":3450},{"style":741},[3451],{"type":36,"value":759},{"type":30,"tag":724,"props":3453,"children":3454},{"style":747},[3455],{"type":36,"value":764},{"type":30,"tag":724,"props":3457,"children":3458},{"style":767},[3459],{"type":36,"value":770},{"type":30,"tag":724,"props":3461,"children":3462},{"class":726,"line":773},[3463,3467,3471],{"type":30,"tag":724,"props":3464,"children":3465},{"style":741},[3466],{"type":36,"value":779},{"type":30,"tag":724,"props":3468,"children":3469},{"style":747},[3470],{"type":36,"value":764},{"type":30,"tag":724,"props":3472,"children":3473},{"style":767},[3474],{"type":36,"value":788},{"type":30,"tag":714,"props":3476,"children":3477},{"className":716,"code":791,"language":718,"meta":7,"style":7},[3478],{"type":30,"tag":70,"props":3479,"children":3480},{"__ignoreMap":7},[3481,3488,3499,3510,3525],{"type":30,"tag":724,"props":3482,"children":3483},{"class":726,"line":727},[3484],{"type":30,"tag":724,"props":3485,"children":3486},{"style":731},[3487],{"type":36,"value":803},{"type":30,"tag":724,"props":3489,"children":3490},{"class":726,"line":737},[3491,3495],{"type":30,"tag":724,"props":3492,"children":3493},{"style":741},[3494],{"type":36,"value":811},{"type":30,"tag":724,"props":3496,"children":3497},{"style":747},[3498],{"type":36,"value":750},{"type":30,"tag":724,"props":3500,"children":3501},{"class":726,"line":753},[3502,3506],{"type":30,"tag":724,"props":3503,"children":3504},{"style":741},[3505],{"type":36,"value":823},{"type":30,"tag":724,"props":3507,"children":3508},{"style":747},[3509],{"type":36,"value":750},{"type":30,"tag":724,"props":3511,"children":3512},{"class":726,"line":773},[3513,3517,3521],{"type":30,"tag":724,"props":3514,"children":3515},{"style":741},[3516],{"type":36,"value":835},{"type":30,"tag":724,"props":3518,"children":3519},{"style":747},[3520],{"type":36,"value":764},{"type":30,"tag":724,"props":3522,"children":3523},{"style":767},[3524],{"type":36,"value":844},{"type":30,"tag":724,"props":3526,"children":3527},{"class":726,"line":847},[3528,3532,3536],{"type":30,"tag":724,"props":3529,"children":3530},{"style":741},[3531],{"type":36,"value":853},{"type":30,"tag":724,"props":3533,"children":3534},{"style":747},[3535],{"type":36,"value":764},{"type":30,"tag":724,"props":3537,"children":3538},{"style":767},[3539],{"type":36,"value":788},{"type":30,"tag":39,"props":3541,"children":3542},{},[3543,3544,3549],{"type":36,"value":866},{"type":30,"tag":70,"props":3545,"children":3547},{"className":3546},[],[3548],{"type":36,"value":872},{"type":36,"value":874},{"type":30,"tag":340,"props":3551,"children":3552},{},[],{"type":30,"tag":31,"props":3554,"children":3555},{"id":880},[3556],{"type":36,"value":883},{"type":30,"tag":885,"props":3558,"children":3559},{":variants":887,"group":888},[3560,3789,4328],{"type":30,"tag":891,"props":3561,"children":3562},{"v-slot:sql":7},[3563,3573,3740,3779],{"type":30,"tag":39,"props":3564,"children":3565},{},[3566,3567,3572],{"type":36,"value":898},{"type":30,"tag":70,"props":3568,"children":3570},{"className":3569},[],[3571],{"type":36,"value":904},{"type":36,"value":906},{"type":30,"tag":714,"props":3574,"children":3575},{"className":909,"code":910,"language":911,"meta":7,"style":7},[3576],{"type":30,"tag":70,"props":3577,"children":3578},{"__ignoreMap":7},[3579,3586,3593,3600,3607,3614,3621,3628,3635,3642,3649,3656,3663,3670,3677,3684,3691,3702,3721],{"type":30,"tag":724,"props":3580,"children":3581},{"class":726,"line":727},[3582],{"type":30,"tag":724,"props":3583,"children":3584},{"style":731},[3585],{"type":36,"value":923},{"type":30,"tag":724,"props":3587,"children":3588},{"class":726,"line":737},[3589],{"type":30,"tag":724,"props":3590,"children":3591},{"style":731},[3592],{"type":36,"value":931},{"type":30,"tag":724,"props":3594,"children":3595},{"class":726,"line":753},[3596],{"type":30,"tag":724,"props":3597,"children":3598},{"style":731},[3599],{"type":36,"value":939},{"type":30,"tag":724,"props":3601,"children":3602},{"class":726,"line":773},[3603],{"type":30,"tag":724,"props":3604,"children":3605},{"style":731},[3606],{"type":36,"value":947},{"type":30,"tag":724,"props":3608,"children":3609},{"class":726,"line":847},[3610],{"type":30,"tag":724,"props":3611,"children":3612},{"style":731},[3613],{"type":36,"value":955},{"type":30,"tag":724,"props":3615,"children":3616},{"class":726,"line":958},[3617],{"type":30,"tag":724,"props":3618,"children":3619},{"style":731},[3620],{"type":36,"value":964},{"type":30,"tag":724,"props":3622,"children":3623},{"class":726,"line":11},[3624],{"type":30,"tag":724,"props":3625,"children":3626},{"style":731},[3627],{"type":36,"value":972},{"type":30,"tag":724,"props":3629,"children":3630},{"class":726,"line":975},[3631],{"type":30,"tag":724,"props":3632,"children":3633},{"style":731},[3634],{"type":36,"value":981},{"type":30,"tag":724,"props":3636,"children":3637},{"class":726,"line":984},[3638],{"type":30,"tag":724,"props":3639,"children":3640},{"style":731},[3641],{"type":36,"value":990},{"type":30,"tag":724,"props":3643,"children":3644},{"class":726,"line":993},[3645],{"type":30,"tag":724,"props":3646,"children":3647},{"style":731},[3648],{"type":36,"value":999},{"type":30,"tag":724,"props":3650,"children":3651},{"class":726,"line":1002},[3652],{"type":30,"tag":724,"props":3653,"children":3654},{"emptyLinePlaceholder":1006},[3655],{"type":36,"value":1009},{"type":30,"tag":724,"props":3657,"children":3658},{"class":726,"line":1012},[3659],{"type":30,"tag":724,"props":3660,"children":3661},{"style":1016},[3662],{"type":36,"value":1019},{"type":30,"tag":724,"props":3664,"children":3665},{"class":726,"line":1022},[3666],{"type":30,"tag":724,"props":3667,"children":3668},{"style":747},[3669],{"type":36,"value":1028},{"type":30,"tag":724,"props":3671,"children":3672},{"class":726,"line":1031},[3673],{"type":30,"tag":724,"props":3674,"children":3675},{"style":747},[3676],{"type":36,"value":1037},{"type":30,"tag":724,"props":3678,"children":3679},{"class":726,"line":1040},[3680],{"type":30,"tag":724,"props":3681,"children":3682},{"style":747},[3683],{"type":36,"value":1046},{"type":30,"tag":724,"props":3685,"children":3686},{"class":726,"line":1049},[3687],{"type":30,"tag":724,"props":3688,"children":3689},{"style":747},[3690],{"type":36,"value":1055},{"type":30,"tag":724,"props":3692,"children":3693},{"class":726,"line":1058},[3694,3698],{"type":30,"tag":724,"props":3695,"children":3696},{"style":1016},[3697],{"type":36,"value":1064},{"type":30,"tag":724,"props":3699,"children":3700},{"style":767},[3701],{"type":36,"value":1069},{"type":30,"tag":724,"props":3703,"children":3704},{"class":726,"line":1072},[3705,3709,3713,3717],{"type":30,"tag":724,"props":3706,"children":3707},{"style":1016},[3708],{"type":36,"value":904},{"type":30,"tag":724,"props":3710,"children":3711},{"style":747},[3712],{"type":36,"value":1082},{"type":30,"tag":724,"props":3714,"children":3715},{"style":1016},[3716],{"type":36,"value":1087},{"type":30,"tag":724,"props":3718,"children":3719},{"style":767},[3720],{"type":36,"value":1092},{"type":30,"tag":724,"props":3722,"children":3723},{"class":726,"line":1095},[3724,3728,3732,3736],{"type":30,"tag":724,"props":3725,"children":3726},{"style":1016},[3727],{"type":36,"value":1101},{"type":30,"tag":724,"props":3729,"children":3730},{"style":747},[3731],{"type":36,"value":1082},{"type":30,"tag":724,"props":3733,"children":3734},{"style":1016},[3735],{"type":36,"value":1110},{"type":30,"tag":724,"props":3737,"children":3738},{"style":767},[3739],{"type":36,"value":1115},{"type":30,"tag":39,"props":3741,"children":3742},{},[3743,3748,3749,3754,3755,3760,3761,3766,3767,3772,3773,3778],{"type":30,"tag":70,"props":3744,"children":3746},{"className":3745},[],[3747],{"type":36,"value":1124},{"type":36,"value":1126},{"type":30,"tag":70,"props":3750,"children":3752},{"className":3751},[],[3753],{"type":36,"value":1132},{"type":36,"value":635},{"type":30,"tag":70,"props":3756,"children":3758},{"className":3757},[],[3759],{"type":36,"value":1139},{"type":36,"value":635},{"type":30,"tag":70,"props":3762,"children":3764},{"className":3763},[],[3765],{"type":36,"value":1146},{"type":36,"value":635},{"type":30,"tag":70,"props":3768,"children":3770},{"className":3769},[],[3771],{"type":36,"value":1153},{"type":36,"value":1155},{"type":30,"tag":53,"props":3774,"children":3776},{"href":1158,"rel":3775},[693],[3777],{"type":36,"value":1162},{"type":36,"value":1164},{"type":30,"tag":39,"props":3780,"children":3781},{},[3782,3783,3788],{"type":36,"value":1169},{"type":30,"tag":70,"props":3784,"children":3786},{"className":3785},[],[3787],{"type":36,"value":1175},{"type":36,"value":1177},{"type":30,"tag":891,"props":3790,"children":3791},{"v-slot:python":7},[3792,3801,4140,4149,4164],{"type":30,"tag":39,"props":3793,"children":3794},{},[3795,3796,3800],{"type":36,"value":1185},{"type":30,"tag":45,"props":3797,"children":3798},{},[3799],{"type":36,"value":1190},{"type":36,"value":60},{"type":30,"tag":714,"props":3802,"children":3803},{"className":1194,"code":1195,"language":1196,"meta":7,"style":7},[3804],{"type":30,"tag":70,"props":3805,"children":3806},{"__ignoreMap":7},[3807,3814,3821,3828,3835,3842,3849,3860,3871,3890,3897,3920,3943,3974,3981,3992,3999,4034,4045,4052,4103,4110,4125],{"type":30,"tag":724,"props":3808,"children":3809},{"class":726,"line":727},[3810],{"type":30,"tag":724,"props":3811,"children":3812},{"style":731},[3813],{"type":36,"value":1208},{"type":30,"tag":724,"props":3815,"children":3816},{"class":726,"line":737},[3817],{"type":30,"tag":724,"props":3818,"children":3819},{"style":767},[3820],{"type":36,"value":1216},{"type":30,"tag":724,"props":3822,"children":3823},{"class":726,"line":753},[3824],{"type":30,"tag":724,"props":3825,"children":3826},{"style":767},[3827],{"type":36,"value":1224},{"type":30,"tag":724,"props":3829,"children":3830},{"class":726,"line":773},[3831],{"type":30,"tag":724,"props":3832,"children":3833},{"style":767},[3834],{"type":36,"value":1232},{"type":30,"tag":724,"props":3836,"children":3837},{"class":726,"line":847},[3838],{"type":30,"tag":724,"props":3839,"children":3840},{"style":767},[3841],{"type":36,"value":1240},{"type":30,"tag":724,"props":3843,"children":3844},{"class":726,"line":958},[3845],{"type":30,"tag":724,"props":3846,"children":3847},{"emptyLinePlaceholder":1006},[3848],{"type":36,"value":1009},{"type":30,"tag":724,"props":3850,"children":3851},{"class":726,"line":11},[3852,3856],{"type":30,"tag":724,"props":3853,"children":3854},{"style":1016},[3855],{"type":36,"value":1255},{"type":30,"tag":724,"props":3857,"children":3858},{"style":747},[3859],{"type":36,"value":1260},{"type":30,"tag":724,"props":3861,"children":3862},{"class":726,"line":975},[3863,3867],{"type":30,"tag":724,"props":3864,"children":3865},{"style":1016},[3866],{"type":36,"value":1255},{"type":30,"tag":724,"props":3868,"children":3869},{"style":747},[3870],{"type":36,"value":1272},{"type":30,"tag":724,"props":3872,"children":3873},{"class":726,"line":984},[3874,3878,3882,3886],{"type":30,"tag":724,"props":3875,"children":3876},{"style":1016},[3877],{"type":36,"value":1255},{"type":30,"tag":724,"props":3879,"children":3880},{"style":747},[3881],{"type":36,"value":1284},{"type":30,"tag":724,"props":3883,"children":3884},{"style":1016},[3885],{"type":36,"value":1289},{"type":30,"tag":724,"props":3887,"children":3888},{"style":747},[3889],{"type":36,"value":1294},{"type":30,"tag":724,"props":3891,"children":3892},{"class":726,"line":993},[3893],{"type":30,"tag":724,"props":3894,"children":3895},{"emptyLinePlaceholder":1006},[3896],{"type":36,"value":1009},{"type":30,"tag":724,"props":3898,"children":3899},{"class":726,"line":1002},[3900,3904,3908,3912,3916],{"type":30,"tag":724,"props":3901,"children":3902},{"style":747},[3903],{"type":36,"value":1309},{"type":30,"tag":724,"props":3905,"children":3906},{"style":1016},[3907],{"type":36,"value":1314},{"type":30,"tag":724,"props":3909,"children":3910},{"style":747},[3911],{"type":36,"value":1319},{"type":30,"tag":724,"props":3913,"children":3914},{"style":767},[3915],{"type":36,"value":1324},{"type":30,"tag":724,"props":3917,"children":3918},{"style":747},[3919],{"type":36,"value":1329},{"type":30,"tag":724,"props":3921,"children":3922},{"class":726,"line":1012},[3923,3927,3931,3935,3939],{"type":30,"tag":724,"props":3924,"children":3925},{"style":747},[3926],{"type":36,"value":1337},{"type":30,"tag":724,"props":3928,"children":3929},{"style":1016},[3930],{"type":36,"value":1314},{"type":30,"tag":724,"props":3932,"children":3933},{"style":747},[3934],{"type":36,"value":1319},{"type":30,"tag":724,"props":3936,"children":3937},{"style":767},[3938],{"type":36,"value":1350},{"type":30,"tag":724,"props":3940,"children":3941},{"style":747},[3942],{"type":36,"value":1329},{"type":30,"tag":724,"props":3944,"children":3945},{"class":726,"line":1022},[3946,3950,3954,3958,3962,3966,3970],{"type":30,"tag":724,"props":3947,"children":3948},{"style":747},[3949],{"type":36,"value":1362},{"type":30,"tag":724,"props":3951,"children":3952},{"style":1016},[3953],{"type":36,"value":1314},{"type":30,"tag":724,"props":3955,"children":3956},{"style":747},[3957],{"type":36,"value":1371},{"type":30,"tag":724,"props":3959,"children":3960},{"style":767},[3961],{"type":36,"value":1376},{"type":30,"tag":724,"props":3963,"children":3964},{"style":747},[3965],{"type":36,"value":1381},{"type":30,"tag":724,"props":3967,"children":3968},{"style":1016},[3969],{"type":36,"value":1386},{"type":30,"tag":724,"props":3971,"children":3972},{"style":767},[3973],{"type":36,"value":1391},{"type":30,"tag":724,"props":3975,"children":3976},{"class":726,"line":1031},[3977],{"type":30,"tag":724,"props":3978,"children":3979},{"emptyLinePlaceholder":1006},[3980],{"type":36,"value":1009},{"type":30,"tag":724,"props":3982,"children":3983},{"class":726,"line":1040},[3984,3988],{"type":30,"tag":724,"props":3985,"children":3986},{"style":1016},[3987],{"type":36,"value":1406},{"type":30,"tag":724,"props":3989,"children":3990},{"style":747},[3991],{"type":36,"value":1411},{"type":30,"tag":724,"props":3993,"children":3994},{"class":726,"line":1049},[3995],{"type":30,"tag":724,"props":3996,"children":3997},{"style":731},[3998],{"type":36,"value":1419},{"type":30,"tag":724,"props":4000,"children":4001},{"class":726,"line":1058},[4002,4006,4010,4014,4018,4022,4026,4030],{"type":30,"tag":724,"props":4003,"children":4004},{"style":747},[4005],{"type":36,"value":1427},{"type":30,"tag":724,"props":4007,"children":4008},{"style":1016},[4009],{"type":36,"value":1314},{"type":30,"tag":724,"props":4011,"children":4012},{"style":1016},[4013],{"type":36,"value":1436},{"type":30,"tag":724,"props":4015,"children":4016},{"style":767},[4017],{"type":36,"value":1441},{"type":30,"tag":724,"props":4019,"children":4020},{"style":1444},[4021],{"type":36,"value":1447},{"type":30,"tag":724,"props":4023,"children":4024},{"style":747},[4025],{"type":36,"value":86},{"type":30,"tag":724,"props":4027,"children":4028},{"style":1444},[4029],{"type":36,"value":1456},{"type":30,"tag":724,"props":4031,"children":4032},{"style":767},[4033],{"type":36,"value":1461},{"type":30,"tag":724,"props":4035,"children":4036},{"class":726,"line":1072},[4037,4041],{"type":30,"tag":724,"props":4038,"children":4039},{"style":1016},[4040],{"type":36,"value":1469},{"type":30,"tag":724,"props":4042,"children":4043},{"style":747},[4044],{"type":36,"value":750},{"type":30,"tag":724,"props":4046,"children":4047},{"class":726,"line":1095},[4048],{"type":30,"tag":724,"props":4049,"children":4050},{"style":731},[4051],{"type":36,"value":1481},{"type":30,"tag":724,"props":4053,"children":4054},{"class":726,"line":1484},[4055,4059,4063,4067,4071,4075,4079,4083,4087,4091,4095,4099],{"type":30,"tag":724,"props":4056,"children":4057},{"style":747},[4058],{"type":36,"value":1427},{"type":30,"tag":724,"props":4060,"children":4061},{"style":1016},[4062],{"type":36,"value":1314},{"type":30,"tag":724,"props":4064,"children":4065},{"style":1016},[4066],{"type":36,"value":1436},{"type":30,"tag":724,"props":4068,"children":4069},{"style":767},[4070],{"type":36,"value":1502},{"type":30,"tag":724,"props":4072,"children":4073},{"style":1444},[4074],{"type":36,"value":1447},{"type":30,"tag":724,"props":4076,"children":4077},{"style":747},[4078],{"type":36,"value":75},{"type":30,"tag":724,"props":4080,"children":4081},{"style":1444},[4082],{"type":36,"value":1456},{"type":30,"tag":724,"props":4084,"children":4085},{"style":767},[4086],{"type":36,"value":1519},{"type":30,"tag":724,"props":4088,"children":4089},{"style":1444},[4090],{"type":36,"value":1447},{"type":30,"tag":724,"props":4092,"children":4093},{"style":747},[4094],{"type":36,"value":86},{"type":30,"tag":724,"props":4096,"children":4097},{"style":1444},[4098],{"type":36,"value":1456},{"type":30,"tag":724,"props":4100,"children":4101},{"style":767},[4102],{"type":36,"value":1461},{"type":30,"tag":724,"props":4104,"children":4105},{"class":726,"line":1538},[4106],{"type":30,"tag":724,"props":4107,"children":4108},{"emptyLinePlaceholder":1006},[4109],{"type":36,"value":1009},{"type":30,"tag":724,"props":4111,"children":4112},{"class":726,"line":1546},[4113,4117,4121],{"type":30,"tag":724,"props":4114,"children":4115},{"style":747},[4116],{"type":36,"value":1552},{"type":30,"tag":724,"props":4118,"children":4119},{"style":1016},[4120],{"type":36,"value":1314},{"type":30,"tag":724,"props":4122,"children":4123},{"style":747},[4124],{"type":36,"value":1561},{"type":30,"tag":724,"props":4126,"children":4127},{"class":726,"line":1564},[4128,4132,4136],{"type":30,"tag":724,"props":4129,"children":4130},{"style":747},[4131],{"type":36,"value":1570},{"type":30,"tag":724,"props":4133,"children":4134},{"style":767},[4135],{"type":36,"value":1575},{"type":30,"tag":724,"props":4137,"children":4138},{"style":747},[4139],{"type":36,"value":1580},{"type":30,"tag":39,"props":4141,"children":4142},{},[4143,4148],{"type":30,"tag":70,"props":4144,"children":4146},{"className":4145},[],[4147],{"type":36,"value":1589},{"type":36,"value":1591},{"type":30,"tag":39,"props":4150,"children":4151},{},[4152,4153,4157,4158,4163],{"type":36,"value":1596},{"type":30,"tag":53,"props":4154,"children":4155},{"href":1599},[4156],{"type":36,"value":1602},{"type":36,"value":1604},{"type":30,"tag":70,"props":4159,"children":4161},{"className":4160},[],[4162],{"type":36,"value":1610},{"type":36,"value":1612},{"type":30,"tag":714,"props":4165,"children":4166},{"className":1194,"code":1615,"language":1196,"meta":7,"style":7},[4167],{"type":30,"tag":70,"props":4168,"children":4169},{"__ignoreMap":7},[4170,4189,4196,4207,4230,4241,4264,4271,4294,4317],{"type":30,"tag":724,"props":4171,"children":4172},{"class":726,"line":727},[4173,4177,4181,4185],{"type":30,"tag":724,"props":4174,"children":4175},{"style":1016},[4176],{"type":36,"value":1627},{"type":30,"tag":724,"props":4178,"children":4179},{"style":747},[4180],{"type":36,"value":1632},{"type":30,"tag":724,"props":4182,"children":4183},{"style":1016},[4184],{"type":36,"value":1255},{"type":30,"tag":724,"props":4186,"children":4187},{"style":747},[4188],{"type":36,"value":1641},{"type":30,"tag":724,"props":4190,"children":4191},{"class":726,"line":737},[4192],{"type":30,"tag":724,"props":4193,"children":4194},{"emptyLinePlaceholder":1006},[4195],{"type":36,"value":1009},{"type":30,"tag":724,"props":4197,"children":4198},{"class":726,"line":753},[4199,4203],{"type":30,"tag":724,"props":4200,"children":4201},{"style":1016},[4202],{"type":36,"value":1406},{"type":30,"tag":724,"props":4204,"children":4205},{"style":747},[4206],{"type":36,"value":1660},{"type":30,"tag":724,"props":4208,"children":4209},{"class":726,"line":773},[4210,4214,4218,4222,4226],{"type":30,"tag":724,"props":4211,"children":4212},{"style":747},[4213],{"type":36,"value":1668},{"type":30,"tag":724,"props":4215,"children":4216},{"style":1016},[4217],{"type":36,"value":1314},{"type":30,"tag":724,"props":4219,"children":4220},{"style":747},[4221],{"type":36,"value":1677},{"type":30,"tag":724,"props":4223,"children":4224},{"style":767},[4225],{"type":36,"value":1682},{"type":30,"tag":724,"props":4227,"children":4228},{"style":747},[4229],{"type":36,"value":1580},{"type":30,"tag":724,"props":4231,"children":4232},{"class":726,"line":847},[4233,4237],{"type":30,"tag":724,"props":4234,"children":4235},{"style":1016},[4236],{"type":36,"value":1469},{"type":30,"tag":724,"props":4238,"children":4239},{"style":747},[4240],{"type":36,"value":750},{"type":30,"tag":724,"props":4242,"children":4243},{"class":726,"line":958},[4244,4248,4252,4256,4260],{"type":30,"tag":724,"props":4245,"children":4246},{"style":747},[4247],{"type":36,"value":1668},{"type":30,"tag":724,"props":4249,"children":4250},{"style":1016},[4251],{"type":36,"value":1314},{"type":30,"tag":724,"props":4253,"children":4254},{"style":747},[4255],{"type":36,"value":1677},{"type":30,"tag":724,"props":4257,"children":4258},{"style":1016},[4259],{"type":36,"value":1717},{"type":30,"tag":724,"props":4261,"children":4262},{"style":767},[4263],{"type":36,"value":1722},{"type":30,"tag":724,"props":4265,"children":4266},{"class":726,"line":11},[4267],{"type":30,"tag":724,"props":4268,"children":4269},{"style":767},[4270],{"type":36,"value":1730},{"type":30,"tag":724,"props":4272,"children":4273},{"class":726,"line":975},[4274,4278,4282,4286,4290],{"type":30,"tag":724,"props":4275,"children":4276},{"style":767},[4277],{"type":36,"value":1738},{"type":30,"tag":724,"props":4279,"children":4280},{"style":1444},[4281],{"type":36,"value":1447},{"type":30,"tag":724,"props":4283,"children":4284},{"style":747},[4285],{"type":36,"value":1747},{"type":30,"tag":724,"props":4287,"children":4288},{"style":1444},[4289],{"type":36,"value":1456},{"type":30,"tag":724,"props":4291,"children":4292},{"style":767},[4293],{"type":36,"value":1756},{"type":30,"tag":724,"props":4295,"children":4296},{"class":726,"line":984},[4297,4301,4305,4309,4313],{"type":30,"tag":724,"props":4298,"children":4299},{"style":767},[4300],{"type":36,"value":1764},{"type":30,"tag":724,"props":4302,"children":4303},{"style":1444},[4304],{"type":36,"value":1447},{"type":30,"tag":724,"props":4306,"children":4307},{"style":747},[4308],{"type":36,"value":1773},{"type":30,"tag":724,"props":4310,"children":4311},{"style":1444},[4312],{"type":36,"value":1456},{"type":30,"tag":724,"props":4314,"children":4315},{"style":767},[4316],{"type":36,"value":1756},{"type":30,"tag":724,"props":4318,"children":4319},{"class":726,"line":993},[4320,4324],{"type":30,"tag":724,"props":4321,"children":4322},{"style":767},[4323],{"type":36,"value":1789},{"type":30,"tag":724,"props":4325,"children":4326},{"style":747},[4327],{"type":36,"value":1580},{"type":30,"tag":891,"props":4329,"children":4330},{"v-slot:ingestr":7},[4331,4352,4481,4497],{"type":30,"tag":39,"props":4332,"children":4333},{},[4334,4335,4339,4340,4345,4346,4351],{"type":36,"value":1801},{"type":30,"tag":45,"props":4336,"children":4337},{},[4338],{"type":36,"value":1806},{"type":36,"value":1808},{"type":30,"tag":70,"props":4341,"children":4343},{"className":4342},[],[4344],{"type":36,"value":1814},{"type":36,"value":705},{"type":30,"tag":70,"props":4347,"children":4349},{"className":4348},[],[4350],{"type":36,"value":1821},{"type":36,"value":1823},{"type":30,"tag":714,"props":4353,"children":4354},{"className":716,"code":1826,"language":718,"meta":7,"style":7},[4355],{"type":30,"tag":70,"props":4356,"children":4357},{"__ignoreMap":7},[4358,4365,4380,4395,4406,4421,4436,4451,4466],{"type":30,"tag":724,"props":4359,"children":4360},{"class":726,"line":727},[4361],{"type":30,"tag":724,"props":4362,"children":4363},{"style":731},[4364],{"type":36,"value":1838},{"type":30,"tag":724,"props":4366,"children":4367},{"class":726,"line":737},[4368,4372,4376],{"type":30,"tag":724,"props":4369,"children":4370},{"style":741},[4371],{"type":36,"value":1846},{"type":30,"tag":724,"props":4373,"children":4374},{"style":747},[4375],{"type":36,"value":764},{"type":30,"tag":724,"props":4377,"children":4378},{"style":767},[4379],{"type":36,"value":1855},{"type":30,"tag":724,"props":4381,"children":4382},{"class":726,"line":753},[4383,4387,4391],{"type":30,"tag":724,"props":4384,"children":4385},{"style":741},[4386],{"type":36,"value":1863},{"type":30,"tag":724,"props":4388,"children":4389},{"style":747},[4390],{"type":36,"value":764},{"type":30,"tag":724,"props":4392,"children":4393},{"style":767},[4394],{"type":36,"value":1872},{"type":30,"tag":724,"props":4396,"children":4397},{"class":726,"line":773},[4398,4402],{"type":30,"tag":724,"props":4399,"children":4400},{"style":741},[4401],{"type":36,"value":1880},{"type":30,"tag":724,"props":4403,"children":4404},{"style":747},[4405],{"type":36,"value":750},{"type":30,"tag":724,"props":4407,"children":4408},{"class":726,"line":847},[4409,4413,4417],{"type":30,"tag":724,"props":4410,"children":4411},{"style":741},[4412],{"type":36,"value":1892},{"type":30,"tag":724,"props":4414,"children":4415},{"style":747},[4416],{"type":36,"value":764},{"type":30,"tag":724,"props":4418,"children":4419},{"style":767},[4420],{"type":36,"value":1901},{"type":30,"tag":724,"props":4422,"children":4423},{"class":726,"line":958},[4424,4428,4432],{"type":30,"tag":724,"props":4425,"children":4426},{"style":741},[4427],{"type":36,"value":1909},{"type":30,"tag":724,"props":4429,"children":4430},{"style":747},[4431],{"type":36,"value":764},{"type":30,"tag":724,"props":4433,"children":4434},{"style":767},[4435],{"type":36,"value":1918},{"type":30,"tag":724,"props":4437,"children":4438},{"class":726,"line":11},[4439,4443,4447],{"type":30,"tag":724,"props":4440,"children":4441},{"style":741},[4442],{"type":36,"value":1926},{"type":30,"tag":724,"props":4444,"children":4445},{"style":747},[4446],{"type":36,"value":764},{"type":30,"tag":724,"props":4448,"children":4449},{"style":767},[4450],{"type":36,"value":1935},{"type":30,"tag":724,"props":4452,"children":4453},{"class":726,"line":975},[4454,4458,4462],{"type":30,"tag":724,"props":4455,"children":4456},{"style":741},[4457],{"type":36,"value":1943},{"type":30,"tag":724,"props":4459,"children":4460},{"style":747},[4461],{"type":36,"value":764},{"type":30,"tag":724,"props":4463,"children":4464},{"style":767},[4465],{"type":36,"value":1952},{"type":30,"tag":724,"props":4467,"children":4468},{"class":726,"line":984},[4469,4473,4477],{"type":30,"tag":724,"props":4470,"children":4471},{"style":741},[4472],{"type":36,"value":1960},{"type":30,"tag":724,"props":4474,"children":4475},{"style":747},[4476],{"type":36,"value":764},{"type":30,"tag":724,"props":4478,"children":4479},{"style":767},[4480],{"type":36,"value":1969},{"type":30,"tag":39,"props":4482,"children":4483},{},[4484,4485,4490,4491,4496],{"type":36,"value":1974},{"type":30,"tag":70,"props":4486,"children":4488},{"className":4487},[],[4489],{"type":36,"value":1980},{"type":36,"value":1982},{"type":30,"tag":70,"props":4492,"children":4494},{"className":4493},[],[4495],{"type":36,"value":667},{"type":36,"value":1989},{"type":30,"tag":1991,"props":4498,"children":4499},{},[4500],{"type":30,"tag":39,"props":4501,"children":4502},{},[4503,4504,4509,4510,4515,4516,4521],{"type":36,"value":1998},{"type":30,"tag":70,"props":4505,"children":4507},{"className":4506},[],[4508],{"type":36,"value":2004},{"type":36,"value":2006},{"type":30,"tag":70,"props":4511,"children":4513},{"className":4512},[],[4514],{"type":36,"value":2012},{"type":36,"value":2014},{"type":30,"tag":70,"props":4517,"children":4519},{"className":4518},[],[4520],{"type":36,"value":2020},{"type":36,"value":2022},{"type":30,"tag":340,"props":4523,"children":4524},{},[],{"type":30,"tag":31,"props":4526,"children":4527},{"id":2028},[4528,4529],{"type":36,"value":2031},{"type":30,"tag":70,"props":4530,"children":4532},{"className":4531},[],[4533],{"type":36,"value":2037},{"type":30,"tag":39,"props":4535,"children":4536},{},[4537,4542,4543,4548,4549,4553],{"type":30,"tag":70,"props":4538,"children":4540},{"className":4539},[],[4541],{"type":36,"value":667},{"type":36,"value":2047},{"type":30,"tag":70,"props":4544,"children":4546},{"className":4545},[],[4547],{"type":36,"value":75},{"type":36,"value":635},{"type":30,"tag":45,"props":4550,"children":4551},{},[4552],{"type":36,"value":2058},{"type":36,"value":2060},{"type":30,"tag":39,"props":4555,"children":4556},{},[4557],{"type":36,"value":2065},{"type":30,"tag":103,"props":4559,"children":4560},{},[4561,4583],{"type":30,"tag":107,"props":4562,"children":4563},{},[4564],{"type":30,"tag":111,"props":4565,"children":4566},{},[4567,4571,4575],{"type":30,"tag":115,"props":4568,"children":4569},{},[4570],{"type":36,"value":2079},{"type":30,"tag":115,"props":4572,"children":4573},{},[4574],{"type":36,"value":2084},{"type":30,"tag":115,"props":4576,"children":4577},{},[4578],{"type":30,"tag":70,"props":4579,"children":4581},{"className":4580},[],[4582],{"type":36,"value":667},{"type":30,"tag":142,"props":4584,"children":4585},{},[4586,4605,4624,4648,4672],{"type":30,"tag":111,"props":4587,"children":4588},{},[4589,4597,4601],{"type":30,"tag":149,"props":4590,"children":4591},{},[4592],{"type":30,"tag":70,"props":4593,"children":4595},{"className":4594},[],[4596],{"type":36,"value":1132},{"type":30,"tag":149,"props":4598,"children":4599},{},[4600],{"type":36,"value":2111},{"type":30,"tag":149,"props":4602,"children":4603},{},[4604],{"type":36,"value":2116},{"type":30,"tag":111,"props":4606,"children":4607},{},[4608,4616,4620],{"type":30,"tag":149,"props":4609,"children":4610},{},[4611],{"type":30,"tag":70,"props":4612,"children":4614},{"className":4613},[],[4615],{"type":36,"value":1139},{"type":30,"tag":149,"props":4617,"children":4618},{},[4619],{"type":36,"value":2132},{"type":30,"tag":149,"props":4621,"children":4622},{},[4623],{"type":36,"value":2137},{"type":30,"tag":111,"props":4625,"children":4626},{},[4627,4635,4639],{"type":30,"tag":149,"props":4628,"children":4629},{},[4630],{"type":30,"tag":70,"props":4631,"children":4633},{"className":4632},[],[4634],{"type":36,"value":1146},{"type":30,"tag":149,"props":4636,"children":4637},{},[4638],{"type":36,"value":2153},{"type":30,"tag":149,"props":4640,"children":4641},{},[4642,4643],{"type":36,"value":2158},{"type":30,"tag":70,"props":4644,"children":4646},{"className":4645},[],[4647],{"type":36,"value":75},{"type":30,"tag":111,"props":4649,"children":4650},{},[4651,4659,4663],{"type":30,"tag":149,"props":4652,"children":4653},{},[4654],{"type":30,"tag":70,"props":4655,"children":4657},{"className":4656},[],[4658],{"type":36,"value":1153},{"type":30,"tag":149,"props":4660,"children":4661},{},[4662],{"type":36,"value":2179},{"type":30,"tag":149,"props":4664,"children":4665},{},[4666,4667],{"type":36,"value":2158},{"type":30,"tag":70,"props":4668,"children":4670},{"className":4669},[],[4671],{"type":36,"value":75},{"type":30,"tag":111,"props":4673,"children":4674},{},[4675,4683,4687],{"type":30,"tag":149,"props":4676,"children":4677},{},[4678],{"type":30,"tag":70,"props":4679,"children":4681},{"className":4680},[],[4682],{"type":36,"value":2200},{"type":30,"tag":149,"props":4684,"children":4685},{},[4686],{"type":36,"value":2205},{"type":30,"tag":149,"props":4688,"children":4689},{},[4690,4691],{"type":36,"value":2158},{"type":30,"tag":70,"props":4692,"children":4694},{"className":4693},[],[4695],{"type":36,"value":75},{"type":30,"tag":678,"props":4697,"children":4698},{"id":2217},[4699,4700],{"type":36,"value":2220},{"type":30,"tag":70,"props":4701,"children":4703},{"className":4702},[],[4704],{"type":36,"value":2037},{"type":30,"tag":39,"props":4706,"children":4707},{},[4708,4709,4713,4714,4719],{"type":36,"value":2230},{"type":30,"tag":45,"props":4710,"children":4711},{},[4712],{"type":36,"value":2235},{"type":36,"value":2237},{"type":30,"tag":70,"props":4715,"children":4717},{"className":4716},[],[4718],{"type":36,"value":667},{"type":36,"value":2244},{"type":30,"tag":39,"props":4721,"children":4722},{},[4723,4724,4729,4730,4735],{"type":36,"value":2249},{"type":30,"tag":70,"props":4725,"children":4727},{"className":4726},[],[4728],{"type":36,"value":2255},{"type":36,"value":2257},{"type":30,"tag":70,"props":4731,"children":4733},{"className":4732},[],[4734],{"type":36,"value":2263},{"type":36,"value":2265},{"type":30,"tag":714,"props":4737,"children":4738},{"className":716,"code":2268,"language":718,"meta":7,"style":7},[4739],{"type":30,"tag":70,"props":4740,"children":4741},{"__ignoreMap":7},[4742,4749,4756,4771,4786,4797,4812,4827,4842,4853,4872,4887,4902,4913,4920,4927,4934,4941],{"type":30,"tag":724,"props":4743,"children":4744},{"class":726,"line":727},[4745],{"type":30,"tag":724,"props":4746,"children":4747},{"style":731},[4748],{"type":36,"value":2280},{"type":30,"tag":724,"props":4750,"children":4751},{"class":726,"line":737},[4752],{"type":30,"tag":724,"props":4753,"children":4754},{"style":767},[4755],{"type":36,"value":931},{"type":30,"tag":724,"props":4757,"children":4758},{"class":726,"line":753},[4759,4763,4767],{"type":30,"tag":724,"props":4760,"children":4761},{"style":741},[4762],{"type":36,"value":1846},{"type":30,"tag":724,"props":4764,"children":4765},{"style":747},[4766],{"type":36,"value":764},{"type":30,"tag":724,"props":4768,"children":4769},{"style":767},[4770],{"type":36,"value":2303},{"type":30,"tag":724,"props":4772,"children":4773},{"class":726,"line":773},[4774,4778,4782],{"type":30,"tag":724,"props":4775,"children":4776},{"style":741},[4777],{"type":36,"value":1863},{"type":30,"tag":724,"props":4779,"children":4780},{"style":747},[4781],{"type":36,"value":764},{"type":30,"tag":724,"props":4783,"children":4784},{"style":767},[4785],{"type":36,"value":2319},{"type":30,"tag":724,"props":4787,"children":4788},{"class":726,"line":847},[4789,4793],{"type":30,"tag":724,"props":4790,"children":4791},{"style":741},[4792],{"type":36,"value":2263},{"type":30,"tag":724,"props":4794,"children":4795},{"style":747},[4796],{"type":36,"value":750},{"type":30,"tag":724,"props":4798,"children":4799},{"class":726,"line":958},[4800,4804,4808],{"type":30,"tag":724,"props":4801,"children":4802},{"style":741},[4803],{"type":36,"value":2338},{"type":30,"tag":724,"props":4805,"children":4806},{"style":747},[4807],{"type":36,"value":764},{"type":30,"tag":724,"props":4809,"children":4810},{"style":767},[4811],{"type":36,"value":2347},{"type":30,"tag":724,"props":4813,"children":4814},{"class":726,"line":11},[4815,4819,4823],{"type":30,"tag":724,"props":4816,"children":4817},{"style":741},[4818],{"type":36,"value":2355},{"type":30,"tag":724,"props":4820,"children":4821},{"style":747},[4822],{"type":36,"value":764},{"type":30,"tag":724,"props":4824,"children":4825},{"style":767},[4826],{"type":36,"value":1952},{"type":30,"tag":724,"props":4828,"children":4829},{"class":726,"line":975},[4830,4834,4838],{"type":30,"tag":724,"props":4831,"children":4832},{"style":741},[4833],{"type":36,"value":2371},{"type":30,"tag":724,"props":4835,"children":4836},{"style":747},[4837],{"type":36,"value":764},{"type":30,"tag":724,"props":4839,"children":4840},{"style":1444},[4841],{"type":36,"value":2380},{"type":30,"tag":724,"props":4843,"children":4844},{"class":726,"line":984},[4845,4849],{"type":30,"tag":724,"props":4846,"children":4847},{"style":741},[4848],{"type":36,"value":2388},{"type":30,"tag":724,"props":4850,"children":4851},{"style":747},[4852],{"type":36,"value":750},{"type":30,"tag":724,"props":4854,"children":4855},{"class":726,"line":993},[4856,4860,4864,4868],{"type":30,"tag":724,"props":4857,"children":4858},{"style":747},[4859],{"type":36,"value":2400},{"type":30,"tag":724,"props":4861,"children":4862},{"style":741},[4863],{"type":36,"value":1846},{"type":30,"tag":724,"props":4865,"children":4866},{"style":747},[4867],{"type":36,"value":764},{"type":30,"tag":724,"props":4869,"children":4870},{"style":767},[4871],{"type":36,"value":2413},{"type":30,"tag":724,"props":4873,"children":4874},{"class":726,"line":1002},[4875,4879,4883],{"type":30,"tag":724,"props":4876,"children":4877},{"style":741},[4878],{"type":36,"value":2421},{"type":30,"tag":724,"props":4880,"children":4881},{"style":747},[4882],{"type":36,"value":764},{"type":30,"tag":724,"props":4884,"children":4885},{"style":767},[4886],{"type":36,"value":2430},{"type":30,"tag":724,"props":4888,"children":4889},{"class":726,"line":1012},[4890,4894,4898],{"type":30,"tag":724,"props":4891,"children":4892},{"style":741},[4893],{"type":36,"value":2438},{"type":30,"tag":724,"props":4895,"children":4896},{"style":747},[4897],{"type":36,"value":764},{"type":30,"tag":724,"props":4899,"children":4900},{"style":1444},[4901],{"type":36,"value":2380},{"type":30,"tag":724,"props":4903,"children":4904},{"class":726,"line":1022},[4905,4909],{"type":30,"tag":724,"props":4906,"children":4907},{"style":747},[4908],{"type":36,"value":2454},{"type":30,"tag":724,"props":4910,"children":4911},{"style":767},[4912],{"type":36,"value":2459},{"type":30,"tag":724,"props":4914,"children":4915},{"class":726,"line":1031},[4916],{"type":30,"tag":724,"props":4917,"children":4918},{"emptyLinePlaceholder":1006},[4919],{"type":36,"value":1009},{"type":30,"tag":724,"props":4921,"children":4922},{"class":726,"line":1040},[4923],{"type":30,"tag":724,"props":4924,"children":4925},{"style":767},[4926],{"type":36,"value":2474},{"type":30,"tag":724,"props":4928,"children":4929},{"class":726,"line":1049},[4930],{"type":30,"tag":724,"props":4931,"children":4932},{"style":767},[4933],{"type":36,"value":2482},{"type":30,"tag":724,"props":4935,"children":4936},{"class":726,"line":1058},[4937],{"type":30,"tag":724,"props":4938,"children":4939},{"style":767},[4940],{"type":36,"value":2490},{"type":30,"tag":724,"props":4942,"children":4943},{"class":726,"line":1072},[4944],{"type":30,"tag":724,"props":4945,"children":4946},{"style":767},[4947],{"type":36,"value":2498},{"type":30,"tag":39,"props":4949,"children":4950},{},[4951],{"type":36,"value":2503},{"type":30,"tag":39,"props":4953,"children":4954},{},[4955,4956,4961],{"type":36,"value":2508},{"type":30,"tag":70,"props":4957,"children":4959},{"className":4958},[],[4960],{"type":36,"value":2514},{"type":36,"value":2516},{"type":30,"tag":340,"props":4963,"children":4964},{},[],{"type":30,"tag":31,"props":4966,"children":4967},{"id":2522},[4968],{"type":36,"value":2525},{"type":30,"tag":62,"props":4970,"children":4971},{},[4972,4992,5023,5049,5099,5118,5132,5145],{"type":30,"tag":66,"props":4973,"children":4974},{},[4975,4985,4986,4991],{"type":30,"tag":45,"props":4976,"children":4977},{},[4978,4979,4984],{"type":36,"value":2536},{"type":30,"tag":70,"props":4980,"children":4982},{"className":4981},[],[4983],{"type":36,"value":904},{"type":36,"value":2543},{"type":36,"value":2545},{"type":30,"tag":70,"props":4987,"children":4989},{"className":4988},[],[4990],{"type":36,"value":2551},{"type":36,"value":2553},{"type":30,"tag":66,"props":4993,"children":4994},{},[4995,5016,5017,5022],{"type":30,"tag":45,"props":4996,"children":4997},{},[4998,4999,5004,5005,5010,5011],{"type":36,"value":2561},{"type":30,"tag":70,"props":5000,"children":5002},{"className":5001},[],[5003],{"type":36,"value":1110},{"type":36,"value":2568},{"type":30,"tag":70,"props":5006,"children":5008},{"className":5007},[],[5009],{"type":36,"value":2574},{"type":36,"value":2576},{"type":30,"tag":70,"props":5012,"children":5014},{"className":5013},[],[5015],{"type":36,"value":86},{"type":36,"value":2583},{"type":30,"tag":70,"props":5018,"children":5020},{"className":5019},[],[5021],{"type":36,"value":2574},{"type":36,"value":2590},{"type":30,"tag":66,"props":5024,"children":5025},{},[5026,5030,5031,5036,5037,5042,5043,5048],{"type":30,"tag":45,"props":5027,"children":5028},{},[5029],{"type":36,"value":2598},{"type":36,"value":2545},{"type":30,"tag":70,"props":5032,"children":5034},{"className":5033},[],[5035],{"type":36,"value":2200},{"type":36,"value":705},{"type":30,"tag":70,"props":5038,"children":5040},{"className":5039},[],[5041],{"type":36,"value":1153},{"type":36,"value":2612},{"type":30,"tag":70,"props":5044,"children":5046},{"className":5045},[],[5047],{"type":36,"value":1139},{"type":36,"value":2619},{"type":30,"tag":66,"props":5050,"children":5051},{},[5052,5056,5057,5062,5063,5068,5069,5074,5075,5080,5081,5086,5087,5092,5093,5098],{"type":30,"tag":45,"props":5053,"children":5054},{},[5055],{"type":36,"value":2627},{"type":36,"value":2545},{"type":30,"tag":70,"props":5058,"children":5060},{"className":5059},[],[5061],{"type":36,"value":2200},{"type":36,"value":705},{"type":30,"tag":70,"props":5064,"children":5066},{"className":5065},[],[5067],{"type":36,"value":1153},{"type":36,"value":2641},{"type":30,"tag":70,"props":5070,"children":5072},{"className":5071},[],[5073],{"type":36,"value":183},{"type":36,"value":2648},{"type":30,"tag":70,"props":5076,"children":5078},{"className":5077},[],[5079],{"type":36,"value":2200},{"type":36,"value":2655},{"type":30,"tag":70,"props":5082,"children":5084},{"className":5083},[],[5085],{"type":36,"value":2661},{"type":36,"value":2663},{"type":30,"tag":53,"props":5088,"children":5090},{"href":691,"rel":5089},[693],[5091],{"type":36,"value":696},{"type":36,"value":2670},{"type":30,"tag":70,"props":5094,"children":5096},{"className":5095},[],[5097],{"type":36,"value":904},{"type":36,"value":2677},{"type":30,"tag":66,"props":5100,"children":5101},{},[5102,5111,5112,5117],{"type":30,"tag":45,"props":5103,"children":5104},{},[5105,5106],{"type":36,"value":2685},{"type":30,"tag":70,"props":5107,"children":5109},{"className":5108},[],[5110],{"type":36,"value":1589},{"type":36,"value":2692},{"type":30,"tag":70,"props":5113,"children":5115},{"className":5114},[],[5116],{"type":36,"value":2698},{"type":36,"value":2700},{"type":30,"tag":66,"props":5119,"children":5120},{},[5121,5131],{"type":30,"tag":45,"props":5122,"children":5123},{},[5124,5125,5130],{"type":36,"value":2249},{"type":30,"tag":70,"props":5126,"children":5128},{"className":5127},[],[5129],{"type":36,"value":2255},{"type":36,"value":2714},{"type":36,"value":2716},{"type":30,"tag":66,"props":5133,"children":5134},{},[5135,5144],{"type":30,"tag":45,"props":5136,"children":5137},{},[5138,5139],{"type":36,"value":2724},{"type":30,"tag":70,"props":5140,"children":5142},{"className":5141},[],[5143],{"type":36,"value":75},{"type":36,"value":2731},{"type":30,"tag":66,"props":5146,"children":5147},{},[5148,5152,5153,5158],{"type":30,"tag":45,"props":5149,"children":5150},{},[5151],{"type":36,"value":2739},{"type":36,"value":2545},{"type":30,"tag":70,"props":5154,"children":5156},{"className":5155},[],[5157],{"type":36,"value":2746},{"type":36,"value":2748},{"type":30,"tag":340,"props":5160,"children":5161},{},[],{"type":30,"tag":31,"props":5163,"children":5164},{"id":2754},[5165],{"type":36,"value":2757},{"type":30,"tag":62,"props":5167,"children":5168},{},[5169,5177,5185,5193,5201,5208],{"type":30,"tag":66,"props":5170,"children":5171},{},[5172],{"type":30,"tag":53,"props":5173,"children":5175},{"href":2766,"rel":5174},[693],[5176],{"type":36,"value":2770},{"type":30,"tag":66,"props":5178,"children":5179},{},[5180],{"type":30,"tag":53,"props":5181,"children":5183},{"href":2776,"rel":5182},[693],[5184],{"type":36,"value":2780},{"type":30,"tag":66,"props":5186,"children":5187},{},[5188],{"type":30,"tag":53,"props":5189,"children":5191},{"href":2786,"rel":5190},[693],[5192],{"type":36,"value":2790},{"type":30,"tag":66,"props":5194,"children":5195},{},[5196],{"type":30,"tag":53,"props":5197,"children":5199},{"href":2796,"rel":5198},[693],[5200],{"type":36,"value":2800},{"type":30,"tag":66,"props":5202,"children":5203},{},[5204],{"type":30,"tag":53,"props":5205,"children":5206},{"href":55},[5207],{"type":36,"value":2808},{"type":30,"tag":66,"props":5209,"children":5210},{},[5211],{"type":30,"tag":53,"props":5212,"children":5214},{"href":2814,"rel":5213},[693],[5215],{"type":36,"value":2818},{"type":30,"tag":2820,"props":5217,"children":5218},{},[5219],{"type":36,"value":2824},{"title":7,"searchDepth":737,"depth":737,"links":5221},[5222,5223,5226,5227,5230,5231],{"id":33,"depth":737,"text":37},{"id":345,"depth":737,"text":348,"children":5224},[5225],{"id":680,"depth":753,"text":683},{"id":880,"depth":737,"text":883},{"id":2028,"depth":737,"text":2833,"children":5228},[5229],{"id":2217,"depth":753,"text":2836},{"id":2522,"depth":737,"text":2525},{"id":2754,"depth":737,"text":2757},[5233,5630,5865],{"_path":5234,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":5235,"description":5236,"coverImage":5237,"date":5238,"readingTime":847,"category":12,"tags":5239,"difficulty":5243,"journeys":5244,"hidden":6,"videoUrl":5245,"author":5246,"body":5247,"_type":2839,"_id":5627,"_source":2841,"_file":5628,"_stem":5629,"_extension":2844},"/tutorials/bruin-cloud-mcp","Connect Bruin Cloud MCP to Claude Code","Set up the Bruin Cloud MCP so your AI agent can query pipelines, inspect runs, and trigger actions in Bruin Cloud directly from your terminal.","https://img.youtube.com/vi/bpuYBiaxSWk/maxresdefault.jpg","2026-03-06",[5240,5241,5242],"Bruin Cloud","Bruin AI","MCP","Advanced",[20],"https://youtu.be/bpuYBiaxSWk",{"name":23,"role":24,"image":25},{"type":27,"children":5248,"toc":5615},[5249,5259,5263,5273,5283,5291,5315,5318,5324,5330,5378,5384,5397,5463,5468,5474,5479,5487,5492,5498,5503,5511,5516,5522,5527,5545,5548,5554,5572,5575,5579,5611],{"type":30,"tag":5250,"props":5251,"children":5258},"iframe",{"width":5252,"height":5253,"src":5254,"title":5255,"frameBorder":5256,"allow":5257,"allowFullScreen":1006},"100%",400,"https://www.youtube.com/embed/bpuYBiaxSWk","Bruin Features - Cloud MCP","0","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",[],{"type":30,"tag":31,"props":5260,"children":5261},{"id":33},[5262],{"type":36,"value":37},{"type":30,"tag":39,"props":5264,"children":5265},{},[5266,5271],{"type":30,"tag":45,"props":5267,"children":5268},{},[5269],{"type":36,"value":5270},"Goal",{"type":36,"value":5272}," - Connect the Bruin Cloud MCP to Claude Code so you can manage pipelines, inspect runs, and trigger actions using natural language from your terminal.",{"type":30,"tag":39,"props":5274,"children":5275},{},[5276,5281],{"type":30,"tag":45,"props":5277,"children":5278},{},[5279],{"type":36,"value":5280},"Audience",{"type":36,"value":5282}," - Data engineers who want to interact with Bruin Cloud programmatically through an AI agent.",{"type":30,"tag":39,"props":5284,"children":5285},{},[5286],{"type":30,"tag":45,"props":5287,"children":5288},{},[5289],{"type":36,"value":5290},"Prerequisites",{"type":30,"tag":62,"props":5292,"children":5293},{},[5294,5305,5310],{"type":30,"tag":66,"props":5295,"children":5296},{},[5297,5303],{"type":30,"tag":53,"props":5298,"children":5301},{"href":5299,"rel":5300},"https://getbruin.com/docs/bruin/getting-started/introduction/installation.html",[693],[5302],{"type":36,"value":14},{"type":36,"value":5304}," installed",{"type":30,"tag":66,"props":5306,"children":5307},{},[5308],{"type":36,"value":5309},"Claude Code installed",{"type":30,"tag":66,"props":5311,"children":5312},{},[5313],{"type":36,"value":5314},"A Bruin Cloud account with at least one pipeline deployed",{"type":30,"tag":340,"props":5316,"children":5317},{},[],{"type":30,"tag":31,"props":5319,"children":5321},{"id":5320},"steps",[5322],{"type":36,"value":5323},"Steps",{"type":30,"tag":678,"props":5325,"children":5327},{"id":5326},"_1-create-an-api-token",[5328],{"type":36,"value":5329},"1) Create an API token",{"type":30,"tag":5331,"props":5332,"children":5333},"ol",{},[5334,5344,5361,5366],{"type":30,"tag":66,"props":5335,"children":5336},{},[5337,5339],{"type":36,"value":5338},"Go to Bruin Cloud and open ",{"type":30,"tag":45,"props":5340,"children":5341},{},[5342],{"type":36,"value":5343},"Team Settings",{"type":30,"tag":66,"props":5345,"children":5346},{},[5347,5349,5354,5356],{"type":36,"value":5348},"Navigate to ",{"type":30,"tag":45,"props":5350,"children":5351},{},[5352],{"type":36,"value":5353},"Team Members",{"type":36,"value":5355}," and scroll to ",{"type":30,"tag":45,"props":5357,"children":5358},{},[5359],{"type":36,"value":5360},"Create API Token",{"type":30,"tag":66,"props":5362,"children":5363},{},[5364],{"type":36,"value":5365},"Give the token a name and select the permissions you need",{"type":30,"tag":66,"props":5367,"children":5368},{},[5369,5371,5376],{"type":36,"value":5370},"Click ",{"type":30,"tag":45,"props":5372,"children":5373},{},[5374],{"type":36,"value":5375},"Create",{"type":36,"value":5377}," and copy the token - it will only be shown once",{"type":30,"tag":678,"props":5379,"children":5381},{"id":5380},"_2-add-the-mcp-to-claude-code",[5382],{"type":36,"value":5383},"2) Add the MCP to Claude Code",{"type":30,"tag":39,"props":5385,"children":5386},{},[5387,5389,5395],{"type":36,"value":5388},"Run the following command in your terminal, replacing ",{"type":30,"tag":70,"props":5390,"children":5392},{"className":5391},[],[5393],{"type":36,"value":5394},"YOUR_TOKEN_HERE",{"type":36,"value":5396}," with the token you just created:",{"type":30,"tag":714,"props":5398,"children":5402},{"className":5399,"code":5400,"language":5401,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","claude mcp add --transport http bruin_cloud https://cloud.getbruin.com/mcp \\\n  --header \"Authorization: Bearer YOUR_TOKEN_HERE\"\n","bash",[5403],{"type":30,"tag":70,"props":5404,"children":5405},{"__ignoreMap":7},[5406,5450],{"type":30,"tag":724,"props":5407,"children":5408},{"class":726,"line":727},[5409,5415,5420,5425,5430,5435,5440,5445],{"type":30,"tag":724,"props":5410,"children":5412},{"style":5411},"--shiki-default:#B392F0",[5413],{"type":36,"value":5414},"claude",{"type":30,"tag":724,"props":5416,"children":5417},{"style":767},[5418],{"type":36,"value":5419}," mcp",{"type":30,"tag":724,"props":5421,"children":5422},{"style":767},[5423],{"type":36,"value":5424}," add",{"type":30,"tag":724,"props":5426,"children":5427},{"style":1444},[5428],{"type":36,"value":5429}," --transport",{"type":30,"tag":724,"props":5431,"children":5432},{"style":767},[5433],{"type":36,"value":5434}," http",{"type":30,"tag":724,"props":5436,"children":5437},{"style":767},[5438],{"type":36,"value":5439}," bruin_cloud",{"type":30,"tag":724,"props":5441,"children":5442},{"style":767},[5443],{"type":36,"value":5444}," https://cloud.getbruin.com/mcp",{"type":30,"tag":724,"props":5446,"children":5447},{"style":1444},[5448],{"type":36,"value":5449}," \\\n",{"type":30,"tag":724,"props":5451,"children":5452},{"class":726,"line":737},[5453,5458],{"type":30,"tag":724,"props":5454,"children":5455},{"style":1444},[5456],{"type":36,"value":5457},"  --header",{"type":30,"tag":724,"props":5459,"children":5460},{"style":767},[5461],{"type":36,"value":5462}," \"Authorization: Bearer YOUR_TOKEN_HERE\"\n",{"type":30,"tag":39,"props":5464,"children":5465},{},[5466],{"type":36,"value":5467},"This configures Claude Code to communicate with Bruin Cloud via the MCP protocol.",{"type":30,"tag":678,"props":5469,"children":5471},{"id":5470},"_3-query-your-pipelines",[5472],{"type":36,"value":5473},"3) Query your pipelines",{"type":30,"tag":39,"props":5475,"children":5476},{},[5477],{"type":36,"value":5478},"Open Claude Code inside a Bruin project and ask questions like:",{"type":30,"tag":1991,"props":5480,"children":5481},{},[5482],{"type":30,"tag":39,"props":5483,"children":5484},{},[5485],{"type":36,"value":5486},"\"Use Bruin Cloud MCP and tell me which pipelines are enabled.\"",{"type":30,"tag":39,"props":5488,"children":5489},{},[5490],{"type":36,"value":5491},"The agent will make API calls to Bruin Cloud and return the information.",{"type":30,"tag":678,"props":5493,"children":5495},{"id":5494},"_4-trigger-runs",[5496],{"type":36,"value":5497},"4) Trigger runs",{"type":30,"tag":39,"props":5499,"children":5500},{},[5501],{"type":36,"value":5502},"You can also ask the agent to trigger pipeline runs:",{"type":30,"tag":1991,"props":5504,"children":5505},{},[5506],{"type":30,"tag":39,"props":5507,"children":5508},{},[5509],{"type":36,"value":5510},"\"Create a full refresh of the stock_market_prices asset.\"",{"type":30,"tag":39,"props":5512,"children":5513},{},[5514],{"type":36,"value":5515},"The agent may ask for confirmation before executing, especially when there are similarly named assets. It will also provide a link to monitor the run in Bruin Cloud.",{"type":30,"tag":678,"props":5517,"children":5519},{"id":5518},"_5-be-careful-with-prompts",[5520],{"type":36,"value":5521},"5) Be careful with prompts",{"type":30,"tag":39,"props":5523,"children":5524},{},[5525],{"type":36,"value":5526},"Be specific when triggering actions. A vague prompt like \"do a full refresh\" could create a large backfill job spanning months of data. Always specify:",{"type":30,"tag":62,"props":5528,"children":5529},{},[5530,5535,5540],{"type":30,"tag":66,"props":5531,"children":5532},{},[5533],{"type":36,"value":5534},"Which asset or pipeline to run",{"type":30,"tag":66,"props":5536,"children":5537},{},[5538],{"type":36,"value":5539},"The date range if applicable",{"type":30,"tag":66,"props":5541,"children":5542},{},[5543],{"type":36,"value":5544},"Whether you want a full refresh or incremental run",{"type":30,"tag":340,"props":5546,"children":5547},{},[],{"type":30,"tag":31,"props":5549,"children":5551},{"id":5550},"key-takeaways",[5552],{"type":36,"value":5553},"Key takeaways",{"type":30,"tag":62,"props":5555,"children":5556},{},[5557,5562,5567],{"type":30,"tag":66,"props":5558,"children":5559},{},[5560],{"type":36,"value":5561},"The Cloud MCP lets you query pipeline status, inspect runs, and trigger actions from your terminal",{"type":30,"tag":66,"props":5563,"children":5564},{},[5565],{"type":36,"value":5566},"Always be specific when triggering runs to avoid unintended large backfills",{"type":30,"tag":66,"props":5568,"children":5569},{},[5570],{"type":36,"value":5571},"The agent will ask for confirmation before executing destructive or ambiguous actions",{"type":30,"tag":340,"props":5573,"children":5574},{},[],{"type":30,"tag":31,"props":5576,"children":5577},{"id":2754},[5578],{"type":36,"value":2757},{"type":30,"tag":62,"props":5580,"children":5581},{},[5582,5592,5602],{"type":30,"tag":66,"props":5583,"children":5584},{},[5585],{"type":30,"tag":53,"props":5586,"children":5589},{"href":5587,"rel":5588},"https://getbruin.com/docs/bruin/cloud/mcp-setup.html",[693],[5590],{"type":36,"value":5591},"Bruin Cloud MCP setup",{"type":30,"tag":66,"props":5593,"children":5594},{},[5595],{"type":30,"tag":53,"props":5596,"children":5599},{"href":5597,"rel":5598},"https://getbruin.com/docs/bruin/cloud/overview.html",[693],[5600],{"type":36,"value":5601},"Bruin Cloud overview",{"type":30,"tag":66,"props":5603,"children":5604},{},[5605],{"type":30,"tag":53,"props":5606,"children":5608},{"href":5245,"rel":5607},[693],[5609],{"type":36,"value":5610},"Video walkthrough",{"type":30,"tag":2820,"props":5612,"children":5613},{},[5614],{"type":36,"value":2824},{"title":7,"searchDepth":737,"depth":737,"links":5616},[5617,5618,5625,5626],{"id":33,"depth":737,"text":37},{"id":5320,"depth":737,"text":5323,"children":5619},[5620,5621,5622,5623,5624],{"id":5326,"depth":753,"text":5329},{"id":5380,"depth":753,"text":5383},{"id":5470,"depth":753,"text":5473},{"id":5494,"depth":753,"text":5497},{"id":5518,"depth":753,"text":5521},{"id":5550,"depth":737,"text":5553},{"id":2754,"depth":737,"text":2757},"content:tutorials:bruin-cloud-mcp.md","tutorials/bruin-cloud-mcp.md","tutorials/bruin-cloud-mcp",{"_path":5631,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":5632,"description":5633,"coverImage":5634,"date":5635,"readingTime":753,"category":12,"tags":5636,"difficulty":18,"journeys":5638,"hidden":6,"videoUrl":5639,"author":5640,"body":5641,"_type":2839,"_id":5862,"_source":2841,"_file":5863,"_stem":5864,"_extension":2844},"/tutorials/bruin-dashboards","Build Dashboards with an AI Agent","Use the Bruin Cloud AI agent to build interactive dashboards from natural language prompts - generate queries, create charts, and ask follow-up questions in one place.","https://img.youtube.com/vi/X3usx8IUIlk/maxresdefault.jpg","2026-03-31",[5240,5241,5637],"Dashboards",[21,20],"https://youtu.be/X3usx8IUIlk",{"name":23,"role":24,"image":25},{"type":27,"children":5642,"toc":5850},[5643,5648,5652,5661,5670,5677,5693,5696,5700,5706,5711,5717,5722,5730,5735,5741,5746,5752,5757,5775,5781,5786,5794,5799,5802,5806,5824,5827,5831],{"type":30,"tag":5250,"props":5644,"children":5647},{"width":5252,"height":5253,"src":5645,"title":5646,"frameBorder":5256,"allow":5257,"allowFullScreen":1006},"https://www.youtube.com/embed/X3usx8IUIlk","Bruin Features - Dashboards",[],{"type":30,"tag":31,"props":5649,"children":5650},{"id":33},[5651],{"type":36,"value":37},{"type":30,"tag":39,"props":5653,"children":5654},{},[5655,5659],{"type":30,"tag":45,"props":5656,"children":5657},{},[5658],{"type":36,"value":5270},{"type":36,"value":5660}," - Build interactive dashboards in Bruin Cloud using natural language prompts instead of manually writing queries and configuring charts.",{"type":30,"tag":39,"props":5662,"children":5663},{},[5664,5668],{"type":30,"tag":45,"props":5665,"children":5666},{},[5667],{"type":36,"value":5280},{"type":36,"value":5669}," - Data analysts and engineers who want to quickly explore and visualize their data without leaving Bruin Cloud.",{"type":30,"tag":39,"props":5671,"children":5672},{},[5673],{"type":30,"tag":45,"props":5674,"children":5675},{},[5676],{"type":36,"value":5290},{"type":30,"tag":62,"props":5678,"children":5679},{},[5680],{"type":30,"tag":66,"props":5681,"children":5682},{},[5683,5685,5691],{"type":36,"value":5684},"A ",{"type":30,"tag":53,"props":5686,"children":5689},{"href":5687,"rel":5688},"https://getbruin.com",[693],[5690],{"type":36,"value":5240},{"type":36,"value":5692}," account with data already materialized in your warehouse",{"type":30,"tag":340,"props":5694,"children":5695},{},[],{"type":30,"tag":31,"props":5697,"children":5698},{"id":5320},[5699],{"type":36,"value":5323},{"type":30,"tag":678,"props":5701,"children":5703},{"id":5702},"_1-open-the-dashboards-page",[5704],{"type":36,"value":5705},"1) Open the Dashboards page",{"type":30,"tag":39,"props":5707,"children":5708},{},[5709],{"type":36,"value":5710},"Navigate to the Dashboards section in Bruin Cloud. This is where you can create and manage all your dashboards.",{"type":30,"tag":678,"props":5712,"children":5714},{"id":5713},"_2-write-a-natural-language-prompt",[5715],{"type":36,"value":5716},"2) Write a natural language prompt",{"type":30,"tag":39,"props":5718,"children":5719},{},[5720],{"type":36,"value":5721},"Describe what you want to analyze. For example:",{"type":30,"tag":1991,"props":5723,"children":5724},{},[5725],{"type":30,"tag":39,"props":5726,"children":5727},{},[5728],{"type":36,"value":5729},"\"I want to analyze the data for 2024 - show me customer satisfaction trends, revenue by quarter, and churn rate.\"",{"type":30,"tag":39,"props":5731,"children":5732},{},[5733],{"type":36,"value":5734},"The AI agent will generate the SQL queries and build the charts for you automatically.",{"type":30,"tag":678,"props":5736,"children":5738},{"id":5737},"_3-inspect-the-generated-queries",[5739],{"type":36,"value":5740},"3) Inspect the generated queries",{"type":30,"tag":39,"props":5742,"children":5743},{},[5744],{"type":36,"value":5745},"Click on any chart to see the SQL query behind it. This lets you verify the logic and understand exactly what data is being visualized.",{"type":30,"tag":678,"props":5747,"children":5749},{"id":5748},"_4-iterate-on-the-dashboard",[5750],{"type":36,"value":5751},"4) Iterate on the dashboard",{"type":30,"tag":39,"props":5753,"children":5754},{},[5755],{"type":36,"value":5756},"You can go back and forth with the AI agent to refine the dashboard:",{"type":30,"tag":62,"props":5758,"children":5759},{},[5760,5765,5770],{"type":30,"tag":66,"props":5761,"children":5762},{},[5763],{"type":36,"value":5764},"Click on a chart that needs adjustment to bring it into context",{"type":30,"tag":66,"props":5766,"children":5767},{},[5768],{"type":36,"value":5769},"Ask the agent to change a specific chart, fix an issue, or add a new visualization",{"type":30,"tag":66,"props":5771,"children":5772},{},[5773],{"type":36,"value":5774},"The agent understands conversational follow-ups",{"type":30,"tag":678,"props":5776,"children":5778},{"id":5777},"_5-ask-analytical-questions",[5779],{"type":36,"value":5780},"5) Ask analytical questions",{"type":30,"tag":39,"props":5782,"children":5783},{},[5784],{"type":36,"value":5785},"The agent is not limited to building charts. You can ask it questions about the data directly, for example:",{"type":30,"tag":1991,"props":5787,"children":5788},{},[5789],{"type":30,"tag":39,"props":5790,"children":5791},{},[5792],{"type":36,"value":5793},"\"Why is there a dip in customer satisfaction in July?\"",{"type":30,"tag":39,"props":5795,"children":5796},{},[5797],{"type":36,"value":5798},"It will analyze the underlying data and provide an explanation rather than generating another chart.",{"type":30,"tag":340,"props":5800,"children":5801},{},[],{"type":30,"tag":31,"props":5803,"children":5804},{"id":5550},[5805],{"type":36,"value":5553},{"type":30,"tag":62,"props":5807,"children":5808},{},[5809,5814,5819],{"type":30,"tag":66,"props":5810,"children":5811},{},[5812],{"type":36,"value":5813},"The AI agent acts as a companion for building reports, asking questions, and getting responses - all in one place",{"type":30,"tag":66,"props":5815,"children":5816},{},[5817],{"type":36,"value":5818},"You can mix chart creation with ad-hoc analysis in the same conversation",{"type":30,"tag":66,"props":5820,"children":5821},{},[5822],{"type":36,"value":5823},"Every chart is backed by a visible SQL query you can inspect and verify",{"type":30,"tag":340,"props":5825,"children":5826},{},[],{"type":30,"tag":31,"props":5828,"children":5829},{"id":2754},[5830],{"type":36,"value":2757},{"type":30,"tag":62,"props":5832,"children":5833},{},[5834,5842],{"type":30,"tag":66,"props":5835,"children":5836},{},[5837],{"type":30,"tag":53,"props":5838,"children":5840},{"href":5597,"rel":5839},[693],[5841],{"type":36,"value":5601},{"type":30,"tag":66,"props":5843,"children":5844},{},[5845],{"type":30,"tag":53,"props":5846,"children":5848},{"href":5639,"rel":5847},[693],[5849],{"type":36,"value":5610},{"title":7,"searchDepth":737,"depth":737,"links":5851},[5852,5853,5860,5861],{"id":33,"depth":737,"text":37},{"id":5320,"depth":737,"text":5323,"children":5854},[5855,5856,5857,5858,5859],{"id":5702,"depth":753,"text":5705},{"id":5713,"depth":753,"text":5716},{"id":5737,"depth":753,"text":5740},{"id":5748,"depth":753,"text":5751},{"id":5777,"depth":753,"text":5780},{"id":5550,"depth":737,"text":5553},{"id":2754,"depth":737,"text":2757},"content:tutorials:bruin-dashboards.md","tutorials/bruin-dashboards.md","tutorials/bruin-dashboards",{"_path":5866,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":5867,"description":5868,"coverImage":5869,"date":5870,"readingTime":737,"category":12,"tags":5871,"difficulty":18,"journeys":5874,"hidden":6,"videoUrl":5875,"author":5876,"body":5877,"_type":2839,"_id":6103,"_source":2841,"_file":6104,"_stem":6105,"_extension":2844},"/tutorials/bruin-database-viewer","Query Databases from Your IDE","Use the Bruin extension's built-in database viewer to browse tables, view schemas, and run queries across all your connections without leaving VS Code.","https://img.youtube.com/vi/3ySWFad-70I/maxresdefault.jpg","2026-02-20",[14,5872,5873],"IDE Extension","Database",[21,20],"https://youtu.be/3ySWFad-70I",{"name":23,"role":24,"image":25},{"type":27,"children":5878,"toc":6092},[5879,5884,5888,5897,5906,5913,5941,5944,5948,5954,5973,5979,5984,5990,6003,6008,6014,6026,6029,6035,6065,6068,6072],{"type":30,"tag":5250,"props":5880,"children":5883},{"width":5252,"height":5253,"src":5881,"title":5882,"frameBorder":5256,"allow":5257,"allowFullScreen":1006},"https://www.youtube.com/embed/3ySWFad-70I","Bruin Features - Database Viewer",[],{"type":30,"tag":31,"props":5885,"children":5886},{"id":33},[5887],{"type":36,"value":37},{"type":30,"tag":39,"props":5889,"children":5890},{},[5891,5895],{"type":30,"tag":45,"props":5892,"children":5893},{},[5894],{"type":36,"value":5270},{"type":36,"value":5896}," - Browse and query all your databases directly from VS Code or Cursor using the Bruin extension's built-in database viewer.",{"type":30,"tag":39,"props":5898,"children":5899},{},[5900,5904],{"type":30,"tag":45,"props":5901,"children":5902},{},[5903],{"type":36,"value":5280},{"type":36,"value":5905}," - Data analysts and engineers who want to explore data without switching between multiple tools like BigQuery UI, DataGrip, or DBeaver.",{"type":30,"tag":39,"props":5907,"children":5908},{},[5909],{"type":30,"tag":45,"props":5910,"children":5911},{},[5912],{"type":36,"value":5290},{"type":30,"tag":62,"props":5914,"children":5915},{},[5916,5925,5930],{"type":30,"tag":66,"props":5917,"children":5918},{},[5919,5924],{"type":30,"tag":53,"props":5920,"children":5922},{"href":5299,"rel":5921},[693],[5923],{"type":36,"value":14},{"type":36,"value":5304},{"type":30,"tag":66,"props":5926,"children":5927},{},[5928],{"type":36,"value":5929},"The Bruin VS Code or Cursor extension installed",{"type":30,"tag":66,"props":5931,"children":5932},{},[5933,5935],{"type":36,"value":5934},"A Bruin project with database connections configured in ",{"type":30,"tag":70,"props":5936,"children":5938},{"className":5937},[],[5939],{"type":36,"value":5940},".bruin.yml",{"type":30,"tag":340,"props":5942,"children":5943},{},[],{"type":30,"tag":31,"props":5945,"children":5946},{"id":5320},[5947],{"type":36,"value":5323},{"type":30,"tag":678,"props":5949,"children":5951},{"id":5950},"_1-open-the-database-viewer",[5952],{"type":36,"value":5953},"1) Open the database viewer",{"type":30,"tag":39,"props":5955,"children":5956},{},[5957,5959,5964,5966,5971],{"type":36,"value":5958},"Look for the database icon in the VS Code sidebar. Under ",{"type":30,"tag":45,"props":5960,"children":5961},{},[5962],{"type":36,"value":5963},"Databases",{"type":36,"value":5965},", you'll see all the connections defined in your ",{"type":30,"tag":70,"props":5967,"children":5969},{"className":5968},[],[5970],{"type":36,"value":5940},{"type":36,"value":5972}," file - DuckDB, BigQuery, Redshift, Postgres, or any other configured connection.",{"type":30,"tag":678,"props":5974,"children":5976},{"id":5975},"_2-browse-your-tables",[5977],{"type":36,"value":5978},"2) Browse your tables",{"type":30,"tag":39,"props":5980,"children":5981},{},[5982],{"type":36,"value":5983},"Expand a connection to see its datasets and tables. You can also view the schema (columns and types) for each table.",{"type":30,"tag":678,"props":5985,"children":5987},{"id":5986},"_3-query-a-table",[5988],{"type":36,"value":5989},"3) Query a table",{"type":30,"tag":39,"props":5991,"children":5992},{},[5993,5995,6001],{"type":36,"value":5994},"Click on any table to open a temporary file with a pre-filled ",{"type":30,"tag":70,"props":5996,"children":5998},{"className":5997},[],[5999],{"type":36,"value":6000},"SELECT",{"type":36,"value":6002}," query. Run it to see the results directly in your editor.",{"type":30,"tag":39,"props":6004,"children":6005},{},[6006],{"type":36,"value":6007},"You can modify the query, add filters, joins, or aggregations - and run it again.",{"type":30,"tag":678,"props":6009,"children":6011},{"id":6010},"_4-switch-between-databases",[6012],{"type":36,"value":6013},"4) Switch between databases",{"type":30,"tag":39,"props":6015,"children":6016},{},[6017,6019,6024],{"type":36,"value":6018},"If you have multiple database connections (e.g., DuckDB for local development and BigQuery for production), you can quickly switch between them without reconfiguring credentials or opening different tools. Everything uses the connections already defined in your ",{"type":30,"tag":70,"props":6020,"children":6022},{"className":6021},[],[6023],{"type":36,"value":5940},{"type":36,"value":6025},".",{"type":30,"tag":340,"props":6027,"children":6028},{},[],{"type":30,"tag":31,"props":6030,"children":6032},{"id":6031},"why-this-is-useful",[6033],{"type":36,"value":6034},"Why this is useful",{"type":30,"tag":62,"props":6036,"children":6037},{},[6038,6043,6055,6060],{"type":30,"tag":66,"props":6039,"children":6040},{},[6041],{"type":36,"value":6042},"No need to switch between VS Code, BigQuery UI, DataGrip, DBeaver, or other query tools",{"type":30,"tag":66,"props":6044,"children":6045},{},[6046,6048,6053],{"type":36,"value":6047},"All your credentials are already in ",{"type":30,"tag":70,"props":6049,"children":6051},{"className":6050},[],[6052],{"type":36,"value":5940},{"type":36,"value":6054}," - no extra configuration",{"type":30,"tag":66,"props":6056,"children":6057},{},[6058],{"type":36,"value":6059},"Quick navigation between multiple databases in one interface",{"type":30,"tag":66,"props":6061,"children":6062},{},[6063],{"type":36,"value":6064},"Speeds up development by keeping everything in one place",{"type":30,"tag":340,"props":6066,"children":6067},{},[],{"type":30,"tag":31,"props":6069,"children":6070},{"id":2754},[6071],{"type":36,"value":2757},{"type":30,"tag":62,"props":6073,"children":6074},{},[6075,6084],{"type":30,"tag":66,"props":6076,"children":6077},{},[6078],{"type":30,"tag":53,"props":6079,"children":6081},{"href":5299,"rel":6080},[693],[6082],{"type":36,"value":6083},"Bruin CLI installation",{"type":30,"tag":66,"props":6085,"children":6086},{},[6087],{"type":30,"tag":53,"props":6088,"children":6090},{"href":5875,"rel":6089},[693],[6091],{"type":36,"value":5610},{"title":7,"searchDepth":737,"depth":737,"links":6093},[6094,6095,6101,6102],{"id":33,"depth":737,"text":37},{"id":5320,"depth":737,"text":5323,"children":6096},[6097,6098,6099,6100],{"id":5950,"depth":753,"text":5953},{"id":5975,"depth":753,"text":5978},{"id":5986,"depth":753,"text":5989},{"id":6010,"depth":753,"text":6013},{"id":6031,"depth":737,"text":6034},{"id":2754,"depth":737,"text":2757},"content:tutorials:bruin-database-viewer.md","tutorials/bruin-database-viewer.md","tutorials/bruin-database-viewer",1777378417058]