Unpopular opinion: Power BI reports will be replaced by Fabric Apps

And semantic models matter more than ever.

The last push for this post was when I saw Michael Tenner’s Fabric Apps at the Daten-WG Conference 2026. Michael built Fabric Apps for controlling and finance, each in about an hour, with clear IBCS-inspired standards instead of show effects, and he shared the code. I did a bit of modification on those apps: his Finance KPI Cockpit, PnL App and DWG GuV now run as one Finance Cockpit on one semantic model. Michael, thank you: the charts, the P&L visual and the notation are your work.

Michael’s post: https://datenwgknowledgekitchen.com/fabric-apps-controlling-post.html

Why Fabric Apps will replace Power BI reports

WhatPower BI reportFabric App (Finance Cockpit)
Filter breadcrumbFilters spread over slicers and the filter pane, no undo in reading viewThe whole view in one line, every filter removable with one click, undo and redo
Control paneSlicers on the canvas plus a separate filter paneOne collapsible pane for all slicers and settings
Slicers and bar selectionsA bar click cross-filters, but the slicer does not show itOne selection: click a bar and its slicer box is ticked, and the other way round
Mobile layoutA second mobile layout to build per pageThe same app reflows to the phone automatically
SpeedVisuals query the model on every interactionData loads once, computed in the browser; instant reload from a per-user cache
Colour visionColours fixed in the report, the same for every userPer user: IBCS green and red, or blue and red, stored in a table, on every chart
WritebackOnly with add-ons such as a Power Apps visual or task flowsComments, audited forecast adjustments and monthly sign-off in the app’s own database
Excel round-tripExport to Excel, no way backDownload the open forecast months, edit in Excel, upload, review the differences, save
Story mode and time travelBookmarks, built by handA month-end story computed from the data, a month scrubber that animates every tile
Ask whyCopilot summarises what the page showsA Fabric Data Agent explains the variance with the exact figures of the current view
PowerPoint and PDFExport of pictures or live slidesNative, editable slides and a clean print layout in one click
Links and viewsBookmarks and URL filtersEvery state in the link, saved private and shared views, command palette (Ctrl+K)
VideosExternal links or web contentExplainer clips from OneLake, right next to the numbers
The action after the insightReading ends at “now someone should act”An order, an email or a ticket from the row, through a Fabric function
Repeatable use casesA page you readA month-end workflow you run every month: story, sign-off, Excel round-trip, PowerPoint
Safe by designYes, in the Power BI serviceAlso yes: an item in your Fabric workspace, unlike AI-generated dashboards hosted elsewhere

Unpopular opinion: Power BI reports will be replaced, and semantic models matter more than ever

Lots of people, me included, earn their living with Power BI reports, so this is not an easy sentence to write. But I believe the visual side, the report canvas, will be replaced as the default front end by Fabric Apps, aka “modern reports”, aka “Rayfin Apps”. Not overnight and not for every use case, but first for the applications people work in every day, like this finance cockpit. What is not replaced is the model underneath. Look at what stays the same in this app: the semantic model, its tables, measures, relationships and security. The Fabric App queries the very same model through the Execute Queries API. Next to it in the same workspace runs Michael’s Power BI report on the same model, unchanged.

The Finance Cockpit: KPI cards, integrated variance chart, structure by country, all from the semantic model

What changes is only the canvas. And a canvas that is a real web app can do things a report page cannot. So the effort moves: less time in report pages, more time in the model. The better your semantic model, the more a front end like this gives you. A messy model stays messy in any front end.

The details

Filter breadcrumb

Every view state sits in one line under the header: page, period, comparison, plan and forecast version, selected KPI and every filter. Filters are chips you remove with one click, and “Rückgängig” goes back step by step. The URL always holds the exact view, so a link opens what you see.

Breadcrumb with three market filters, undo, redo and the link button

One collapsible control pane

All slicers and settings live in one pane on the right. It collapses to a slim rail with the F key, and the content uses the space. In Power BI the slicer panel and the filter pane compete for the same edge of the page.

Pane collapsed to a rail, blue and red variance colours for colour-vision deficiency

Slicers and bar selections stay in sync

In a Power BI report, clicking a bar and ticking a slicer are two different things. A bar selection cross-filters the page but the slicer does not show it, the slicer does not know about the click, and the selection is gone when you switch pages. In the Finance Cockpit there is only one selection. Click Germany in “Umsatz nach Land” and the Germany box in the pane is ticked, EMEA shows as partly selected, a Germany chip appears in the breadcrumb and every tile recalculates. Tick a box in the pane and the bar is highlighted. Click a month in the time chart and the period slicer jumps to that month. Because the selection lives in the link, it also survives a page change, undo and a shared link.

A country bar clicked: the same country ticked in the pane and shown in the breadcrumb

Automatic, nice mobile layout

The same app reflows on a phone: KPI cards stack, the page tabs shorten, the breadcrumb wraps, and the control pane becomes a drawer. Nobody built a separate mobile layout.

Phone layout and the control pane as a drawer
The control pane as a drawer on the phone

