BI & Analytics

Enterprise Semantic Layer & KPI Framework

One governed definition of every KPI across three data sources and four business domains, ending metric disputes and shrinking report build time.

50% Improvement

Query Performance

15

Weekly Hours Saved

100+

Governed DAX Measures

60-70%

Report Build Time Reduction

Challenge

Three heterogeneous data sources had to be unified under one model that served both Power BI PPU and SSAS live-connection users simultaneously, all without disrupting existing reports during migration.

  • Metric inconsistency: The same KPI had conflicting definitions across teams. Subscriber counts, engagement rates, and ad fill rates all calculated differently per department
  • Slow report builds: Every new dashboard required rebuilding core KPI logic from scratch against raw tables
  • Manual reconciliation overhead: Analysts spent significant time validating conflicting numbers before any business decision could be trusted
  • Governance gap: No central place existed for approved, documented KPI definitions. Logic lived inside individual report files

Key Decisions

Decision 1: Semantic layer on top of Gold tables, not directly on source systems

Problem: Three heterogeneous source systems already fed an enterprise data model with a conformed Gold layer. The semantic model could either reach back to source systems and rebuild the join and cleaning logic itself, or sit on top of Gold and inherit it. Each choice has different consequences for transformation duplication, refresh latency, and ongoing maintenance.

Options considered:

  • Build the semantic model directly on source system connections (a subscription-management platform, a video-analytics platform, a programmatic ad-serving platform)
  • Build on top of the enterprise data model’s Gold layer

Chosen: Build on Gold layer tables from the enterprise data model.

Why: Source systems have heterogeneous schemas and inconsistent latency. The Gold layer already resolves joins, normalizes grain, and applies business rules. Using it as the semantic foundation avoids duplicating transformation logic and keeps the semantic model focused on business definitions, not data plumbing.

Decision 2: Domain-specific partition refresh cadences

Problem: Each domain settles at a different rate: ad attribution lands over a multi-week window, subscriber base movement over several days, engagement within a day. A single uniform refresh policy would either under-refresh late-arriving ad data or waste compute reprocessing engagement data that had already stabilized.

Options considered:

  • Full daily refresh of all tables
  • Incremental refresh with a uniform lookback window for all domains

Chosen: Tiered incremental refresh by domain (Engagement: 1-day, Base Movement: 5-day, Ad Impressions: a multi-week window for late-arriving attribution).

Why: Ad impression data settles over a multi-week window due to late-arriving attribution; subscriber base movement requires a 5-day lookback for accurate churn/retention calculations; engagement data is final within 1 day. Applying a uniform cadence to all domains either under-refreshes ad data or over-processes engagement data unnecessarily.

Approach

  • Built SSAS Tabular semantic model on top of Gold layer tables from the enterprise data model
  • Integrated 3 external data pipelines into the semantic layer job: ad-impression and inventory data, a subscriber-domain dataset, and reference data from a lightweight collaborative source
  • Implemented 4-stage automated refresh pipeline: Staging to Dimension tables to Fact tables to SSAS model refresh (with dependency sequencing)
  • Defined 100+ DAX measures across 4 business domains with documented definitions in a published measure-definition reference
  • Connected Power BI reports via live dataset connection, eliminating the need for local data imports in report files
  • Built performance monitoring solution: Windows Performance Monitor, Extended Events query statistics, Dynamic Management Views, and a dedicated SSAS performance monitoring dataset

Architecture Overview

Enterprise semantic layer architecture: Gold layer tables, ad-impression and inventory data, a subscriber-domain dataset, and a lightweight reference-data source feeding an SSAS Tabular semantic model that serves Power BI via live connection.

Gold layer tables from the enterprise data model, ad-impression and inventory data, a subscriber-domain dataset, and a lightweight reference-data source feed into the SSAS Tabular semantic model via an automated 4-stage refresh job, serving Power BI reports via live connection.

Results & Impact

  • What changed in operations: Report teams stopped rebuilding KPI logic per file. All new dashboards now use shared, governed measures from the semantic layer as their starting point
  • What changed in decisions: Metric disputes dropped significantly; when a number was questioned, the answer was “check the measure-definition reference” rather than “ask which calculation each team used”
  • Report development velocity: New dashboards built on top of shared measures are estimated 60-70% faster to develop than the previous approach of building directly against source tables
  • Governance foundation: The semantic layer became the authoritative reference for KPI definitions across the organisation, referenced in data documentation, onboarding materials, and stakeholder discussions

Reusable Pattern

This pattern (governed semantic layer with domain-specific refresh cadences and documented measure definitions) applies to any organization where teams report different numbers for the same KPI:

  • SaaS: Product, revenue, and customer health metrics defined once and shared across product, finance, and CS teams
  • Retail: Conversion, margin, and inventory measures shared across merchandising, finance, and operations
  • Financial services: Consistent portfolio, risk, and compliance metrics with a documented, auditable definition layer
  • Healthcare: Standard operational and financial KPIs across facilities, removing reconciliation overhead in board reporting

When this pattern is NOT appropriate: If your organization has fewer than 3-5 teams actively building reports, or if your data volume is small enough that a single Power BI file with imported data covers your needs, a full SSAS semantic model is over-engineering. A simpler approach (shared Power BI dataset with a few certified measures) will cover the governance need without the infrastructure overhead.

Tech Stack

  • Semantic model: SSAS Tabular (SQL Server Analysis Services)
  • KPI definitions: DAX (Data Analysis Expressions)
  • Reporting: Power BI (live connection to SSAS model)
  • Sources: SQL Server, Databricks (Gold layer tables)
  • Orchestration: SQL Server Integration Services (SSIS), Databricks Jobs
  • Monitoring: Windows Performance Monitor, SQL Server Extended Events, DMVs