At IKEA, within the Customer Fulfilment, Inventory & Logistics Insights domain, I architect, build, and look after the Microsoft Fabric and Power BI analytics platform serving 30,000+ users and billions of rows across the global supply chain organization. Since February 2023 I have led the transition from legacy Import-mode Power BI to Microsoft Fabric. Most of the work is governance and performance at scale: semantic modeling, the Direct Lake migration, CI/CD design, and performance engineering. I also lead how the team uses AI in everyday development, from Claude to the Power BI Desktop Bridge and the Skills for Fabric agent skills, testing each new tool as it lands, folding the ones that work into how we build, and coaching analysts to do the same.
Legacy Import-mode semantic models needed full refresh cycles. Data was hours old by the time it reached 30,000+ supply chain users, the refreshes burned Fabric capacity (CU), and inventory and fulfilment teams were deciding on stale numbers.
Architected the migration to composite models with Direct Lake mode on Microsoft Fabric. Designed a hybrid setup: Direct Lake for near real-time access, Import mode where calculated tables still required it. Migrated model by model so active users never lost service.
Near real-time analytics for the whole supply chain organization. Data latency went from hours to minutes, and inventory decisions got faster with it.
The development process was ad-hoc and environment-dependent. Deployments were manual, error-prone, and differed across dev, test, and production environments. A model that worked in development would frequently fail in production due to hard-coded connection strings and inconsistent configurations.
Implemented systematic parameterization covering source control parameters, row count control, and data integrity parameters, making the development process controllable and reproducible. Built a framework where any developer could deploy identically across all three environments without manual configuration changes.
Deployments became reproducible across all environments, deployment failures stopped, and the release cycle got much shorter.
Power BI artifacts had no version control, no audit trail, and no governance. Changes went straight to production without review, a compliance risk. Onboarding new team members was slow because no one could see what changed, when, or why.
Designed an end-to-end Git-based source control architecture using PBIP/TMDL format with CI/CD pipelines via Azure DevOps and GitHub. Established branching strategies, pull request workflows, automated validation gates, and deployment pipelines that enforced governance at every stage.
A full audit trail for compliance, zero-downtime deployments, and faster onboarding for new analysts joining the team.
The semantic models had grown over time. Redundant measures, slow relationships, and oversized tables piled up, and report load times got worse as data volumes grew.
Audited every production semantic model. Refactored DAX at the formula and storage engine level, removed unused measures, fixed relationships, and restructured tables for query efficiency.
Leaner, faster models. Users noticed the difference, and the infrastructure load came down.
Development was slow in the usual places. DAX authoring, debugging, and documentation took most of the hours and held up delivery.
Brought AI into DAX authoring, performance diagnostics, and documentation. Started learning and actively using the Power BI Desktop Bridge and the Skills for Fabric agent skills, so AI agents edit the PBIR and TMDL files on disk, then reload and verify against the live Power BI Desktop session. This space moves fast, so I test each new tool as it lands and fold the ones that work into how we build. Wrote the team's working guidelines so the speed did not cost us quality.
Development speed roughly tripled, with code quality and governance standards intact. AI went from a suggestion tool to a working part of the development cycle.
Fabric capacity (CU) costs were high and growing, and nobody was watching usage closely. Refresh patterns were wasteful, and capacity allocation did not match the real workloads.
Analyzed CU usage hands-on, combining AI-supported diagnostics with manual tuning. Removed wasteful refresh patterns, spread queries better across capacity, and right-sized allocation to the actual workload.
CU usage came down 25% while performance held, and in several models improved.
Too much of the work depended on too few people. Analysts were missing semantic modeling depth, DAX fluency, and experience with AI-assisted development.
Set up ongoing mentoring covering semantic modeling, DAX optimization patterns, and AI-assisted report development. Wrote documentation and training materials, and ran hands-on workshops matched to each analyst's level and responsibilities.
The analysts carry this work themselves now. The single points of failure are gone.