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
You’ve got years of SSIS packages and SQL ETL jobs running on-prem, and now leadership wants “everything in Microsoft Fabric”. This guide gives you a concrete, step-by-step migration blueprint from traditional SSIS/SQL ETL into Fabric, with enough detail that you can plan, pilot, and de-risk the move instead of just “lifting and praying”.
If you want to go beyond the basics and build real Fabric data engineering skills, a structured path like a focused Fabric data engineering track can accelerate this transition, but let’s start with a practical blueprint you can apply immediately.
You already know the marketing slides. Let’s focus on what changes in day-to-day work when moving from SSIS/SQL Agent to Microsoft Fabric.
Traditional stack:
Fabric stack:
Keep these differences in mind; they drive many of the decisions in the migration blueprint below.
Before you touch Fabric, you need to know what you’re migrating. Otherwise you’ll miss dependencies and break downstream reports.
Capture at least the following for each existing process:
If you’re using SSIS, generate a list from:
Example query to list SSIS packages from SSISDB:
SELECT
f.folder_name,
p.project_name,
pkg.package_name,
pkg.description
FROM catalog.packages pkg
JOIN catalog.projects p
ON pkg.project_id = p.project_id
JOIN catalog.folders f
ON p.folder_id = f.folder_id
ORDER BY
f.folder_name,
p.project_name,
pkg.package_name;
Group each ETL process into patterns. Common ones:
This classification will drive which Fabric tool you choose (Dataflow, Pipeline, Notebook, Warehouse) for each process.
Now translate old patterns into Fabric-native equivalents.
File-to-table loads
Incremental SQL loads
Example incremental load in a Fabric Warehouse:
MERGE INTO dbo.FactSales AS tgt
USING dbo.StgSales AS src
ON tgt.SalesKey = src.SalesKey
WHEN MATCHED THEN
UPDATE SET
tgt.Amount = src.Amount,
tgt.ModifiedDate = src.ModifiedDate
WHEN NOT MATCHED BY TARGET THEN
INSERT (SalesKey, CustomerKey, Amount, CreatedDate)
VALUES (src.SalesKey, src.CustomerKey, src.Amount, src.CreatedDate);
Complex transformations / heavy joins
Example Spark transformation in a Fabric Notebook:
from pyspark.sql.functions import col, current_timestamp
sales = spark.read.table("lakehouse_raw.Sales")
customers = spark.read.table("lakehouse_raw.Customers")
fact_sales = (
sales.alias("s")
.join(customers.alias("c"), col("s.CustomerId") == col("c.CustomerId"), "left")
.select(
col("s.SalesId").alias("SalesKey"),
col("c.CustomerKey"),
col("s.Amount"),
current_timestamp().alias("LoadDate")
)
)
fact_sales.write.mode("overwrite").saveAsTable("lakehouse_curated.FactSales")
Orchestration-only jobs
Metadata-driven frameworks
A practical rule-of-thumb:
In many migrations, you’ll end up with:
Before rewriting anything, sketch the target architecture.
Use a layered approach, even if you never call it “medallion”:
Each layer can be:
Typical Fabric workspace strategy:
Use deployment pipelines to move Lakehouses, Warehouses, and pipelines through environments instead of manual export/import.
Don’t start with your biggest, ugliest SSIS project. Pick a small but representative process.
Look for:
Create Lakehouse/Warehouse
Build ingestion
Transform
Orchestrate
Schedule
Validate
Example Fabric Warehouse stored procedure for a simple dimension load:
CREATE PROCEDURE dbo.LoadDimCustomer
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO dbo.DimCustomer AS tgt
USING dbo.StgCustomer AS src
ON tgt.CustomerKey = src.CustomerKey
WHEN MATCHED THEN
UPDATE SET
tgt.CustomerName = src.CustomerName,
tgt.CustomerType = src.CustomerType,
tgt.ModifiedDate = src.ModifiedDate
WHEN NOT MATCHED BY TARGET THEN
INSERT (CustomerKey, CustomerName, CustomerType, CreatedDate)
VALUES (src.CustomerKey, src.CustomerName, src.CustomerType, src.CreatedDate);
END;
Then call this procedure from a Fabric pipeline activity.
You will run SSIS and Fabric side by side for a while. Plan for that.
Before you decommission an SSIS package:
Only then disable the SQL Agent job or SSIS package.
Fabric gives you more flexibility, but that also means more to govern.
Even without exact numbers, you can:
Problem:
Fix:
Problem:
Fix:
Problem:
Fix:
Example row count comparison (run in old SQL and Fabric Warehouse respectively):
SELECT COUNT(*) AS RowCount FROM dbo.FactSales;
Store these counts and track them across runs.
Don’t start by “migrating everything to Fabric”. Instead:
Once that pilot is stable and monitored, you’ll have a reusable pattern for the rest of your SSIS estate. Repeat the pattern, not the panic.
Microsoft Fabric
New
Next Batches Now Live
Power BI
SQL
Power Apps
Power Automate
Microsoft Fabrics
Azure Data Engineering