|
18 | 18 | <meta property="og:image" content="https://sqlbuild.com/assets/og-sqlbuild.png" /> |
19 | 19 | <meta property="og:image:width" content="1200" /> |
20 | 20 | <meta property="og:image:height" content="630" /> |
21 | | - <meta property="og:image:alt" content="SQLBuild: the refactorable warehouse. A model file is moved and renamed." /> |
| 21 | + <meta property="og:image:alt" content="SQLBuild: the refactorable warehouse. sqb rename renames a model, and sqb plan migrates its table from prod.revenue to prod.daily_revenue. History kept. Nothing rebuilt." /> |
22 | 22 | <meta name="twitter:card" content="summary_large_image" /> |
23 | 23 | <meta name="twitter:image" content="https://sqlbuild.com/assets/og-sqlbuild.png" /> |
24 | 24 | <link rel="icon" type="image/png" href="assets/icon.png" /> |
@@ -76,13 +76,13 @@ <h1>The refactorable warehouse</h1> |
76 | 76 | <div |
77 | 77 | class="terminal hero-visual" |
78 | 78 | role="img" |
79 | | - aria-label="A model file is moved and renamed, and sqb plan shows a migration of the existing table instead of a rebuild." |
80 | | - ><span class="hv-stack"><span class="hv-a"><span class="tree"><span class="dim">models</span> |
| 79 | + aria-label="sqb mv moves and renames a model file, and sqb plan shows a migration of the existing table instead of a rebuild, with a view keeping the old name working." |
| 80 | + ><span class="hv-l hv-l0"><span class="cmd">sqb mv model:revenue<span class="hv-break"> </span>models/finance/daily_revenue.sql</span></span><span class="hv-stack"><span class="hv-a"><span class="tree"><span class="dim">models</span> |
81 | 81 | <span class="dim">└──</span> marts |
82 | 82 | <span class="dim">└──</span> revenue.sql</span></span><span class="hv-b"><span class="tree"><span class="dim">models</span> |
83 | 83 | <span class="dim">└──</span> finance |
84 | 84 | <span class="dim">└──</span> <span class="info">daily_revenue.sql</span></span></span></span> |
85 | | -<span class="hv-l hv-l1"><span class="cmd">sqb plan</span></span><span class="hv-l hv-l2"><span class="strong">Migrations</span> <span class="dim">(1)</span></span><span class="hv-l hv-l3"><span class="tree"><span class="dim">└──</span></span> daily_revenue <span class="info strong">migrate</span><span class="hv-wide"> <span class="dim">prod.revenue -></span> prod.daily_revenue</span></span><span class="hv-l hv-l4"><span class="tree"> <span class="dim">├──</span></span> <span class="dim">compatibility</span> <span class="ok">compatible</span></span><span class="hv-l hv-l5"><span class="tree"> <span class="dim">├──</span></span> <span class="dim">transfer</span> physical copy<span class="hv-wide">, promote by staged rename</span></span><span class="hv-l hv-l6"><span class="tree"> <span class="dim">└──</span></span> <span class="dim">discovery</span> automatic</span></div> |
| 85 | +<span class="hv-l hv-l1"><span class="cmd">sqb plan</span></span><span class="hv-l hv-l2"><span class="strong">Migrations</span> <span class="dim">(1)</span></span><span class="hv-l hv-l3"><span class="tree"><span class="dim">└──</span></span> daily_revenue <span class="info strong">migrate</span><span class="hv-wide"> <span class="dim">prod.revenue -></span> prod.daily_revenue</span></span><span class="hv-l hv-l4"><span class="tree"> <span class="dim">├──</span></span> <span class="dim">compatibility</span> <span class="ok">compatible</span></span><span class="hv-l hv-l5"><span class="tree"> <span class="dim">├──</span></span> <span class="dim">transfer</span> physical copy<span class="hv-wide">, promote by staged rename</span></span><span class="hv-l hv-l6"><span class="tree"> <span class="dim">└──</span></span> <span class="dim">old name</span> prod.revenue</span><span class="hv-l hv-l7"><span class="tree"> <span class="dim">├──</span></span> <span class="dim">view</span> until 2026-11-05</span><span class="hv-l hv-l8"><span class="tree"> <span class="dim">└──</span></span> <span class="dim">old table</span> archived</span></div> |
86 | 86 | </div> |
87 | 87 |
|
88 | 88 | <section> |
@@ -190,7 +190,7 @@ <h3>Turn review comments into compile errors</h3> |
190 | 190 | <h3>Reorganise without breaking anything</h3> |
191 | 191 | <p> |
192 | 192 |
|
193 | | - Declarations live next to the models that use them, and the compiler enforces who can see them. <code>sqb scope</code> shows what a move would break. |
| 193 | + Declarations live next to the models that use them, and the compiler enforces who can see them. <code>sqb scope</code> shows what a move would break, and <code>sqb mv</code> moves the model's private macros, enums and constants with it. |
194 | 194 | </p> |
195 | 195 | </div> |
196 | 196 | <pre class="terminal"><span class="tree">models/marts/ |
@@ -322,15 +322,24 @@ <h3>See what the tests missed</h3> |
322 | 322 | <h3>Rename models without rebuilding history</h3> |
323 | 323 | <p> |
324 | 324 |
|
325 | | - A renamed incremental model keeps its table instead of starting again. If the logic changed too, declare <code>migrate_from</code>. |
| 325 | + <code>sqb rename</code> and <code>sqb mv</code> update every reference and keep the existing table, so an incremental model doesn't start again. The old name keeps working as a view. Renamed columns keep their history too. |
326 | 326 | </p> |
327 | 327 | </div> |
328 | | -<pre class="terminal"><span class="cmd">sqb plan</span> |
| 328 | +<pre class="terminal"><span class="cmd">sqb rename model:daily_activity_rollup daily_order_rollup</span> |
| 329 | +<span class="info strong">Rename model daily_activity_rollup -> daily_order_rollup</span> |
| 330 | +<span class="dim">├──</span> models/marts/daily_order_rollup.sql<span class="dim"> (moved from models/marts/daily_activity_rollup.sql)</span> |
| 331 | +<span class="dim">└──</span> models/marts/hourly_activity_with_daily_context.sql |
| 332 | +<span class="dim"> └──</span> 36:19 reference __ref("daily_activity_rollup") -> __ref("daily_order_rollup") |
| 333 | +<span class="ok strong">Compiled: ok, 2 files changed</span> |
| 334 | + |
| 335 | +<span class="cmd">sqb plan</span> |
329 | 336 | <span class="strong">Migrations</span> <span class="dim">(1)</span> |
330 | 337 | <span class="dim">└──</span> daily_order_rollup <span class="info strong">migrate</span> <span class="dim">dev.daily_activity_rollup -></span> dev.daily_order_rollup |
331 | 338 | <span class="dim">├── compatibility</span> <span class="ok">compatible</span> |
332 | 339 | <span class="dim">├── transfer</span> physical copy, promote by staged rename |
333 | | - <span class="dim">└── discovery</span> automatic</pre> |
| 340 | + <span class="dim">└── old name</span> dev.daily_activity_rollup |
| 341 | + <span class="dim">├── view</span> until 2026-11-05 |
| 342 | + <span class="dim">└── old table</span> archived</pre> |
334 | 343 | </div> |
335 | 344 | <div class="step"> |
336 | 345 | <div class="step-text"> |
|
0 commit comments