At Zalando, a leading European online platform for fashion and lifestyle, we orchestrate a massive digital ecosystem that connects over 50 million active customers with more than 7,000 brands and partners across Europe. Every customer interaction (browse, order, return, etc.) generates a pulse of data that drives our decision-making, from personalized recommendations to logistics optimization.
Operating at this scale comes with a unique set of challenges. Our data landscape is vast and complex, fed by a microservices architecture that streams terabytes of events into our central data lake. While this architecture allowed us to scale rapidly, it also made governance challenging and blurred the distinction between Transactional Data (day-to-day business operations) and Analytical Data (decision-making insights).
For years, we strived for a distributed approach to solve this by decentralizing ownership, so domain teams (like "Payments" or "Logistics") could manage their own data products. A centralized governance structure is crucial in this setup to ensure a manageable load on teams and prevent business risk. Additionally, without a unified layer to define truth, we face the metric divergence challenge: Why does the Marketing dashboard show a different "Net Revenue" than the Finance report? Since metrics live in silos, it is difficult to govern them and ensure they are discoverable and trustworthy for reusability throughout their lifecycle.
In this post, we will share how Zalando is achieving this by leveraging the full breadth of the Databricks Platform. We will dive into how we are building a Unified Semantic Layer that bridges the gap between Transactional Data and Analytical Data. Specifically, we will cover:
To manage our vast data landscape effectively, we decided to move away from resource-centric gatekeeping. In that model, every new dataset or consumer required bespoke IAM roles, S3 bucket policies, and exception handling. But we identified challenges: permissions were fragmented across thousands of resources, cumbersome to review, and prone to drift. Therefore, we shifted to an identity-based governance approach. Access decisions are expressed as reusable policies tied to people and groups. They are evaluated consistently across datasets and enforced centrally. This makes access easier to operate, audit, and evolve as teams and data change. We built this foundation using Databricks Unity Catalog and implemented a federated access control framework on top.
The Architecture
We designed a dual-catalog pattern that strictly separates the creation of data from its consumption, ensuring that agility doesn't come at the cost of control:

We made a strategic decision to expose data in the shared catalog exclusively via Dynamic Views, rather than direct table pointers. This approach allows us to enforce a centralized access process capable of handling complex compliance rules.
By using Dynamic Views as the serving layer, we achieved:
To keep this process efficient, we automated the sharing workflow using a GitOps approach:
This setup allows us to maintain the agility of distributed teams while enforcing a centralized, fully auditable governance standard that keeps our data easily discoverable, secure, and compliant.
With the secure foundation we established for accessing data, we are now focused on ensuring consistent data interpretation.
We are actively centralizing business logic that was previously fragmented across the data stack:
We are unifying thousands of metric definitions into a single, governed layer. This allows us to break “logic lock-in”: the definition of “Net Merchandise Value” (NMV) in one dashboarding tool becomes fully accessible to a data scientist working in a notebook or to an AI bot answering a user’s question.
To achieve this, we are adopting Databricks Metric Views as our unified semantic layer. This decisively decouples the definition of a metric from its consumption, guaranteeing that users receive the exact same calculated result whether they query via a SQL editor, a dashboard, or an AI agent. In practice, this ensures that both technical and non-technical users use the same metric definitions.

We implement a rigorous "Metric as Code" approach to our semantic layer, just as we utilize GitOps for data sharing in Unity Catalog. We ensure consistency across all teams by centralizing and standardizing every KPI definition.
Our architecture manages the entire lifecycle of a metric:
Under the hood, we rely on established dimensional modeling principles. Each Metric View in our production environment acts as a standard interface, typically mapping 1-to-1 with our Fact tables while inheriting attributes from conformed Dimension tables.
This setup is crucial for our scale. By enforcing that Metric Views are built on top of the trusted data in our Shared Catalog (from Section 1), we ensure that the semantic layer inherits all the security and compliance benefits of the underlying platform. A user querying a metric view is still subject to the same row-level and column-level security, and access rules we defined in the Unity Catalog layer. We will also enhance this setup later this year with an additional authorization layer via the Metric Views, so that users no longer need raw data access, but only metric and dimension level access.
The payoff of this architecture is interoperability. By lifting business logic out of proprietary BI tools and into the Lakehouse semantic layer, we prepare ourselves for the future. A metric defined once in this layer becomes instantly available to:
This centralization is the key unlock for our next major step: empowering the business to "talk" to their data.
Dashboards are essential for answering everyday, recurring questions. However, the speed of business often outpaces the ability of standard reporting to capture everything. For instance, a Category Manager might need to know: "Which sneaker brands had a high click-through rate but didn't make it into the top 10 by number of items sold in Germany last week?" Answering novel questions like this one, not addressed by existing standard reports, frequently required the construction of a new dashboard. Even with self-service tools, a significant "time-to-insight" lag persisted. Users had to find the right dataset, configure widgets, and apply filters before they could get an answer. This often resulted in one-off dashboards, contributing to dashboard sprawl and reduced discoverability.
To optimize the user experience, we evaluated several “Talk-to-Data” solutions offering LLM-powered conversational interfaces, often referred to as AI chatbots. Genie performed best because it is grounded in a unified semantic layer, while solutions without this layer struggled to generate accurate SQL for complex business logic.
This is why the introduction of Metric Views proved instrumental for the conversational AI-powered analytics like Genie. By directing Genie towards the pre-established Metric Views (as detailed in Section 2), we achieved a critical breakthrough: consistent, reliable answers grounded in governed business definitions.
The biggest barrier to adopting AI in analytics is trust. If an LLM hallucinates a SQL query, the numbers will be wrong, and users will lose faith.
Genie solves this by working with our semantic layer in Metric Views.
We tested Genie with non-technical teams, such as Merchandisers, Buyers, and Pricing Analysts, who had historically relied on Excel exports or BI tools. The feedback was immediate: users could get quick answers to granular questions (e.g., specific market performance paired with specific device type) without needing to know a single line of SQL or spending time building a custom report view.
The introduction of the new Agent Mode has significantly enhanced the user experience. The Agent Mode automatically analyzes data to pinpoint the root cause of analysis results, allowing users to simply ask "why" something happened. At Zalando, this could reduce the preparation time for our regular performance meetings—where critical steering decisions are made—from several hours to just a few minutes.
However, with its extensive functionality, Genie can also get expensive if not set-up correctly, for example, on unaggregated tables and views. That is why it’s critical to carefully curate the data and context Genie uses. Additionally, we recognize the potential for further enhancement, such as the benefit of introducing full Genie version control and enabling programmatic updates to Genie configurations, which Databricks is already working on and which is currently already partially supported.
We aren't just treating Genie as a sandbox experiment; we are integrating it into our enterprise operations. Our focus areas for scaling include:
By combining the governance of Unity Catalog, the standardization of business logic through Metric Views, and the intelligence of Genie, we are building a data culture where "asking the data" is as easy as asking a colleague.
Thank you to Merve Karali, Tobias Efinger, and Roberto Bruno Martins for contributing to this post.
