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
If you’re already comfortable with Power Query in Excel, moving your transformations into Microsoft Fabric dataflows is the natural next step. This guide walks through how to migrate, what changes, and how to avoid the most common pitfalls when you lift your M code from a workbook into a scalable Fabric setup using Lakehouse and Power BI.
If you want to go beyond ad‑hoc migrations and design proper, reusable pipelines, it’s worth investing in more structured Fabric-focused data engineering skills so you can design your dataflows with the full platform in mind.
You don’t move to Fabric dataflows just because it’s new; you move because your current Excel setup is hitting limits.
Typical signs it’s time to migrate:
Fabric dataflows help by:
If you already know Power Query, the migration is more about architecture and patterns than learning a new language.
Before you migrate, align on what changes when you leave Excel.
Excel Power Query
Fabric dataflows
This means:
Most M functions are the same, but there are differences around:
Don’t just copy M code and hope for the best. Use this checklist on your existing Excel queries.
For each workbook:
Group queries into:
In Fabric, staging and business logic are good candidates for shared dataflows. Presentation logic often stays closer to the report (Power BI model).
Look for:
Excel.CurrentWorkbook() or Excel.Workbook(File.Contents(...)) pointing to local files.C:\Users\....These need to be replaced with:
Let’s walk through a concrete example: an Excel Power Query that imports CSV sales data from a local folder, cleans it, and loads it into a table.
let
Source = Folder.Files("C:\Data\Sales"),
Filtered = Table.SelectRows(Source, each [Extension] = ".csv"),
AddedContent = Table.AddColumn(Filtered, "Data", each Csv.Document(File.Contents([Folder Path] & [Name]),
[Delimiter = ",", Columns = 6, Encoding = 65001, QuoteStyle = QuoteStyle.Csv])),
Expanded = Table.ExpandTableColumn(AddedContent, "Data", {"Date","Region","Product","Qty","Price","Salesperson"}),
ChangedTypes = Table.TransformColumnTypes(Expanded,
{{"Date", type date}, {"Qty", Int64.Type}, {"Price", type number}}),
AddedAmount = Table.AddColumn(ChangedTypes, "Amount", each [Qty] * [Price], type number)
in
AddedAmount
We’ll:
Sales.CleanedSales.Assume you upload your CSVs to a SharePoint document library.
let
Source = SharePoint.Files("https://contoso.sharepoint.com/sites/Sales", [ApiVersion = 15]),
FilteredFolder = Table.SelectRows(Source, each Text.StartsWith([Folder Path], "/sites/Sales/Shared Documents/Sales/")),
FilteredCsv = Table.SelectRows(FilteredFolder, each [Extension] = ".csv"),
AddedContent = Table.AddColumn(FilteredCsv, "Data", each Csv.Document([Content],
[Delimiter = ",", Columns = 6, Encoding = 65001, QuoteStyle = QuoteStyle.Csv])),
Expanded = Table.ExpandTableColumn(AddedContent, "Data", {"Date","Region","Product","Qty","Price","Salesperson"}),
ChangedTypes = Table.TransformColumnTypes(Expanded,
{{"Date", type date}, {"Qty", Int64.Type}, {"Price", type number}}),
AddedAmount = Table.AddColumn(ChangedTypes, "Amount", each [Qty] * [Price], type number)
in
AddedAmount
In Fabric dataflows, you’ll define the output entity to write to a Lakehouse table. The M step is similar; the main difference is the data source and where the result lands.
To reuse existing logic:
In your Fabric workspace:
Once the dataflow works:
Now your former Excel-only transformation runs centrally, on a schedule, feeding a Lakehouse table.
Most Excel Power Query scripts work in Fabric with minor tweaks. Here are the patterns you’ll hit most often.
Excel-only:
let
Source = Excel.CurrentWorkbook(){[Name="Config"]}[Content]
in
Source
In Fabric, store configuration in a table or file instead. For example, a CSV in SharePoint:
let
Source = SharePoint.Files("https://contoso.sharepoint.com/sites/Config", [ApiVersion = 15]),
ConfigFile = Source{[Name="Config.csv"]}[Content],
ConfigTable = Csv.Document(ConfigFile, [Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.Csv])
in
ConfigTable
Replace:
File.Contents("C:\Data\Customers.xlsx")
With something like:
SharePoint.Files("https://contoso.sharepoint.com/sites/Data", [ApiVersion = 15])
And then filter to the file you need:
let
Source = SharePoint.Files("https://contoso.sharepoint.com/sites/Data", [ApiVersion = 15]),
CustomersFile = Source{[Name="Customers.xlsx"]}[Content],
Customers = Excel.Workbook(CustomersFile, null, true)
in
Customers
In Excel, some transformations are created via UI steps that rely on workbook context. In Fabric, prefer explicit M functions:
Table.TransformColumns instead of relying on implicit type detection.Table.Buffer carefully to control query folding (only when needed).Example of explicit type conversion (good for Fabric):
Table.TransformColumnTypes(MyTable,
{{"OrderDate", type date}, {"Amount", type number}})
Once you migrate a few queries, you’ll quickly see repeated patterns. Use Fabric dataflows as shared building blocks.
Instead of one giant dataflow per report, organize by data domain:
DF_Sales_StagingDF_Sales_BusinessLogicDF_Finance_StagingDF_MasterData_CustomersBenefits:
A simple layering approach:
Staging dataflows
Business dataflows
Semantic models (Power BI)
This mirrors what many analysts already do in Excel (raw sheets, cleaned sheets, pivot sheets), but with Fabric-native components.
Fabric dataflows are more comfortable with larger datasets than Excel, but you still need to design for refresh performance.
If your source supports query folding, you can implement incremental logic in the dataflow by filtering on date columns.
Example M pattern for incremental behavior:
let
// Assume RangeStart and RangeEnd are parameters
Source = Sql.Database("server", "db"),
Sales = Source{[Schema="dbo",Item="Sales"]}[Data],
Filtered = Table.SelectRows(Sales, each [OrderDate] >= RangeStart and [OrderDate] < RangeEnd)
in
Filtered
Even if you don’t configure full-blown incremental refresh policies, this pattern lets you control how much data you process per run.
General rule:
If you must do heavy logic, consider:
You don’t need a big-bang migration. Pick one Excel workbook that:
Then:
Once that one workbook is stable, repeat the pattern. Over time, you’ll move from fragile, file-based Power Query to a reusable Fabric dataflow layer that your entire analytics stack can rely on.
Microsoft Fabric
New
Next Batches Now Live
Power BI
SQL
Power Apps
Power Automate
Microsoft Fabrics
Azure Data Engineering