01Semantic and dimensional models
Fact and dimension tables at an agreed grain, with conformed dimensions, bridge tables for many-to-many relationships and source-load tracking. The model carries the business logic, so each report reads the same definitions instead of re-implementing them.
02Power BI development and DAX
Datasets, relationships, calculation groups and measures in DAX, with row-level security where the data needs it. Existing models are profiled first — storage mode, cardinality, unused columns, duplicated measures — so a rebuild becomes a justified decision rather than a default.
03SSAS and Azure Analysis Services review
Document what a tabular model actually contains: tables, relationships, calculated columns, measures and the reports depending on each one. The output is a written assessment of what to keep, what belongs in the warehouse instead and what can be retired.
04Tableau, Looker Studio and Streamlit reporting
Dashboards built on curated views rather than ad-hoc extracts, published to Tableau Server, Looker Studio, or a Streamlit and Plotly application where an interactive Python tool fits the job better than a BI licence.
05KPI definition and metric governance
Write each metric down: the calculation, the filters, the grain, the owner and where it is allowed to appear. Past engagements have defined 20+ governed KPIs this way and cut reporting inconsistencies by around 40%, mostly by removing definitions that had quietly diverged.
06Refresh performance and cost
Reduce what a report has to read: partitioning, incremental refresh, aggregation tables, pushing transformation back into the warehouse and removing columns nothing uses. On past work this has reduced query scan sizes by 60–75% and moved refreshes from hours to minutes.
07Self-service layers, documentation and handover
A curated dataset analysts can slice without writing joins: naming standards, hidden technical columns, a description on every field and a clear line between governed measures and someone’s own analysis. Handover includes the measure catalogue, refresh schedule, access model and how to extend it.