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
This guide shows how to take the Power Query logic you already have in Excel and move it into Microsoft Fabric Dataflows Gen2 without breaking your reports. You’ll get a concrete migration path, typical pitfalls, and patterns for reusing your M code at scale.
If you want to go deeper into end‑to‑end pipelines, Fabric workspaces, and Lakehouse patterns, a structured path like this Fabric-focused data engineering training can help you move beyond ad‑hoc experiments.
You’re probably here because at least one of these is true:
Dataflows Gen2 in Microsoft Fabric give you:
The good news: your Power Query knowledge transfers almost 1:1. The migration work is mostly about rewiring where queries live and where they output.
Don’t move a mess. Before touching Fabric, stabilise what you have in Excel.
Open your main Excel file and in the Power Query Editor:
Create a simple table like:
| Query Name | Type | Source | Depends On | Loads To |
|---|---|---|---|---|
| f_SalesRaw | Staging | SQL Server | – | No |
| d_Calendar | Dimension | M Generated | – | No |
| Sales_Clean | Fact | f_SalesRaw | f_SalesRaw | Sheet |
| Sales_ReportView | Presentation | Sales_Clean | Sales_Clean | Sheet |
This becomes your migration map.
You don’t want 200-line monolithic queries in Fabric.
Refactor:
f_SalesRaw – just connects and basic type cleanup.Sales_Transform – filters, derived columns, business rules.Example: turn a repeated date floor into a function.
// In Excel Power Query
let
fnStartOfWeek = (InputDate as date, OptionalFirstDayOfWeek as nullable number) as date =>
let
FirstDay = if OptionalFirstDayOfWeek = null then Day.Monday else OptionalFirstDayOfWeek,
Result = Date.StartOfWeek(InputDate, FirstDay)
in
Result
in
fnStartOfWeek
You’ll reuse this function in Fabric almost unchanged.
Dataflows Gen2 don’t know about:
Excel.CurrentWorkbook()Replace these patterns with:
SharePoint.Files or SharePoint.Contents.Example conversion:
// BEFORE (Excel-only)
Source = Excel.CurrentWorkbook(){[Name="Sales"]}[Content]
// AFTER (Fabric-friendly, pointing to SharePoint folder)
Source = SharePoint.Files("https://contoso.sharepoint.com/sites/Finance", [ApiVersion = 15]),
Filtered = Table.SelectRows(Source, each [Folder Path] = "https://contoso.sharepoint.com/sites/Finance/Shared Documents/Data/" and [Name] = "Sales.xlsx"),
File = Filtered{0}[Content],
Excel = Excel.Workbook(File, null, true),
Sales = Excel{[Item="Sales", Kind="Table"]}[Data]
Before migrating, decide what the output of your dataflows should be.
Common patterns:
Direct to Lakehouse (recommended)
Direct to Warehouse
Hybrid
For most Excel migrations, a single Lakehouse with curated tables is a solid starting point.
Decide naming conventions:
lh_FinanceAnalyticsstg_ for raw/stagingdim_ for dimensionsfact_ for factsLet’s walk through migrating a typical fact table query.
In your Fabric workspace:
In Excel Power Query:
Sales_Transform).In Dataflows Gen2:
Typical fixes:
Excel.CurrentWorkbook() with SharePoint or Lakehouse sources.Once the query works:
lh_FinanceAnalytics).fact_Sales.Save and Refresh now to materialise the table.
Excel usually refreshes all rows every time. Fabric gives you incremental patterns with parameters.
Suppose your Excel query filters to last 2 years:
// Excel logic
FilteredRows = Table.SelectRows(Source, each [OrderDate] >= Date.AddYears(Date.From(DateTime.LocalNow()), -2))
In Fabric, you may want:
OrderDate.Steps:
RangeStart (type datetime).RangeEnd (type datetime).FilteredRows = Table.SelectRows(Source, each [OrderDate] >= RangeStart and [OrderDate] < RangeEnd)
Then, in Dataflows Gen2 Incremental refresh settings:
OrderDate as the partition column.If you have different servers for DEV/TEST/PROD, parameterise the connection string.
// Parameter: Environment = "DEV" or "PROD"
ServerName = if Environment = "DEV" then "sql-dev.contoso.local" else "sql-prod.contoso.local",
Source = Sql.Database(ServerName, "SalesDB")
This makes it easy to clone the dataflow across workspaces.
Once data is in Fabric, you have two main options.
dim_ and fact_ tables.Example measure:
Total Sales := SUM ( fact_Sales[SalesAmount] )
Sales LY :=
CALCULATE (
[Total Sales],
DATEADD ( dim_Date[Date], -1, YEAR )
)
YoY % :=
DIVIDE ( [Total Sales] - [Sales LY], [Sales LY] )
If you must keep Excel as the primary reporting surface:
The key shift: no more Power Query in the report workbook. Excel becomes a thin client on top of curated Fabric data.
Fabric will happily infer different types if you’re not explicit.
Table.TransformColumnTypes.ChangedTypes = Table.TransformColumnTypes(Source,
{
{"OrderDate", type date},
{"OrderID", Int64.Type},
{"SalesAmount", type number}
}
)
This keeps your model stable across refreshes.
If your Excel files were using a specific locale (e.g., comma decimal separator), Dataflows might interpret them differently.
Culture arguments where available, e.g.:NumberFromText = Number.FromText("1,23", "ro-RO")
In Excel, load order is often implicit. In Fabric:
f_SalesRaw) are not mapped to output tables unless you need them.Excel often connects with your user credentials. In Fabric:
Don’t assume that “it works on my laptop” will translate directly.
If you’re doing this for a department, not just one workbook, use a simple phased plan.
Don’t try to “lift and shift” an entire Excel solution in one go. Pick a single, well-understood Power Query (usually your main fact table), move it into a Dataflow Gen2, land it in a Lakehouse table, and point a simple report at it. Once that path is working end to end, cloning the pattern for the rest of your queries becomes a repeatable, low-risk routine instead of a scary migration project.
Microsoft Fabric
New
Next Batches Now Live
Power BI
SQL
Power Apps
Power Automate
Microsoft Fabrics
Azure Data Engineering