This is best Fabric, Power BI, SQL and AI community event. How do we know? The last event sold out! Save €200 with code FABCMTY200.
Register nowA new Data Days event is coming soon! This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. Don't miss out.
Co-authored with Kevin Liu, Apache Iceberg Committer and Principal Engineer at Microsoft.
Microsoft Fabric is a unified SaaS data and analytics platform designed for the era of AI. All workloads in Microsoft Fabric use Delta Lake as the standard, open-source table format. With Microsoft OneLake, Fabric’s unified SaaS data lake, customers can unify their data estate across multiple cloud and on-prem systems.
We recently announced that OneLake can now transparently serve Delta Lake tables as Apache Iceberg tables. This post covers the details of how we built this feature and enables seamless interoperability across engines and ecosystems.
Get started:
1. Create or identify a Delta Lake table in OneLake.
2. Use any Iceberg-compatible engine (e.g., Spark, Trino, Snowflake) to query the table.
3. OneLake will automatically serve the table in Iceberg format – no configuration needed.
Organizations often rely on diverse engines and tools that favor different open table formats. Delta Lake is a popular choice for Spark-based pipelines and Microsoft Fabric engines, while Iceberg is increasingly adopted by query engines like Trino, Dremio, and Snowflake.
With OneLake, there’s no need to choose one format over the other. OneLake empowers openness and interoperability by automatically translating metadata between Delta and Iceberg formats. This means your tables are seamlessly available in both ecosystems—without duplication or compromise. Whether your team prefers Delta or Iceberg, OneLake ensures compatibility, flexibility, and freedom of choice.
By enabling on-the-fly conversion from Delta to Iceberg, OneLake eliminates the need for data duplication or format-specific pipelines.
You can now:
– Read Delta tables as Iceberg without rewriting or copying data.
– Use Iceberg-native tools on top of your existing Delta Lake datasets.
– Simplify governance and access control with a single source of truth.
Here we have a table in Fabric Lakehouse stored in the Delta format.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
Select ‘View files’ on table to see the table’s metadata.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
Both _delta_log and metadata directories should appear.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
Select the metadata directory to view the Iceberg files.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
Navigate to Snowflake and create an external volume pointing to the exampled Lakehouse.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
Next, we create an Iceberg catalog.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
Create a table that uses the Iceberg catalog and external volume, specifying the Iceberg metadata file path in OneLake.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
That's it - now you can query the table!
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
OneLake uses a feature called table format virtualization to surface tables as both Delta and Iceberg formats. When an Iceberg-compatible engine reads from a OneLake table that is natively in the Delta format, OneLake dynamically generates the necessary Iceberg metadata files. This allows the engine to interpret the table as if it were natively an Iceberg table.
Behind the scenes, this feature utilizes Apache XTable for table format metadata conversion. XTable provides cross-table omni-directional interop between the open table formats. We have also enhanced XTable functionality - for example, by converting Delta deletion vectors into Iceberg positional delete files. We look forward to contributing these features upstream to the open-source community.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
Here’s the workflow for a sample request.
How_Microsoft_OneLake_seamlessly_provides_Apache_Iceberg_support_for_all_Fabric
The source metadata remains in its original Delta structure (in the _delta_log directory). OneLake’s virtualization layer intercepts read requests on the metadata directory and determines that Iceberg-compatible metadata is needed. It then generates Iceberg-compliant metadata on demand, enabling engines to interact with the table as if it were natively Iceberg, without any physical data movement. This approach is designed to be transparent to the table owner and does not modify the original storage location. It maintains consistency with the source table and scales efficiently by producing metadata on demand, when requested by a client.
We’re actively expanding support for additional data types and advanced features across both Delta Lake and Iceberg formats. A key focus is ensuring compatibility with the upcoming Iceberg V3 specification. These enhancements will further improve OneLake’s cross-format interoperability and simplify analytics across engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.