Speed and caching

Two or three DAX queries load the data on a fine grain, and the app computes every KPI, filter and comparison in the browser, so interaction has no waiting time. On top of that, every result is cached per signed-in user in the browser. In the deployed app, a reload showed all 7 queries from the cache after 84 milliseconds, while the reconciliation with the semantic model (57,072 rows) ran in the background for 6.4 seconds. A badge shows exactly that. If a refresh fails, the badge says so instead of silently showing old numbers.

Colour vision per user

IBCS uses green for favourable and red for unfavourable variances. About one in twelve men cannot tell them apart well. In the Finance Cockpit every user picks the palette once (IBCS green and red, blue and red, or Michael’s Kitchen teal); the choice is stored per user in the app database and follows them to every device. It applies to every chart, including Michael’s original P&L visual.

Writeback

The app has its own SQL database in Fabric:

  • Comments on a KPI variance or a P&L line in a month, visible to the team.
  • Forecast adjustments per account and open month. Nothing is ever overwritten: every change is a new row with who, when, old and new value. The P&L, the bridge and the KPI strip recalculate at once.
  • Monthly sign-off: reviewed, approved, reopened, with history.
  • Saved views: private, or shared with the team.

Honest note: the adjustments live in the app database, so Michael’s Power BI report does not see them unless you model them in.

Excel round-trip

Finance people plan in Excel, and that is fine. The app hands out a real Excel file with the open forecast months of one P&L block, editable cells marked yellow. You upload it again, the app shows exactly which cells changed and by how much, and only then saves the changes as audited adjustments.

Story mode and time travel

One click starts a month-end story computed from the data: the overview against plan, the month with the largest variance, the market that contributes least, the profit bridge, the P&L, the sign-off. Every step is its own link. The time-travel bar moves every tile month by month.

Story mode, step 2: the month with the largest plan variance

Ask why

The “Warum?” button asks a Fabric Data Agent on the same semantic model why the current KPI differs from plan. My first version let the agent calculate everything itself, and it confused actuals with deltas (“+117.7 million above plan”). The fix is a good rule for every AI feature on top of a model: the app calculates, the agent explains. The app now hands over the exact totals and the largest contributors by country and product, computed from the same data the tiles show. The answer, after about 50 seconds: revenue 117.7 million euros, +17.2 million above budget PL1, driven by Germany (+2.0), the USA (+1.8) and China (+1.6), and by Smartphone X and Laptop Pro, plus what to check next. The agent runs through a server-side function with the identity of the app owner, so it is meant for models without row-level security.

One notation on every page

On the GuV page one switch shows either the app’s own P&L table, with simulation and forecast adjustments, or Michael’s original P&L visual, rendered with its own code and with its own statement and tree views. Bars always run plan, previous year, actual, forecast. AC solid dark, PY grey, PL outlined, FC hatched, on every page. Colour carries meaning only: green and red mark variances, everything else is ink and grey. Dark mode is one click.

GuV & Simulation with forecast months hatched
Michael's original P&L visual inside the GuV page, behind the Tabelle or Original-Visual switch
Dark mode

Videos next to the numbers

Explainer videos live in OneLake and play inside the app, streamed in chunks through a Fabric function: Michael’s 89-second walkthrough of his original apps and two short clips generated with Sora. A finance app can carry its own training material, right next to the figures it explains.

The video gallery: Michael's walkthrough and two generated clips, played from OneLake

Safe by design, directly in Fabric

The app is built with Rayfin as an item in your Fabric workspace, next to the semantic model, the app’s SQL database and OneLake. Sign-in runs through Microsoft Entra ID, the app’s files are protected and there are no passwords, the semantic-model queries run with the signed-in user’s identity, and the data stays in Fabric. Compare that with AI-generated dashboards hosted somewhere else: data exported as files, keys in the browser, no or a shared sign-in, and nobody in IT knows they exist. One note: the app’s functions run with the app owner’s identity, so do not point them at confidential models with row-level security.

And that is only the start

Everything above I built in a few days on top of Michael’s apps. And there is so much more: lots of other cool advantages I have not even touched yet. The possibilities are practically endless, because a Fabric App is a real web app on top of your semantic model:

  • Act on the insight: place an order in an external system, send an email to the account owner, open a ticket, all from the row with the variance, through a Fabric function.
  • Workflows: approvals with several steps, reminders for missing comments, month-end checklists.
  • Data entry that belongs to the model: planning inputs, master data corrections, targets per team.
  • Anything the web offers: maps, custom visuals, video, chat with an agent, offline views for the road.

Reports answer “what happened”. Apps also do “what happens next”, and they are made for the use cases you repeat every week and every month.

How it was built

The demo data was recreated from the Power Query code of Michael’s import models, calibrated to his published figures, and loaded from OneLake. The model, Michael’s report and the app were deployed with the Rayfin CLI to a demo workspace. Every increment went through an independent review before it was deployed.

Notation inspired by IBCS. IBCS® is a registered trademark of the IBCS Institute. All data is demo data.

Leave a Reply