Why Power BI Belongs in SharePoint
Power BI dashboards locked inside the Power BI service reach analysts. Power BI dashboards embedded in SharePoint reach everyone. When you put real-time dashboards where people already work — their team sites, project portals, and department hubs — data-driven decisions become the default, not the exception.
EPC Group has deployed Power BI + SharePoint integrations for Fortune 500 clients across healthcare, financial services, and government. This guide covers everything from basic embedding to enterprise patterns like row-level security, real-time streaming, and governance.
Embedding Methods: Choosing the Right Approach
Method 1: Power BI Web Part (Simplest)
The Power BI web part is built into SharePoint Online and requires no development:
- Edit your SharePoint page
- Add the Power BI web part
- Paste the report URL
- Configure display options (show/hide nav pane, filter pane, page tabs)
- Publish the page
Pros: Zero code, respects Power BI permissions, automatic updates
Cons: Limited customization, full page load (no lazy loading), no custom filtering from SharePoint data
Best for: Department dashboards, executive summaries, standard reporting
Method 2: Embed via iframe
For more control over the embed experience, construct the embed URL with specific page and filter parameters. The URL can include reportId, groupId, pageName, filter expressions, and parameters to hide the navigation and filter panes.
Method 3: Power BI Embedded (SPFx Web Part)
For full programmatic control, build a SharePoint Framework (SPFx) web part that uses the Power BI JavaScript SDK.
Key SPFx web part capabilities:
- Dynamic filtering based on SharePoint list data
- User context-aware embedding (pass current user's department)
- Custom UI around the embedded report
- Lazy loading for performance
- Deep linking to specific visuals
Method 4: Power BI Paginated Reports for SharePoint
For pixel-perfect, printable reports embedded in SharePoint:
- Export to PDF/Excel/Word directly from SharePoint
- Parameterized reports that accept SharePoint list values
- Subscription delivery to SharePoint document libraries
- Best for compliance reports, financial statements, invoices
Real-Time Dashboard Architecture
Streaming Datasets
For dashboards that update in seconds, not minutes:
Architecture: Data Source goes to Azure Event Hub or IoT Hub, then to Stream Analytics, then to Power BI Streaming Dataset, and finally to SharePoint Dashboard.
Use cases:
- Manufacturing floor metrics (OEE, defect rates)
- IT operations (server health, incident counts)
- Sales floor (live deal pipeline, call metrics)
- Healthcare (bed availability, patient wait times)
DirectQuery vs. Import Mode for SharePoint Dashboards
| Feature | Import Mode | DirectQuery | Composite |
|---------|-------------|-------------|-----------|
| Data freshness | Scheduled refresh (min 30 min) | Real-time | Mixed |
| Performance | Fast (cached) | Depends on source | Optimized |
| Data size limit | 1 GB (shared) / 10 GB (Premium) | No limit | Mixed |
| SharePoint experience | Instant load | Slight delay | Balanced |
| Best for | Historical analysis | Live monitoring | Enterprise dashboards |
Recommendation: Use composite models — import historical data for fast rendering, DirectQuery for real-time metrics.
Row-Level Security (RLS) for SharePoint Embedded Dashboards
Why RLS Matters in SharePoint
When a Power BI report is embedded in a SharePoint department site, everyone with site access sees the same dashboard. Without RLS, a marketing manager could see sales team compensation data.
Implementing RLS
Step 1: Define roles in Power BI Desktop
Create roles based on organizational hierarchy using DAX expressions that filter data by the current user's department.
Step 2: Create user-to-department mapping table
# Export Azure AD users with department info for RLS mapping
Connect-MgGraph -Scopes "User.Read.All"
$users = Get-MgUser -Filter "accountEnabled eq true" -Property "displayName,userPrincipalName,department,jobTitle" -All
$rlsMapping = $users | Where-Object { $_.Department } | Select-Object @{
N="UserEmail"; E={$_.UserPrincipalName}
}, @{
N="Department"; E={$_.Department}
}, @{
N="JobTitle"; E={$_.JobTitle}
}, @{
N="IsManager"; E={$_.JobTitle -match "Manager|Director|VP|Chief"}
}
$rlsMapping | Export-Csv "RLS_UserMapping.csv" -NoTypeInformation
Write-Host "Exported $($rlsMapping.Count) user mappings for RLS"
Performance Optimization for SharePoint-Embedded Dashboards
Dashboard Load Time Targets
| Metric | Target | Unacceptable |
|--------|--------|-------------|
| Initial render | Less than 3 seconds | More than 8 seconds |
| Filter interaction | Less than 1 second | More than 3 seconds |
| Page navigation | Less than 2 seconds | More than 5 seconds |
| Data refresh | Less than 5 minutes | More than 30 minutes |
Optimization Techniques
1. Reduce visual count per page
- Target: 6-8 visuals per page maximum
- Every visual equals a separate query to the dataset
- Use bookmarks and drill-through instead of cramming everything on one page
2. Use aggregations
- Pre-aggregate data at the grain needed for dashboards
- Avoid forcing Power BI to summarize millions of rows on every load
3. Optimize DAX measures
- Avoid CALCULATE with complex filters on large tables
- Use variables (VAR) to avoid repeated calculations
- Replace iterators (SUMX, AVERAGEX) with simpler aggregations where possible
4. Enable query caching (Premium)
For Power BI Premium workspaces, enable query caching to dramatically improve SharePoint embed performance.
5. Implement incremental refresh
For large datasets, configure incremental refresh so only new or changed data is processed.
Enterprise Deployment Patterns
Pattern 1: Department Hub Dashboard
One Power BI report with RLS embedded via Power BI web part on each hub site home page. RLS automatically filters data based on who is viewing. Single source of truth, multiple secure views.
Pattern 2: Executive Portal
Power BI Premium workspace with composite model. Real-time tiles for critical metrics (revenue, incidents, customer satisfaction). Import mode for historical trends.
Pattern 3: Client-Facing Portal
Power BI Embedded (App Owns Data) for external users. SPFx web part with Azure AD B2C authentication. RLS filters data to specific client. No Power BI Pro license required for external viewers.
Pattern 4: Operational Command Center
SharePoint page with auto-rotating Power BI pages (kiosk mode). Streaming datasets for live metrics. Automatic page refresh every 30 seconds. Alert integration with Teams/email for threshold breaches.
Governance for Power BI in SharePoint
Who Can Embed Reports?
| Role | Can Embed | Can View | Can Export |
|------|-----------|----------|-----------|
| Power BI Admin | All reports | All reports | All data |
| Report Creator | Own reports | Shared reports | Based on settings |
| Department Lead | Department reports | Department data | Restricted |
| General User | No | Shared with them | View only |
Monitoring Embedded Report Usage
# Get Power BI activity logs for SharePoint embeds
Connect-PowerBIServiceAccount
$startDate = (Get-Date).AddDays(-30).ToString("yyyy-MM-ddTHH:mm:ss")
$endDate = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ss")
$activities = Get-PowerBIActivityEvent -StartDateTime $startDate -EndDateTime $endDate -ActivityType "ViewReport" | ConvertFrom-Json
$spEmbeds = $activities | Where-Object {
$_.ConsumptionMethod -eq "SharePoint" -or
$_.ClientType -eq "SharePointWebPart"
}
$spEmbeds | Group-Object ReportName | Sort-Object Count -Descending |
Select-Object Name, Count -First 20 |
Format-Table -AutoSize
Write-Host "Total SharePoint embed views (30 days): $($spEmbeds.Count)"
Frequently Asked Questions
Do users need a Power BI Pro license to view embedded dashboards in SharePoint?
Users need Power BI Pro to view reports in shared workspaces, OR the report must be in a Power BI Premium/PPU workspace. For external users, use Power BI Embedded (App Owns Data) which uses capacity-based pricing instead of per-user licenses.
Can I embed Power BI dashboards in SharePoint on-premises?
No. The Power BI web part is only available in SharePoint Online. For on-premises SharePoint, you can use Power BI Report Server with iframe embedding, but it lacks the native integration features.
How often does data refresh in an embedded SharePoint dashboard?
It depends on your refresh configuration. Import mode: scheduled refresh (minimum every 30 minutes, 8x/day for Pro, 48x/day for Premium). DirectQuery: real-time on every interaction. Streaming: continuous push updates.
Can I filter a Power BI dashboard based on the SharePoint page context?
Yes. With the SPFx web part approach, you can pass SharePoint context (current user, site name, list item values) as filters to the embedded Power BI report. The standard Power BI web part supports URL-based filtering.
Next Steps
Start with the Power BI web part for quick wins, then graduate to SPFx web parts for dynamic, context-aware dashboards. EPC Group's Power BI + SharePoint practice designs and deploys enterprise dashboard solutions with RLS, real-time streaming, and governance frameworks. Contact us to discuss your dashboard integration strategy.
Written by Errin O'Connor
Founder, CEO & Chief AI Architect | Microsoft Press Bestselling Author | 25+ Years Microsoft Ecosystem
Errin O'Connor is a Microsoft Press bestselling author of 4 books covering SharePoint, Power BI, Azure, and large-scale migrations. He leads our SharePoint consulting practice with expertise spanning 500+ enterprise migrations and compliance implementations across HIPAA, SOC 2, and FedRAMP environments.
Expert SharePoint Services
Need Expert Help?
Our SharePoint consultants are ready to help you implement these strategies in your organization.