Data lakehouse use cases: real examples and when you need one
What a data lakehouse is used for, with sourced real-world examples, what BI analysts still have to model, and a rule for when your warehouse already does the job.
A data lakehouse is used when one copy of data, kept as open files in your own cloud storage, has to serve several kinds of work at once – SQL dashboards, machine learning, streaming – with warehouse-style transactions and schemas on top. The real examples are large: event logs at trillions of rows a day, privacy deletions across petabytes, many engines reading the same tables. If your data is tables and one SQL engine answers your questions, your warehouse already does the job, and in October 2026 all five warehouses OWOX Data Marts runs on can read or write the same open table format a lakehouse uses.
The question usually reaches the analyst as “should we move to a lakehouse?”. The analyst is the one who will be asked to defend the numbers after the move, so the useful answer is not a list of features but a test: which of your problems does the storage format actually solve?
Note: Originally published in January 2025. Fully updated in October 2026 with a sourced use-case table, what each of the five warehouses now does with Apache Iceberg, a measured small-files test on a real Iceberg table, and the size of our demo analytics estate as a test of when a lakehouse is not the answer.
What a data lakehouse is
A lakehouse has three parts: files in object storage (usually Parquet), an open table format on top of them (Apache Iceberg, Delta Lake or Apache Hudi) that adds transactions, schemas and table history, and one or more engines that query those tables with SQL or code. AWS’s definition, October 2026: “A data lakehouse is a unified data architecture that combines data warehouses and data lakes, providing analytics capabilities such as structuring, governance, and reporting.”
What separates it from a plain data lake is the table format: without it, a dashboard can read a half-written file and two writers can overwrite each other. What separates it from a warehouse is ownership of the files: they sit in your bucket, in an open format, and any engine that speaks the format can read them. The data lakehouse architecture guide covers the layers in detail; this page is about what teams use it for.
Data lakehouse use cases, with real examples
Data lakehouse use cases, with real examples
Most pages list the same workloads without a single named case. The table below keeps only examples with a named company and a figure. All of them come from one page: MinIO’s “Data Lakehouse Examples in Action” (dated July 2025), which summarises published case studies. The figures are self-reported by the companies and collected by MinIO, a storage vendor; we have not verified them.
| Workload | What the lakehouse adds over a lake or a warehouse | Example (self-reported, via MinIO) |
|---|---|---|
| BI and SQL dashboards on lake data | Transactions and schema on the lake, so no second copy has to be loaded into a warehouse | Memed (Dremio on Iceberg in S3): the daily ETL went from 30–40 minutes to about 40 seconds |
| Machine learning on the same tables as BI | Several engines read one copy; no export to a separate ML store | Robinhood: Hudi tables read by Spark for ETL and Trino for analytics, over 10,000 sources and multiple petabytes by 2023 |
| Streaming ingest, upserts, late-arriving data | Record-level updates and deletes on files, which a plain lake cannot do safely | Walmart (Hudi): one critical batch job ran 5x faster than the previous ORC-based approach in tests |
| Event and log analytics at very large volume | Cheap object storage for one copy of everything | Tencent Games (Iceberg + StarRocks): a 15x reduction in storage costs, trillions of records ingested per day |
| Privacy deletion (GDPR, CCPA) | Row-level delete across the whole lake | Robinhood: deletes all data for one user across a multi-petabyte lakehouse |
| Retiring a lake plus separate warehouses | One platform instead of duplicated pipelines and copies | WeChat (1.3B users): storage costs down by over 65% after dropping duplicate datasets |
| Customer-facing analytics on raw event files | Columnar files and partition pruning instead of scanning raw JSON | Datto (Iceberg + Trino): 2–3x lower p50 and p99 query times on about 150,000 events a day |
| Data sharing and monetization | One copy in an open format that a partner’s engine can read | No named case with figures in the 15 pages we read |
Two things stand out. Every named case is a very large company, and most started from Hadoop or a sprawl of copies, so the gain is partly from consolidation, not from the format alone. And the one modest-volume case, Datto, was not a volume problem at all: queries scanned thousands of small JSON files, and the fix was a layout that let the engine skip them. Small files are also what frequent loads produce on a lakehouse table, which we measured next.
What frequent loads do to a lakehouse table, measured
Streaming and frequent loads are on every use-case list. They come with a cost the lists leave out. We built a real Apache Iceberg table locally (Apple M4 Pro laptop; pyiceberg 0.8.1 writing with a SQLite-backed SQL catalog to the local file system; pyarrow 18.1.0; DuckDB 1.1.3 to run the query). The data is a synthetic 2,000,000-row sales table with 17 columns and one year of dates. We appended it in 500 batches of 4,000 rows, the way a loader that writes every few minutes would, and then compacted the table by rewriting it with its own contents:
| After 500 appends | After compaction | |
|---|---|---|
| Data files | 500 | 1 |
| Data bytes | 77,289,099 | 24,435,912 (3.2x less) |
| Snapshots | 500 | 502 (history kept until expired) |
| Metadata files | 1,501 files, 131,840,977 bytes | – |
| Planning the scan (files the query must open) | 192.3 ms | 1.1 ms (175x faster) |
| Store totals over the data files (DuckDB, best of 5) | 51.7 ms | 16.6 ms (3.1x faster) |
Writing the 500 appends took 8.8 seconds. The table’s metadata grew larger than its data (131.8 MB against 77.3 MB), and every query ran 3.1x slower until someone compacted it. Compaction did not remove the old snapshots either: the history stays, with its files, until a separate expiry job deletes it. On a lakehouse that loads often, compaction and snapshot expiry are jobs someone has to schedule and watch. A managed warehouse does this housekeeping for you.
OWOX Data Marts
See your first report built in real time. 15 minutes.
- Connect your data warehouse
- Pick your metrics
- Get a live Google Sheets report
In the time it takes to write a ticket. Then imagine never writing that ticket again.
Book a DemoWe'll use your actual use case
What a BI analyst actually builds on a lakehouse
What a BI analyst actually builds on a lakehouse
The dashboards are the ones you build on any warehouse: spend and ROAS by channel, revenue by store and day, cohort retention, funnel conversion. On a lakehouse they run on a SQL engine (a Databricks SQL warehouse, Trino, Athena, or a warehouse reading the lake tables), and the BI tool connects to that engine exactly as it would to a warehouse.
What the lakehouse does not do is model the data. It stores the raw layer cheaply; it does not turn seven ad platforms, each with its own schema, into one table. On our synthetic demo data that step takes 143,230 raw connector rows to 15,466 modelled rows before any report reads them; the lakehouse architecture guide traces it layer by layer. That work is the same on a lakehouse as on a warehouse. “Self-service” comes from the modelled layer, not from the storage format. A BI team that wants less dependence on data engineering needs well-described modelled tables more than it needs open files; a lakehouse adds engineering work (catalogs, compaction, file layout) before it removes any.
Checks are the other half. In the same demo, every row-level check on orders passes while the ad spend feed stops five days before the orders do, which the implementation guide shows with its acceptance queries. No storage format would flag that. A quality check on data freshness would.
Best practices that hold for self-service on a lakehouse, short:
- Expose modelled tables, not raw ones, with a description and an owner on each.
- Check freshness per source at the raw layer, before the join.
- Decide the layout before the first dashboard: partitions follow the filters people actually use (challenge 5 below).
- Keep one engine as the reporting endpoint, so a number does not change with the tool that reads it.
Implementation challenges, specifically
Implementation challenges, specifically
The generic list (governance, cost, skills) applies to any data project. These are the ones specific to a lakehouse:
- Who owns the catalog. Two engines writing one table need one catalog both trust; the vendors’ docs name different ones: AWS Glue Data Catalog for Redshift, Unity Catalog for Databricks, Snowflake for Snowflake-managed tables (details).
- Version and feature support differ. Athena’s docs state “Athena supports Apache Iceberg version 1.4.2”; check that every engine handles the features a shared table uses.
- Read-only paths still exist. Google’s BigQuery docs describe the older Iceberg external tables as “read-only”; check which route each engine uses.
- Housekeeping is yours to schedule. In our 500-append test the metadata outgrew the data and queries ran 3.1x slower until compaction; old snapshots stay until an expiry job removes them. Compaction and snapshot expiry need a schedule, an owner and an alert when they fail.
- Partitioning is a trade, not a default. In our local Iceberg build, partitioning by day made a one-day read 118x smaller but a filter on any other column opened all 365 files (measured in the architecture guide). Pick partitions from the filters people actually use.
- Access is granted in two places: on the bucket and in the engine.
- Data quality does not improve by itself. The freshness gap above would survive any migration.
Do you need a lakehouse, or does your warehouse already do this?
Do you need a lakehouse, or does your warehouse already do this?
This is the decision most pages skip. Three facts change it.
Fact 1: the five warehouses already speak Iceberg
“Lakehouse or warehouse” is no longer a choice of platform. Per their documentation in October 2026, all five warehouses OWOX Data Marts runs on now read and write Apache Iceberg: Google BigQuery through Apache Iceberg managed tables, Snowflake through Apache Iceberg tables for Snowflake, AWS Redshift and AWS Athena through their Iceberg reads and writes, and Databricks through managed Iceberg tables in Unity Catalog (plus UniForm for Delta tables); the architecture guide quotes each vendor.
So when one table really must sit in your own bucket in an open format – for a data science team’s Spark jobs, for a partner, to avoid lock-in on one dataset – you can put that table in Iceberg from the warehouse you already have. The migration question shrinks to a per-table question.
Fact 2: two estates we measured are small and tabular
We sized two BigQuery projects on 15 October 2026. One is synthetic: owox-demo, the data behind our demo businesses (a retail chain, a trading business, a subscription store, a clinic network and others). The other is real: a working OWOX project used for content analytics, connector tests and demo staging. The real project was sized from table metadata, one dataset at a time, which bills 0 bytes:
SELECT table_id, size_bytes, row_count, type
FROM `project.dataset.__TABLES__`
ORDER BY size_bytes DESC
The demo project was sized with INFORMATION_SCHEMA.TABLE_STORAGE, grouped by dataset (that scan billed 1.56 GB, about half of the estate it measured).
| Demo project (synthetic) | Working project (real) | |
|---|---|---|
| Datasets | 14 | 45 (plus one empty) |
| Objects | Base tables in 14 datasets, plus views over them | 211 tables, 67 views, 2 external tables |
| Total size | Under 3.5 GB | 17.09 GB, 112.5M rows |
| Largest | Retail chain: 2.707 GB, 14.1M rows | Search Console bulk export: 15.56 GB, 91% of the project |
| Typical table | Seven ad connectors: 0.033 GB together | Median table 13 KB; 169 of 211 under 1 MB; 2 over 1 GB |
| Non-tabular data | None | None found: no images, audio, logs or free-text corpora (the 2 external tables were not inspected) |
Both estates sit far from every row of the “you need a lakehouse” column below. All data is tables; one SQL engine answers the questions; the one large dataset is two tables of a single export (11.18 GB and 4.38 GB), and everything else is small. Two estates are not a survey, and yours may differ; checking takes one metadata query per dataset. The problems these estates do have (seven ad schemas to map, a feed that stops before the orders do) are modelling and quality problems.
Fact 3: on a lakehouse, layout and housekeeping become your job
A warehouse already rewards layout: on our demo sales table, a one-day filter on an unpartitioned table read 35% more than the whole year, as the implementation guide measures step by step. An Iceberg table behaves the same way, and adds its own work. Partitioning by day made a one-day read 118x smaller in our local Iceberg build, at the price of a table 3x larger and 365 files for any other filter (architecture guide). Frequent loads left 500 files and more metadata than data until compaction (the test above). Moving to a lakehouse does not fix layout; it makes layout and its upkeep your job. On a warehouse, partitioned tables are most of the fix.
The rule
| You need a lakehouse (or an open-format table) when | Your warehouse already does this when |
|---|---|
| A large share of the data is not tables: raw logs, documents, images, model inputs | Everything you report on lands as tables |
| Two or more engines must write the same tables | One SQL engine answers the questions |
| Record-level upserts and deletes at very large volume are the bottleneck | Daily or hourly loads are fresh enough |
| The files must sit in your bucket in an open format | That applies to a few tables: use your warehouse’s Iceberg feature for those |
| You are consolidating a lake plus several warehouses with duplicated copies | You have one warehouse and no duplicate pipelines |
If the trouble is numbers nobody can defend, neither column applies: that is a modelling and checking problem, and it moves with you to any platform. How to choose a data warehouse covers the platform choice itself; the Databricks and Athena guides cover the two of the five built closest to the lake.
Lakehouse for marketing: where it fits and where it does not
Lakehouse for marketing: where it fits and where it does not
It fits when marketing data sits next to much larger data that another team works on: raw clickstream or app events at a volume where storage cost matters, shared with a data science team training propensity or media-mix models in Spark on the same tables. It also fits when raw API payloads must be kept for years so they can be reprocessed when a definition changes.
It does not fit the usual marketing reporting job: ad spend from a handful of connectors, orders, sessions, maybe CRM stages. In our demo, seven ad platforms over almost three years are 33 MB. The hard parts are a date stored as STRING in two of seven platforms, seven column layouts mapped to one, a spend feed that stops five days before orders, and agreeing what “revenue” means. None of that is storage. A marketing analytics data model solves it on whichever of the five warehouses you use, and a unified ad report is the output a reporting team usually needs.
Where OWOX Data Marts fits
OWOX Data Marts works on top of your storage – Google BigQuery, Snowflake, AWS Redshift, AWS Athena or Databricks – rather than instead of it. A Data Mart is SQL, a table or a view in that storage, with a description, an owner and relationships to other Data Marts; together they form the model that reports in , Data Studio and AI assistants are built from. Whether the tables underneath are native or open-format, the modelled layer and its checks are the part the business reads.
Turn your data into decisions.
Governed data marts give you the clean foundation ML needs to actually work.
- No AI hallucinations
- Analyst-governed definitions
- Every number traces to SQL
Frequently Asked Questions
How can a data lakehouse improve a team's analytics?
A lakehouse helps when one copy of data has to serve several kinds of work: SQL dashboards, machine learning in Spark and streaming ingest, with transactions and schemas on open files in your own storage. It does not model the data. Reports still need modelled tables, freshness checks per source and a layout that matches the filters people use. If all your data is tables and one SQL engine answers the questions, a warehouse gives the same analytics with less to run. See how to choose a data warehouse.
What challenges do teams face when implementing a data lakehouse?
The lakehouse-specific ones: deciding which catalog owns each table when two engines write to it, checking that every engine supports the Iceberg version and features a table uses, read-only paths in some engines, file layout and compaction that a managed warehouse would otherwise handle, and access granted both on the bucket and in the engine. Data quality does not improve by itself: a source that stops loading is just as silent in open files as in warehouse tables.
What is a data lakehouse, and how is it different from a data lake or a data warehouse?
A data lakehouse is files in object storage, an open table format on top (Apache Iceberg, Delta Lake or Apache Hudi) and engines that query them. Unlike a plain data lake, the table format adds transactions, schemas and history, so readers never see half-written files. Unlike a classic warehouse, the files sit in your own bucket in an open format. The line is blurring: Google BigQuery, Snowflake, AWS Redshift, AWS Athena and Databricks all now work with Iceberg tables. More in the lakehouse architecture guide.
