Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Python | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Python | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA | Python |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA | Python
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Databricks | Power Apps | Power Automate |
Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables | Power Apps | Power Automate
Power BI | Power Apps | Power Automate | SQL | VBA | Python | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables
Power BI | Power Apps | Power Automate | SQL | VBA | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
LEARN THIS HANDS ON
Microsoft Fabric & Power BI
Your main sales dashboard is now taking 90 seconds to refresh, PBIXs are over 1 GB, and every new metric means another copy of the same table in a different report. Meanwhile, the data team is pushing for “everything in Fabric Lakehouse” and your analysts just want the visuals to load.
This article shows a practical way to decide what should stay inside PBIX and what should move into a Lakehouse, using one realistic scenario and concrete patterns you can reuse across your workspace in 2026.
Imagine a mid-sized sales analytics team:
Pain points:
The organization has started a Microsoft Fabric rollout. A Lakehouse is available, but only a few models use it. The big question: Power BI vs Microsoft Fabric – how do we decide what stays in PBIX and what moves to Lakehouse in 2026?
We’ll walk through this team’s transition and extract a decision framework you can apply to your own environment.
Before moving anything to Lakehouse, you need a clear picture of what’s inside your PBIXs.
For the sales team, the lead analyst does a quick inventory:
Data sources per PBIX
Transformations inside PBIX
Measures and business logic
Refresh and performance
You can automate some of this with the Power BI REST API or just document the top 5–10 critical PBIXs.
The key output of this step is a simple matrix for each PBIX:
This matrix drives the next decisions.
In Fabric, you should separate three concerns:
A practical rule of thumb for 2026:
Lakehouse holds:
Power BI semantic models hold:
PBIX files should focus on:
For our sales team, this means:
When deciding Power BI vs Microsoft Fabric, some patterns are clear candidates for Lakehouse.
Move to Lakehouse when:
Example in our scenario:
FactSales (5 years of data)FactOrdersFactDiscountsThese become Lakehouse tables, loaded via pipelines or notebooks.
-- Lakehouse SQL view for curated sales
CREATE VIEW vw_FactSales_Curated AS
SELECT
s.SalesID,
s.OrderDate,
s.CustomerID,
s.ProductID,
s.RegionID,
s.Quantity,
s.NetAmount,
s.DiscountAmount
FROM
lh_raw.FactSales s
WHERE
s.OrderDate >= DATEADD(year, -5, GETDATE());
Move to Lakehouse when:
For the sales team:
DimCustomer with unified segmentsDimProduct with consistent product groupsDimCalendar with fiscal periodsThese sit in the Lakehouse and are surfaced through the central semantic model.
Move to Lakehouse when:
Example: converting raw CRM exports into a clean customer dimension.
# Fabric notebook snippet for customer cleanup
from pyspark.sql.functions import trim, upper, col
raw = spark.read.table("lh_raw.crm_customers")
clean = (raw
.withColumn("CustomerName", trim(col("CustomerName")))
.withColumn("CustomerCode", upper(trim(col("CustomerCode"))))
.dropDuplicates(["CustomerCode"]))
clean.write.mode("overwrite").saveAsTable("lh_curated.DimCustomer")
Once this runs in Fabric, PBIX just consumes DimCustomer from the semantic model.
Not everything needs to move. Some logic is easier and safer to keep in PBIX, especially while your Fabric rollout is still maturing.
Keep in PBIX when:
Example: a custom KPI for one executive view.
Exec Focus Score =
VAR MarginScore = DIVIDE([Total Margin], [Total Sales])
VAR GrowthScore = DIVIDE([Sales YoY], [Total Sales LY])
RETURN
(MarginScore * 0.6) + (GrowthScore * 0.4)
If only the executive dashboard uses this, it can live in that PBIX.
Keep in PBIX when:
Example: a custom ordering table for a slicer.
Slicer Order =
DATATABLE(
"Label", STRING,
"SortOrder", INTEGER,
{
{"Today", 1},
{"Last 7 Days", 2},
{"Last 30 Days", 3},
{"FYTD", 4}
}
)
This is harmless inside PBIX and doesn’t belong in Lakehouse.
Keep in PBIX when:
Once the business signs off, move the logic into the central semantic model or Lakehouse transformations.
For our sales team, the real change is not just Lakehouse storage, but a central semantic model that multiple reports share.
Design principles:
Single source of truth for measures
Shared relationships and RLS
Thin PBIX files
Example of core measures in the central model:
Total Sales = SUM(FactSales[NetAmount])
Total Margin = SUM(FactSales[NetAmount]) - SUM(FactSales[CostAmount])
Sales YoY =
CALCULATE(
[Total Sales],
DATEADD(DimCalendar[Date], -1, YEAR)
)
Sales YoY % =
DIVIDE([Total Sales] - [Sales YoY], [Sales YoY])
All downstream PBIX reports reuse these measures. No more copy-paste DAX between files.
Here’s a simple checklist you can apply to each component in your current PBIXs.
For the sales team, applying this framework leads to:
Result: refresh times drop, duplication decreases, and onboarding new analysts becomes easier.
Moving from PBIX-centric to Lakehouse-centric can be done gradually.
For the sales team, they use a phased approach:
Clone, don’t overwrite (initially)
Parallel refresh for a short period
Measure-by-measure migration
Freeze local transformations once migrated
Document patterns and naming
This reduces risk and lets the team keep delivering reports while modernizing their stack.
Don’t try to refactor every PBIX at once. Pick one high-impact report and turn it into a thin report that uses a Lakehouse-backed semantic model.
For that report:
Once that pilot works, you’ll have a clear, tested pattern for deciding what stays in PBIX and what moves to Lakehouse across the rest of your workspace in 2026.
Editor's Note
This article reflects how teams with growing Power BI estates are rebalancing logic between PBIX files, shared semantic models, and Fabric Lakehouses, especially in environments where performance, governance, and reuse across multiple reports are becoming critical.
Insights compiled through ongoing industry research, discussions within the Excelgoodies Analytics Community, and the hands-on project work in the Microsoft Fabric & Power BI (https://www.excelgoodies.ro/microsoft-fabric-power-bi-training-romania) programme.
Microsoft Fabric
New
Next Batches Now Live
Power BI
SQL
Power Apps
Power Automate
Microsoft Fabrics
Azure Data Engineering