5 min read
Microsoft Fabric Licensing: Understanding Your Options
Understanding Microsoft Fabric licensing is essential for planning your deployment. Today, I will break down the licensing model, user requirements, and how Fabric licensing relates to existing Power BI and Azure licenses.
Fabric Licensing Model
Fabric uses a combination of:
- Capacity licenses: Compute resources (F SKUs or Power BI Premium)
- User licenses: Per-user access to Fabric features
┌─────────────────────────────────────────────────────┐
│ Fabric Licensing Model │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐│
│ │ Capacity License (F SKU) ││
│ │ Powers all workloads in workspaces ││
│ └─────────────────────────────────────────────────┘│
│ + │
│ ┌─────────────────────────────────────────────────┐│
│ │ User Licenses ││
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ││
│ │ │ Free │ │ Pro │ │ Premium │ ││
│ │ │ (View) │ │ (Create) │ │Per User │ ││
│ │ └──────────┘ └──────────┘ └──────────┘ ││
│ └─────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────┘
Capacity Licenses
Fabric Capacities (F SKUs)
# Fabric capacity SKUs and pricing (approximate monthly USD)
fabric_skus = {
"F2": {"cu": 2, "price": 262.80, "use_case": "Trial/Testing"},
"F4": {"cu": 4, "price": 525.60, "use_case": "Small workloads"},
"F8": {"cu": 8, "price": 1051.20, "use_case": "Small teams"},
"F16": {"cu": 16, "price": 2102.40, "use_case": "Department"},
"F32": {"cu": 32, "price": 4204.80, "use_case": "Department"},
"F64": {"cu": 64, "price": 4995.84, "use_case": "Enterprise"},
"F128": {"cu": 128, "price": 9991.68, "use_case": "Enterprise"},
"F256": {"cu": 256, "price": 19983.36, "use_case": "Large Enterprise"},
"F512": {"cu": 512, "price": 39966.72, "use_case": "Large Enterprise"},
"F1024":{"cu": 1024, "price": 79933.44, "use_case": "Very Large"},
"F2048":{"cu": 2048, "price": 159866.88,"use_case": "Massive Scale"}
}
Power BI Premium Capacities
Existing Power BI Premium (P SKUs) also support Fabric workloads:
# Power BI Premium mapping to Fabric
pbi_premium_mapping = {
"P1": {"fabric_equivalent": "F64", "cu": 64},
"P2": {"fabric_equivalent": "F128", "cu": 128},
"P3": {"fabric_equivalent": "F256", "cu": 256},
"P4": {"fabric_equivalent": "F512", "cu": 512},
"P5": {"fabric_equivalent": "F1024","cu": 1024}
}
# If you have P1, you can enable Fabric workloads
# No additional capacity purchase needed
User Licenses
Power BI Free
# Free user capabilities
free_license = {
"view_reports": True, # View in workspaces with Premium/Fabric capacity
"use_apps": True, # Consume published apps
"create_content": False, # Cannot create in Premium workspaces
"share_content": False, # Cannot share
"fabric_items": False # Cannot create Fabric items
}
Power BI Pro
# Pro user capabilities ($10/user/month)
pro_license = {
"view_reports": True,
"create_reports": True, # Create in Pro and Premium workspaces
"share_content": True, # Share with other Pro users
"fabric_items": True, # Create Fabric items in Fabric workspaces
"publish_apps": True,
"collaborate": True
}
# Required for:
# - Creating content in Fabric workspaces
# - Sharing content with others
# - Data engineering, data science tasks
Power BI Premium Per User (PPU)
# PPU capabilities ($20/user/month)
ppu_license = {
"all_pro_features": True,
"premium_features": True, # AI, paginated reports, deployment pipelines
"personal_capacity": True, # Each user gets Premium-level features
"large_models": True, # Larger semantic model limits
"fabric_items": True
}
# PPU is good for:
# - Small teams needing Premium features
# - Individual analysts with complex needs
# - Testing Premium features before org-wide deployment
Licensing Scenarios
Scenario 1: Small Team Starting with Fabric
# 10 data engineers and analysts
# Light workloads, learning Fabric
recommendation = {
"capacity": "F8", # $1,051/month
"user_licenses": "10x Pro", # $100/month
"total_monthly": 1151,
"notes": "Start small, scale up as needed"
}
Scenario 2: Enterprise Data Platform
# 50 content creators, 500 report consumers
# Heavy data engineering workloads
recommendation = {
"capacity": "F128", # $9,992/month
"creator_licenses": "50x Pro", # $500/month
"consumer_licenses": "500x Free", # $0 (Premium capacity)
"total_monthly": 10492,
"notes": "Free users can view on Premium capacity"
}
Scenario 3: Migration from Synapse + Power BI
# Existing:
# - Azure Synapse dedicated pool (DW1000c): ~$12,000/month
# - Power BI Premium P1: ~$5,000/month
# - Azure Data Factory: ~$1,000/month
# Total: ~$18,000/month
# Fabric alternative:
fabric_recommendation = {
"capacity": "F256", # $19,983/month (includes all workloads)
"comparison": {
"existing_total": 18000,
"fabric_total": 19983,
"difference": 1983,
"benefits": [
"Unified platform",
"Simplified management",
"OneLake (no separate storage costs)",
"No data movement between services",
"Single security model"
]
}
}
License Assignment
Via Microsoft 365 Admin Center
# PowerShell: Assign Power BI Pro licenses
Connect-MgGraph -Scopes "User.ReadWrite.All"
# Get license SKU
$sku = Get-MgSubscribedSku | Where-Object SkuPartNumber -eq "POWER_BI_PRO"
# Assign to user
Set-MgUserLicense -UserId "user@contoso.com" `
-AddLicenses @{SkuId = $sku.SkuId} `
-RemoveLicenses @()
Via Azure AD Group-Based Licensing
# Assign licenses via group membership
# 1. Create Azure AD group "Fabric-Pro-Users"
# 2. Assign Power BI Pro license to group
# 3. Add users to group - licenses assigned automatically
group_licensing = {
"group_name": "Fabric-Pro-Users",
"license_sku": "POWER_BI_PRO",
"auto_assignment": True,
"benefits": [
"Automatic license management",
"Easy onboarding/offboarding",
"Role-based assignment"
]
}
Trial Options
# Fabric trial options
trial_options = {
"individual_trial": {
"duration": "60 days",
"capacity": "F64 equivalent",
"requirements": "Power BI Pro or PPU license",
"activation": "Fabric portal > Account > Start trial"
},
"tenant_trial": {
"duration": "60 days",
"capacity": "F64",
"requirements": "Global admin or Fabric admin",
"activation": "Admin portal > Trials"
}
}
Monitoring License Usage
# Check user license assignments
# Via Microsoft 365 Admin Center or PowerShell
# Get all users with Power BI licenses
from msgraph import GraphServiceClient
async def get_pbi_licensed_users(client: GraphServiceClient):
users = await client.users.get()
pbi_users = []
for user in users.value:
licenses = await client.users.by_user_id(user.id).license_details.get()
for license in licenses.value:
if "POWER_BI" in license.sku_part_number:
pbi_users.append({
"user": user.display_name,
"email": user.mail,
"license": license.sku_part_number
})
return pbi_users
Understanding Fabric licensing helps you plan costs and ensure users have appropriate access. Tomorrow, I will cover Fabric Workspace configuration and management.