Contents

Data Engineering › Data Modeling for Analytics

One Big Table (Wide Tables)

Denormalizing everything into one wide table for simple, fast queries.

Also known as: OBT, one big table, wide table, denormalized table

A one big table (OBT), or wide table, is a single denormalized table that already contains the fact columns and the dimension attributes they would otherwise be joined to. Analysts query one table, and there are no joins.

orders_wide
order_id | order_date | customer_name | customer_country | product_name | category | quantity | amount

It’s the far end of the denormalization trade: instead of a star schema with a fact joined to dimensions, everything is pre-joined and repeated on every row.

Why people build them

  • Simple for analysts and BI tools. No joins means fewer things to get wrong and a shorter learning curve.
  • Often fast on columnar engines, which compress repeated text well and read only the columns a query needs (columnar storage).
  • Convenient per use case. A dashboard or an ML feature table can have exactly the columns it needs, in one place.

The classic mistake

Teams reach for an OBT because joins are annoying, then discover the costs. Every query scans a wide table, so it reads more bytes than a narrow fact would (query cost). A change to one attribute means rebuilding the whole table. And each team’s wide table defines “revenue” or “active customer” slightly differently, so the numbers no longer line up.

The reverse mistake is just as common: building a large, rigid star schema for a small dataset where one well-named wide table would have been simpler and faster.

Trade-offs

Wide tableModeled (star) schema
No joins, easy to queryMore joins, but flexible
Repeats data; scans more bytesStores data once
Must rebuild on changeUpdate one dimension
Each table drifts in definitionsShared dimensions stay consistent
Great for a fixed set of questionsHandles new questions

When to use it

An OBT works well as a consumption layer for a specific, stable set of questions: a dashboard’s backing table, a report, or a feature table for one model. Build it on top of a modeled core, so there’s still one place where definitions and history live, and regenerate it from that core rather than editing it by hand.

Avoid it as the only model when you have many unpredictable questions, need consistent shared definitions across teams, or must update dimension values without rewriting everything. A star schema or a snowflake schema keeps those options open. The two aren’t exclusive: many warehouses keep a star underneath and materialize wide tables for the dashboards that need them.