ποΈ Platform Foundations & Architecture
π°οΈ Service Overview β Licensing, Capacity & Data Models
Power BI/Fabric comes in multiple licensing tiers, each with different capacity models and dataset behaviours.
Tier / License | Capacity Model | Storage / Refresh | Typical Audience |
---|---|---|---|
Free | Shared | 10Β GB (personal) | Personal prototyping |
Pro | Shared | 10Β GB/user Β· 8 refreshes/day | Team collaboration |
Premium / Fabric | Dedicated (FβSKU) | UpΒ toΒ 100Β TB/workspace Β· 48 refreshes/day | Enterprise & external sharing |
PPU | Personal Premium | Same as Premium (perβuser) | Power users needing Paginated, AI |
Import vs DirectQuery vs Composite
Mode | Where data lives | Pros | Cons |
---|---|---|---|
Import | Cached in PowerΒ BI | Superβfast, full DAX | Dataset refresh overhead |
DirectQuery | Source DB | Realβtime; no cache | Source load, limited DAX |
Composite | Mix | Best of both | Complexity, model constraints |
ποΈ Capacity & Model Architecture Diagram
graph TB
subgraph "Capacity Tiers"
A["Shared Capacity (Pro)"]
B["Dedicated Capacity (Premium/Fabric)"]
end
C["Workspaces"] -->|Import| D["Dataset Cache"]
C -->|DirectQuery| E["Source DB"]
C -->|Composite| D & E
A --> C
B --> C
π Tenant Architecture β Regions, Capacities, Workspaces
A tenant spans a geographic region and may hold multiple capacities. Each capacity contains workspaces, and every workspace contains items (reports, datasets, dataflows, notebooks, Lakehouses, etc.).
Layer | Key Points |
---|---|
Tenant | Bound to an Azure region; governed by Tenant settings |
Capacity | Resource envelope (vβcores, memory) for Premium/Fabric workloads |
Workspace | Security boundary & Dev/Test/Prod landing zone |
Items | Reports, Dashboards, Dataflows, Lakehouse objects, Notebooks, etc. |
π₯ Roles & Responsibilities β RACI Matrix
Role | R | A | C | I | Typical Tasks |
---|---|---|---|---|---|
Tenant Admin | β | β | β | Licensing, tenant settings, audit logs | |
Capacity Admin | β | β | β | β | Manage Premium/Fabric capacities |
Workspace Admin | β | β | β | Add members, publish apps, schedules | |
Developer / Author | β | β | Build reports, datasets, dataflows | ||
Consumer / Viewer | β | View & interact, set personal alerts |
βοΈ = Responsibility / Accountability level as per RACI.
π Deployment Lifecycle β Dev β Test β Prod with CI/CD
A simple threeβworkspace promotion pattern keeps artefacts isolated yet traceable across stages.
π Promotion Flow Diagram
sequenceDiagram
participant Dev as "Dev Workspace"
participant Test as "Test Workspace"
participant Prod as "Prod Workspace"
participant Git as "Git Repo"
participant AZP as "Azure DevOps Pipeline"
Dev -->> Git : Commit .PBIX / JSON
Git -->> AZP : Trigger pipeline
AZP -->> Test : Deploy artefacts
Test -->> AZP : Validation gates
AZP -->> Prod : Promote via Deployment Pipeline
Prod -->> Users: Publish App
Sample Azure DevOps azure-pipelines.yml
trigger:
branches: [ main ]
variables:
envName: 'test'
stages:
- stage: Build
jobs:
- job: Export_PBIX
pool:
vmImage: 'ubuntu-latest'
steps:
- script: |
echo "Export PBIX from source control"
- stage: Deploy
dependsOn: Build
jobs:
- deployment: Deploy_to_$(envName)
environment: $(envName)
strategy:
runOnce:
deploy:
steps:
- task: PowerPlatformImportSolution@0
inputs:
authenticationType: 'ServicePrincipal'
solutionInputFile: '**/*.pbix'
environmentUrl: 'https://app.powerbi.com'
Tip: Swap the
envName
variable toprod
and add manual approval for production gates.
π― Key Takeβaways
- Know your capacity model. Import β DirectQuery, shared β dedicated.
- Separate workspaces by stage to keep dev churn away from exec dashboards.
- Define clear RACI early; governance gaps cost more than extra capacity.
- Automate promotes with YAML + deployment pipelines β humans shouldnβt click βPublish to Prodβ.
π Need a deeper dive?
- Power BI admin portal docs
- CI/CD with Fabric deployment pipelines
- Pricing calculator