Every table in OneLake is a folder of Parquet files plus a transaction log. Knowing what that means explains why Fabric can store data once, and why tables need occasional housekeeping.
Almost every table in Microsoft Fabric is a Delta table. Lakehouse tables, warehouse tables and mirrored databases all store their data the same way. You do not need to know the internals to use Fabric, but a basic picture explains a lot: why engines can share data, why time travel works, and why tables need occasional maintenance.
This is the third post in our Fabric building blocks series, after OneLake and mirroring.
Parquet: data stored by column
Parquet is an open file format that stores data by column rather than by row. All the values for customer name sit together, all the values for net amount sit together, and so on.
That matters for analytics. A report that sums sales by region only needs two columns, so it only reads two columns. And because a column holds similar values, it compresses very well. A Parquet file is typically much smaller than the same data as CSV, and much faster to query.
What Parquet does not have is any idea of a table. It is just files. Add a file, remove a file or half-write a file and nothing keeps track.
Delta: turning files into a table
Delta Lake adds that missing layer. A Delta table is a folder containing Parquet files plus a transaction log, a subfolder that records every change made to the table in order.
The log says which files belong to the current version of the table. When something writes to the table, new Parquet files are written first and the change is committed to the log only when it is complete. Readers always follow the log, so they either see the whole change or none of it.
That gives a folder of files the behaviour people expect from a database table:
- Reliable writes. A failed load does not leave half the data visible.
- Schema enforcement. Data that does not match the table's columns and types is rejected rather than silently written.
- Time travel. Because the log keeps history, you can query the table as it was at an earlier version, which is very useful for checking what changed.
- Updates, deletes and merges, even though Parquet files themselves are never edited in place.
Why an open format matters
Because Delta is open, every Fabric engine can read the same table. Spark writes it, the SQL analytics endpoint queries it, and Power BI reads it directly in Direct Lake mode. Fabric has also added interoperability with Apache Iceberg, the other main open table format, so tables can be shared with tools that prefer it.
It also means the data is not locked into one product. Delta tables in OneLake can be read by other tools that understand the format. That is a large part of the case for Fabric we make in what Microsoft Fabric actually is.
Housekeeping: V-Order, optimise and vacuum
Delta tables need occasional maintenance, and Fabric provides tools for it.
- V-Order is a Fabric optimisation applied when Parquet files are written. It arranges data so that Power BI and SQL can read it faster.
- Optimise combines many small files into fewer larger ones. Frequent small loads create lots of small files, which slows reads.
- Vacuum removes old files no longer referenced by the log. It saves storage, but it also limits how far back time travel can go, so set the retention period deliberately.
Neglected tables are a common reason for slow reports and higher capacity use, which feeds directly into what you pay for Fabric.
Where to go next
The next post looks at the tools that write these tables: notebooks, Dataflows Gen2 and pipelines. If you want a view on how your tables are being maintained, our Microsoft Fabric team can help.
Parquet stores the data. Delta makes it a table you can trust.
Simon Devine
Founder, Hopton Analytics
Part of the Hopton Analytics team, delivering governed analytics programmes for UK mid-market organisations.
