Convert a hand-written history routine into a dbt snapshot and prove history parity
A Type 2 dimension is kept by a hand-written MERGE procedure or trigger that nobody wants to maintain.
- Transformation
- Any domain
Platform
95 RecipesRecipes that can execute against MotherDuck.
A Type 2 dimension is kept by a hand-written MERGE procedure or trigger that nobody wants to maintain.
A Spark notebook lands raw files into bronze, and the team wants that load as tested pipeline code without keeping a cluster for it.
A required change to a published relation's grain, column meaning or shape cannot keep the old interface.
An API source has to load into bronze incrementally instead of reloading everything on every run.
A transaction-monitoring model is fed hand-built features nobody can reproduce, so two runs on the same data disagree.
Credit risk reads delinquency off a servicer status field that each system refreshes on its own day, so bucket counts and roll rates differ from report to report.
A batch export of database change events is available and the current state of its tables has to be rebuilt without reading the source database again.
Transaction feeds overlap, and source deliveries may be counted as separate business events.
Sales ops, demand planning and channel finance each report a different sell-in, sell-out and channel stock figure, because distributors report in different units, codes and cutoffs.
Revenue accounting closes the month by working gross to net in spreadsheets, nobody can audit them, and the trade accrual never ties to what customers claim.
Trade marketing reports promotion results with whatever comparison each analyst chose, and nobody can say what "without the promotion" meant for a given event.
Planners cannot see which lots are close to expiry, how much of each is still usable, or how much will go unallocated, so stock is written off that a customer could have taken.
A customer who opted out in one system still gets messages from another, because each source says something different and whichever job ran last wins.
The payback conversation uses a customer value from a spreadsheet nobody can reproduce, and it counts order revenue only, with no refunds and no cost of serving the orders.
Marketing, finance and product each quote a different churn rate because each defines an active and a lost customer differently.
Marketing segment lists come from a spreadsheet or BI export nobody can reproduce, and the same customer lands in different segments depending on who pulled the list.
An operational database's tables have to land in bronze, and reloading every table in full on each run is too slow or too heavy on the source.
Component demand for an approved quantity of finished goods is worked out by hand or in a spreadsheet, and nobody can show which BOM revision, unit conversion or scrap rate produced a figure.
Historical fees or surcharges change when a current rate is applied to past events.
Revenue or productivity must be reported by employee, asset or team, but responsibility for each event is unclear.
A partner or vendor drops files into a folder on a schedule, and bronze has to pick up each delivery without a rerun loading it twice.
Finance needs the aged payables for a past month or quarter end, but the payables system only shows what is owed today.
Finance needs the aged receivables report and DSO for a past month or quarter end, but the receivables system only shows what is open today.
Budget-versus-actual is a monthly copy-paste from the general ledger into the budget spreadsheet, and the variances change depending on who built them.
Accounts payable paid the same supplier invoice twice and only found out when the supplier returned the money.
Every month someone rebuilds the fixed-asset register and depreciation schedule in a spreadsheet to prove that opening value plus additions less depreciation and disposals equals closing value.
Month-end close stalls because control accounts do not agree with their subledgers and the difference is worked out by hand in a spreadsheet.
Finance subtracts one period's gross margin from another and writes the explanation by hand, and the story changes with whoever builds it.
Revenue is spread across months by hand in a spreadsheet and never agrees with the deferred revenue balance or with what was invoiced.
The weekly cash view is a spreadsheet rebuilt by hand each week, and nobody can say which receipt, payment or assumption moved a week's balance.
The close pack is rebuilt by hand every period and last quarter's trial balance cannot be reproduced as it was when the period closed.
The cloud bill grew and nobody can say which team or product drove the increase.
A SaaS renewal is due and nobody can say how many of the paid seats are actually used.
A spreadsheet that reports and models depend on is edited by hand, and a moved, renamed or retyped column keeps breaking them quietly.
The revenue cycle team matches payer remittances to billed claims by hand, and nobody can say, payer by payer, how much of what was billed was paid, adjusted, denied or is still open.
The quality team rebuilds a readmission rate from a spreadsheet each quarter, and nobody can say who was left out of the rate or why.
Occupancy, ADR and RevPAR differ between reports because each one counts stays, comps, out-of-order rooms and cancellations its own way.
A new dbt model must be brought up to date incrementally on each run, and nobody can show that a rerun or a re-delivery of records already applied leaves it unchanged.
Reserving analysts rebuild loss triangles by hand in spreadsheets, and a late payment or reserve change pushes back into cells that were already reported.
A raw material lot is recalled and nobody can say which finished lots and which customer shipments contain it, or how much of it each holds.
Finance cannot say what closing inventory is worth or how much cost of goods sold a month carries because receipts, issues, returns and adjustments are costed by hand.
Clinical operations rebuilds enrollment and site performance in a spreadsheet each month, and nobody can say who was left out of the enrolled count or why a site looks slow.
A fleet dashboard labels observed vehicle occupancy as utilisation without an authoritative available-time denominator.
A TMS dashboard reports on-time performance by lane, but nobody can inspect how it is calculated or reproduce its figure.
Plant OEE comes from a hand-built spreadsheet and nobody can say whether stops, slow running or scrap cost a line its points.
Yield and work in progress come from a spreadsheet that counts a reworked unit as a second unit produced and cannot keep first-pass yield apart from final yield.
Production-order variances are worked out in a spreadsheet nobody can audit, and nobody can say which standard version each variance was measured against.
Nobody can say how much of the company's material is sitting at a subcontractor, because transfers, returns, scrap reports and finished receipts live in different places and are never netted.
Marketing says a channel pays back quickly and Finance says it never does, and nobody can show the sum from the spend and contribution records.
Marketing and Sales each have a spreadsheet crediting their channel with the same revenue, and together they claim more than was booked.
Campaign owners ask whether a campaign is on pace and the answer changes with which budget version and which cost number someone used.
The same person is emailed, texted and pushed by several tools in one week, and nobody can say whether the next planned contact is allowed.
The same product carries different SKUs and category trees in the ERP, the web shop and the point of sale, so sales by category disagree between reports.
A new percentage, rate or average needs a defensible eligible population and missing-value policy.
Revenue or average order value means different things in different marts and dashboards, and nobody can say which number is right.
The MotherDuck load and the dbt build that follows it run from a cron job on someone's laptop.
Waiting, idle, available or busy time must be measured by site or zone and hour from operational event histories.
The warehouse system, the ERP and the last stock count report different quantities for the same item and nobody can say which is right or why.
Customers report late deliveries, and Sales, Supply Chain and the carriers each quote a different on-time-in-full figure because each applies its own promise date, tolerance and partial-shipment rule.
Procurement, Finance and the business units each quote a different spend total, and nobody can say how much was bought outside a contract.
Gross sales minus original item cost overstates order margin because refunds and returns arrive after the order.
Leadership asks whether attrition is rising and where, and nobody can answer from one consistent set of figures.
HR, finance and the board deck each report a different headcount for the same month-end, and nobody can say why.
A pay-equity review is due and worker-level compensation cannot be shared widely.
Payroll expense in the general ledger does not match the payroll register at close, and the gap is worked out by hand.
A model scores well in training but worse in production because training rows used facts, corrections or labels a real prediction could not have seen.
Procurement and finance are asked what is still owed to suppliers on open orders at a month-end, and each answer comes from a different spreadsheet.
Procurement reports savings from negotiated agreements and Finance cannot trace them to the prices actually paid.
Procurement cannot say how much supplier rebate has been earned under each purchasing agreement this period, or how much of it suppliers have already credited.
Accounts payable is asked to release payment and cannot say how much of an invoice is covered by the goods actually received.
Product analytics numbers cannot be reproduced outside the vendor's screen, and nobody can say why two conversion figures differ.
Grants accountants cannot say per award how much is authorized, obligated, spent and drawn, and each report gives a different answer.
A consumer build runs at a fixed time and, on runs where an upstream load is late, builds on partial data without anyone noticing.
A supplier owns stock until it sells, that stock shares a store and SKU with stock we bought outright, and the stock report adds the two together.
Finance cannot say what each marketplace order settled for or what is still owed, because fees, refunds, chargebacks and reserves are netted into payouts.
Stores count each till at shift close and Finance cannot tell which shortages are real and which come from how the POS records voids, refunds, change and float moves.
Customer service promises stock that is already reserved, or sells the same units twice because reservations that expired or shipped still count against availability.
Planners cannot tell which items are about to run out because sell-through and stock-outs live in spreadsheets, and each one counts a day with no stock differently.
RevOps and Finance each quote booked, billed and collected, and the three numbers never agree because every team ties them together with its own spreadsheet.
Finance, RevOps and the board each quote a different net revenue retention because each turns subscriptions into monthly recurring revenue its own way.
Leaders submit a sales forecast every week, but nobody can say how close each submission came to what booked, or whether the misses run over or under.
Sales and Finance disagree about the price a customer was promised, and someone reconciles quotes to orders and invoices by hand.
Two reports put the same day in different weeks, months, quarters or fiscal periods because each mart builds its own date logic.
Finance adds amounts held in several currencies as if they were one, or restates old transactions at today's rate, and the total changes every time someone reruns it.
A fleet dashboard reports revenue per shift but cannot establish whether a shift covers its applicable costs.
A load stopped and nothing failed; downstream models rebuilt on old data and the reports still looked current.
Monthly subscriber usage differs by who ran it, because nobody can say which call-detail batches had landed or whether each arrived complete.
Usage charges differ by who calculated them, because graduated and volume pricing, shared allowances and credits are applied differently from one run to the next.
Revenue assurance compares metered usage with billed usage in a spreadsheet each month, and nobody can say which differences are real and which are timing, estimates or a meter swap.
An existing dbt change builds successfully but reviewers still need evidence that its business answers remain valid.
The warehouse bill keeps growing and nobody can say which models or jobs are behind it.
A Synapse dedicated SQL pool or a set of SSIS packages is due to move to Fabric, and nobody can say what is in it, what each piece would take or what stops it.
Part of a dbt project is moving to another warehouse, and a macro its models call only compiles, or only returns correct values, on the old one.
A scheduled load-and-build job has to move to another platform, and nobody has written down what it must keep doing.
A dbt project has to run on a different warehouse or lakehouse, and the dashboards and reports that read it cannot show a different number afterwards.