An OLAP query looks the other way: it reads many rows, often all of them, but only a few columns, and reduces them to a small answer with GROUP BY, joins and aggregates. The revenue-by-genre query in Transformation is a typical example. There are few such queries compared with OLTP traffic, issued by analysts, dashboards and scheduled jobs rather than by customers, and a response in a second or two is fine. Data arrives in bulk loads rather than single-row updates, and historical rows are rarely changed, so analytical databases can optimize for reading. Analytical tables are often shaped differently too: wide, denormalized fact and dimension tables (Dimensional and Data Vault) instead of the many narrow tables of an OLTP schema.