Deckard

Data that arrives checked

Data engineering and pipelines

Data from each system is copied into one central database, checked on the way in, with a named person for every failure. Clean sales and customer data shows which customers are due to reorder and what to offer them.

Nightly orders feedFresh
  1. 01:12Orders file lands on SFTPPicked up on arrival
  2. 01:13Columns checked, 42,180 rowsStaged before anything reaches the warehouse
  3. 01:198 of 9 tests passThe one that fails: every order has a total
  4. 01:24analytics.orders writtenOne table for its 3 readers
  5. held14 orders held for order opsNo total on any; each kept with its test

The run needed no retries and added late rows from earlier nights.

Four sources in, three uses out

Data pipeline: four source feeds, each checked where it enters, merge into one tested model and one table, analytics.orders, which dashboards, the finance export and alerts all read Four feeds, CRM, POS, Sensors and the nightly orders file, each pass a check at the edge; 14 order rows missing a total are held there with the check they failed. The checked rows merge into one tested model, orders_clean, with its joins, types and 9 checks, which writes one table, analytics.orders, 42,166 rows. Dashboards, the finance export and alerts all read that table. Moving dots show rows flowing through.
  1. Bad rows stop on arrivalEach feed is checked as it comes in, and a failing row is held with its test.
  2. Cleaned once, in one placeRecords are matched and cleaned in one tested step.
  3. Three uses, one tableDashboards, the finance export and alerts read the same table.

See it work

Last night’s run, start to finish

What each data feed includes

Cleanup steps are written in dbt and run on a schedule by Dagster or Airflow.

  1. 01Data pulled from apps, databases, files, partner feeds (EDI) and live streams
  2. 02Cleanup steps kept as code and reviewed before they run
  3. 03Schedules and retries, with a map of where each number came from
  4. 04Monitoring that tells late data from wrong data
  5. 05Documentation written automatically from the code
  6. 06Past data reloaded while reports stay online
Yours at the end

orders-pipeline/

models/The cleanup code for each table

tests/9 checks on orders

dagster/Jobs, schedules and retries

lineage/Where each number comes from

The nightly orders feed, row by row

TodayA file left on a shared server

Picked up by a script one person wrote

01Collect
Duplicates0 dropped
Column changesStop the load
Source fileKept 30 days
02Clean
Clean copyIts own table
Last changeReviewed, Sep 18
Traced fromFile to dashboard
03Load
Rows written42,166
Run time12 minutes
Retries3, 5 minutes apart
OutThe orders tableFresh
The old scriptRetired
DocsRebuilt every run
HistoryBack to 2023

How it goes live

  1. 01 · Optional

    Every data source

    Every source, how it arrives and what broke last quarter

  2. 02 · Optional

    Your worst feed first

    Rebuilt with checks and alerts

  3. 03 · Data pipelines

    All feeds

    Schedules, tracing and checks across every source

  4. 04 · Ongoing

    On call for the data

    Late or wrong data alerts us, or your team

Which feed breaks most often?

You get a rebuild plan: tests, alerts and an owner for each feed.

Start a conversation