Mermaid exampleFlowchart

ETL Pipeline Flowchart: Sources to Data Warehouse

An ETL flowchart documents how raw data from several systems becomes the tables analysts trust. Data engineers use it to agree on where validation happens and what happens to rows that fail, and analysts use it to understand why a dashboard number lags the application by a day.

  • etl pipeline diagram
  • data pipeline flowchart
  • data warehouse architecture
  • mermaid etl
  • elt diagram
ETL Pipeline Flowchart: Sources to Data Warehouse

Sources

no

yes

App database

Event logs

Partner CSV files

Extract
nightly 02:00

Staging tables

Schema and
null checks pass?

Quarantine table
+ alert

Transform
dedupe, join, aggregate

Data warehouse

BI dashboards

ML feature store

Open in editor → 16 linesrenders in GitHub, Notion, Obsidian

Mermaid code

flowchart LR
    subgraph SRC[Sources]
        S1[(App database)]
        S2[Event logs]
        S3[Partner CSV files]
    end
    S1 --> E[Extract<br/>nightly 02:00]
    S2 --> E
    S3 --> E
    E --> ST[(Staging tables)]
    ST --> V{Schema and<br/>null checks pass?}
    V -->|no| Q[Quarantine table<br/>+ alert]
    V -->|yes| T[Transform<br/>dedupe, join, aggregate]
    T --> W[(Data warehouse)]
    W --> B[BI dashboards]
    W --> M[ML feature store]

Paste this into any tool that renders Mermaid, or into the editor to change the theme and export PNG or SVG. Syntax reference: Flowchart guide.

What this diagram shows

Three sources inside the Sources subgraph feed one Extract step scheduled at 02:00. Everything lands in Staging tables first, then the Schema and null checks pass? diamond either sends the batch to Transform or diverts it to a Quarantine table with an alert. Clean data reaches the Data warehouse, which has two consumers: BI dashboards and an ML feature store. The cylinder shape marks every place data is stored at rest.

How to adapt it

  • Rename the three sources to your real systems and add or remove nodes inside the Sources subgraph as needed.
  • Change Extract<br/>nightly 02:00 to Stream ingest and replace Staging tables with a Message queue node for a streaming pipeline.
  • Split Transform into separate Clean, Join, and Aggregate nodes if each is a separate job with its own owner.
  • Add a Data catalog node fed from the warehouse if you publish table documentation.
  • For ELT, move Transform after the warehouse node so the diagram shows transformation happening inside the warehouse.

FAQ

Why validate in staging instead of at extraction?

Staging keeps a copy of the raw batch, so a failed check can be inspected and the batch replayed after a fix. Validating during extraction loses the raw rows. The quarantine path only works because staging exists.

What is the difference between ETL and ELT in this diagram?

Only the position of the Transform node. ETL transforms before loading into the warehouse, as drawn. ELT loads raw data first and transforms inside the warehouse with SQL, so the node moves to the right of Data warehouse.