TraceBi
Code-first · Traceable · Open Source

Build analytics pipelines that explain themselves.

TraceBi is a Python framework for building BI workflows — from raw data ingestion to star schemas, reports, and dashboards — where every transformation is tracked with a full lineage chain. No black boxes. No mystery queries.

▤ View Reports ⊞ Explore Models ⧖ Pipelines
1
Connector
1
Data Model
4
Reports
1
Pipeline
What TraceBi does

Six building blocks — each independent, all composable.

Connectors

Pull data from CSV, SQL databases, BigQuery, Snowflake, or in-memory DataFrames through a unified load() interface.

Medallion ETL

Structure your pipeline as Bronze → Silver → Gold layers. Each layer transforms data and writes to configurable sinks with full lineage tracking.

Star Schema

Define dimension and fact tables, then query cross-table joins with a declarative StarSchema.query() — no manual SQL required.

Data Models

Register tables and named join relationships. The associative model lets you slice and explore data without writing join logic each time.

Reports

Compose reports from text, table, and chart sections. Render to HTML or Excel. Every report captures a lineage manifest at render time.

Dashboards

Mount interactive Plotly/Dash dashboards directly inside the TraceBi web server — no separate process needed.

How to use it

Two ways to work with TraceBi — pick what fits your workflow.

Option 1 — Python library

Install and use TraceBi from a notebook or script. Build your medallion pipeline, query your star schema, and render reports to HTML or Excel — all with pure Python.

pip install tracebi
from tracebi import BronzeLayer, StarSchema, Report

gold = GoldLayer(schema=schema).query(filters)
report = Report("Sales", sections=[
  TableSection("Revenue", gold["revenue"]),
])
report.render(HTMLRenderer("out.html"))
Option 2 — Web UI (this app)

Register your connectors, models, reports, and pipelines in web/demo_app.py, then run the server to get a live dashboard with API docs, report preview, and lineage diagrams.

# web/demo_app.py
registry.add_connector("orders", CSVConnector(...))
registry.add_pipeline("sales", runner)
python -m uvicorn web.api.main:app \
  --reload --port 8000
Full lineage, always

Every DataSet carries a chain of LineageNode records that describe exactly which connector, transformation, and timestamp produced each result. Click any report to visualise the full DAG.

Explore lineage →
REST API included

Every UI feature is backed by a documented REST API. Automate report generation, trigger pipelines, or integrate TraceBi data into other tools — all without touching the UI.

Swagger UI ReDoc