"Reading about Fabric is understanding. Building with Fabric is confidence. After this guide, you will have done both."
What You Will Build
CSV file (sales data)
↓
Upload to OneLake (Fabric Lakehouse Files section)
↓
Dataflow Gen2 — clean and load to Delta table
↓
Delta table in Lakehouse (SQL Analytics Endpoint)
↓
Power BI report via Direct Lake (no refresh needed)
Time to complete: approximately 45-60 minutes.
What you need before starting
- ✅ Microsoft 365 work or school account (personal accounts have limitations)
- ✅ Microsoft Fabric free trial — sign up at app.fabric.microsoft.com
- ✅ OneDrive configured (required for file uploads in Fabric trial)
- ✅ The sample CSV file — download link and structure below
Phase 1 — Set Up Your Fabric Environment
Step 1: Start the Fabric free trial
- Go to app.fabric.microsoft.com
- Sign in with your Microsoft 365 work account
- If prompted, click "Start trial" or "Try Microsoft Fabric free"
- Accept the trial terms — no credit card needed
- Wait for trial activation (usually instant, sometimes 2-3 minutes)
Step 2: Create a Fabric Workspace
- In the left sidebar, click Workspaces (grid icon)
- Click "+ New workspace"
- Name: ModernDataPlatformDemo
- Under Advanced, set License mode to Trial (or Fabric capacity if you have one)
- Click Apply
Step 3: Create a Lakehouse
- Inside your workspace, click "+ New item"
- Under Data Engineering, select "Lakehouse"
- Name: SalesLakehouse
- Click Create
- The Lakehouse opens — you see two sections: Tables (Delta tables) and Files (raw files)
Phase 2 — Prepare and Upload Sample Data
Step 4: Create the sample CSV file
Open Notepad (or any text editor) and paste this data. Save as sales-data.csv:
OrderID,OrderDate,Region,Product,Category,Quantity,UnitPrice,CustomerID
1001,2024-01-05,North,Laptop Pro,Electronics,2,45000,C101
1002,2024-01-06,South,Office Chair,Furniture,5,8500,C102
1003,2024-01-07,East,Laptop Pro,Electronics,1,45000,C103
1004,2024-01-08,West,Standing Desk,Furniture,2,15000,C104
1005,2024-01-09,North,Wireless Mouse,Electronics,10,1200,C105
1006,2024-01-10,South,Laptop Pro,Electronics,3,45000,C101
1007,2024-01-11,East,Office Chair,Furniture,4,8500,C106
1008,2024-01-12,West,Monitor 27",Electronics,6,22000,C107
1009,2024-01-13,North,Wireless Mouse,Electronics,15,1200,C108
1010,2024-01-14,South,Standing Desk,Furniture,1,15000,C109
1011,2024-01-15,East,Monitor 27",Electronics,2,22000,C110
1012,2024-01-16,West,Laptop Pro,Electronics,4,45000,C111
1013,2024-01-17,North,Office Chair,Furniture,3,8500,C112
1014,2024-01-18,South,Wireless Mouse,Electronics,20,1200,C113
1015,2024-01-19,East,Standing Desk,Furniture,2,15000,C114
Step 5: Upload CSV to OneLake Files
- In your SalesLakehouse, find the Files section in the left explorer
- Click the … (more options) next to Files
- Select "New subfolder" → name it raw-sales
- Click … next to raw-sales → Upload → Upload files
- Select your sales-data.csv file → click Upload
- You should see sales-data.csv appear inside raw-sales folder
Phase 3 — Transform Data with Dataflow Gen2
Step 6: Create a Dataflow Gen2
- Go back to your workspace (click workspace name in breadcrumb)
- Click "+ New item"
- Under Data Factory, select "Dataflow Gen2"
- Name: TransformSalesData
- The Power Query editor opens
Step 7: Connect to your CSV file in OneLake
- In Power Query, click "Get data"
- Search for "Lakehouse" and select Microsoft Fabric Lakehouse
- Select your SalesLakehouse
- Navigate to Files → raw-sales → select sales-data.csv
- Click Connect
- A preview of your CSV data appears — 15 rows, 8 columns
Step 8: Apply transformations
Apply these transformations — each click is recorded as an Applied Step:
- Set column types: Select OrderDate column → click Data Type → Date
- Set column types: Select Quantity, UnitPrice columns → Data Type → Whole Number / Decimal
- Add calculated column: Click Add Column → Custom Column
- Name: TotalRevenue
- Formula:
[Quantity] * [UnitPrice] - Click OK
- Rename query: Right-click the query name (left panel) → Rename → SalesData
Step 9: Set destination to Lakehouse Delta table
- In the lower-right corner, find Data destination
- Click "+ Add data destination" → select Lakehouse
- Select your SalesLakehouse
- Under destination table, select New table
- Table name: SalesData
- Update method: Replace (for this demo)
- Click Save settings
Step 10: Publish and run the Dataflow
- Click "Publish" in the top right
- Go back to your workspace — you see TransformSalesData with a loading spinner
- Wait 2-3 minutes for the Dataflow to run
- When complete, the spinner disappears and Last refresh shows the time
- Open SalesLakehouse — under Tables you now see SalesData Delta table
Phase 4 — Connect Power BI via Direct Lake
Step 11: Create a semantic model from the Lakehouse
- In SalesLakehouse, switch to SQL analytics endpoint view (dropdown at top right)
- Click "New semantic model"
- Name: SalesDataModel
- Select the SalesData table checkbox
- Click Confirm
- The semantic model is created in Direct Lake mode — it reads live from OneLake
Step 12: Create a Power BI report
- The semantic model opens automatically
- Click "Open data model" to add measures if needed
- Or click "New report" directly
- The Power BI report canvas opens with SalesData in the Fields pane
Step 13: Build a simple sales dashboard
- Visual 1 — Total Revenue card:
- Insert → Card visual
- Drag TotalRevenue to Fields well
- This shows total revenue across all orders
- Visual 2 — Revenue by Region bar chart:
- Insert → Clustered bar chart
- Y-axis: Region
- X-axis: TotalRevenue (Sum)
- Visual 3 — Revenue by Category:
- Insert → Donut chart
- Legend: Category
- Values: TotalRevenue
- Click File → Save → name: Sales Dashboard
Phase 5 — Test the Live Pipeline
Step 14: Add new data and see it update
- Open your sales-data.csv and add 3 new rows at the bottom:
1016,2024-01-20,North,Laptop Pro,Electronics,2,45000,C115 1017,2024-01-21,South,Monitor 27",Electronics,3,22000,C116 1018,2024-01-22,East,Wireless Mouse,Electronics,25,1200,C117 - Save the CSV
- Upload the updated file to OneLake (same location, replace existing)
- Go to TransformSalesData Dataflow → click Refresh now
- Wait for refresh to complete
- Open your Sales Dashboard report — TotalRevenue card updates automatically
You have just seen the complete pipeline working end-to-end: new data in CSV → OneLake → Delta table → Power BI report updated via Direct Lake. No manual steps. No import refresh scheduled. The pipeline is the architecture in action.
Troubleshooting — Common Issues
- Dataflow fails with "capacity exceeded" — Free trial capacity has limits. Wait 5-10 minutes and retry. If persistent, reduce table size or upgrade capacity.
- "Table not found" when creating semantic model — Ensure Dataflow published successfully and the Delta table appears under Tables in the Lakehouse before creating the semantic model.
- Power BI shows Import mode instead of Direct Lake — Check that you created the semantic model from the Lakehouse SQL Analytics Endpoint, not from Power BI Desktop. Desktop connections use Import or DirectQuery. Direct Lake requires creating the model inside Fabric.
- CSV upload fails — Ensure OneDrive is configured on your account. Fabric trial uses OneDrive as the underlying upload mechanism. Sign in to onedrive.com once to activate it.
- Dataflow cannot find CSV after upload — In Dataflow Get data, navigate using the Lakehouse connector, not the file path. The file path in Dataflow must use the OneLake path, not a local path.
🎯 Series Final Quiz
Q1: In this pipeline, why is Direct Lake faster than Import mode for Power BI?
Show Answer
Direct Lake reads Delta tables stored in OneLake directly — no data is copied into Power BI's in-memory engine. Import mode copies ALL data into Power BI's VertiPaq engine on each refresh, which is time-consuming and has dataset size limits. Direct Lake gets the freshness of DirectQuery (live data) with performance close to Import (columnar Delta format is optimised for analytics).
Q2: If you add a new column to the CSV file, what steps are needed to see it in the Power BI report?
Show Answer
Three steps: (1) Update the Dataflow Gen2 to include the new column in the query (Add Column or verify it is included in the source), (2) Republish and refresh the Dataflow — this updates the Delta table schema, (3) In the semantic model, click Refresh to pick up the new column. The report then shows the new field in the Fields pane. This is schema evolution — Delta Lake handles it without recreating the table.
Q3: How does what you built here map to the Medallion architecture discussed in Post 4?
Show Answer
The CSV upload to OneLake Files = Bronze layer (raw, unprocessed). The Dataflow Gen2 transformation (adding TotalRevenue, setting types) writing to the Delta table = Silver/Gold layer (cleaned, business-ready). In a production system, you would add a Bronze Lakehouse (raw copy preserved), a Silver Lakehouse (cleaned, standardised), and a Gold Lakehouse (aggregated for reporting). This demo simplified to two steps for clarity.
Series Complete — What You Built and Learned
- Set up a Microsoft Fabric workspace with Lakehouse using the free trial — no Azure subscription needed
- Ingested CSV data to OneLake and transformed it with Dataflow Gen2 into a Delta table
- Connected Power BI via Direct Lake — live data, no refresh cycle, no data copy
- Tested the live pipeline end-to-end — updated source data, refreshed Dataflow, report updated automatically
- This is the foundation of every modern enterprise data platform — the same pattern scales from 15 rows to 15 billion rows