Power BI Tab Embedding in Teams for SRE Dashboards Prompt
Embed Power BI dashboards as Teams channel tabs for SRE metrics — SLO burn, deployment frequency, change failure rate, MTTR — with row-level security, refresh, and cross-team visibility.
- Target user
- SRE / platform engineers building observable team-level metrics
- Difficulty
- Intermediate
- Tools
- Claude, ChatGPT
The prompt
You are a senior SRE / data engineer who has built Power BI dashboards embedded in Teams channels that became the team's default tab for daily SRE metrics review. I will provide: - Existing data sources (Prometheus / Grafana, Datadog, GitHub Actions, Jira, ServiceNow, custom) - Power BI license type (Pro / Premium / Premium Per User / Fabric) - Team / channel structure - Permission model (who sees what) - Compliance + data residency requirements Your job: 1. **What to measure** — start with the DORA-style top 4 + SLO views: - **Deployment frequency** — per service, per team, trend - **Lead time for changes** — commit-to-prod time distribution - **Change failure rate** — failed deploys / total deploys - **MTTR** — mean time to restore (per service) - **SLO burn** — by service, current state + 30-day budget - **On-call load** — alerts per shift, after-hours pages Show one panel per metric with a brief description. 2. **Data architecture**: - **Source of truth** for deploys — your CD platform (ArgoCD, Spinnaker, GitHub Actions) - **Source of truth** for incidents — your IM tool (PagerDuty, Opsgenie, ServiceNow) - **Source of truth** for SLO state — your SLO tool (Sloth, Nobl9, Datadog) - **ETL** — Fabric / Data Factory / dbt — incremental pull, daily refresh minimum, ideally hourly - **Warehouse** — Synapse, Snowflake, BigQuery, or Fabric OneLake - **Semantic model** — Power BI dataset with measures defined once, reused across reports 3. **Tab embedding in Teams**: - Add Power BI app to a channel; sign in with the embedded user's AAD identity - **Personalize for the channel** — filter the report to that team's services at tab load - Use **report bookmarks** for views (Daily / Weekly / On-call view) - Pin frequently-viewed reports as separate tabs 4. **Row-level security (RLS)** — limit who sees what: - Service-owners see all their services - Cross-team viewers see a curated subset - Sensitive metrics (e.g. salary-adjacent on-call cost) → restricted - Implement via DAX role with `USERPRINCIPALNAME()` against an Access table 5. **Refresh policy**: - Hourly refresh on deploy + incident data - Daily refresh on derived metrics - Live data ONLY for the SLO burn-state panel (Power BI streaming dataset or DirectQuery to a low-latency source) 6. **Performance** — aggregation tables, indexed time dimensions, retention windows (raw data 90d, monthly aggregates 3y). Avoid `Sum(IF(...))`; use `CALCULATE` with filters. 7. **Drill-through** — clicking a service name jumps to a service-detail page; clicking a failed-deploy jumps to a failed-deploy detail. Don't make people hunt across reports. 8. **Authentication for embedded view** — Teams handles the SSO; verify token refresh handling. Public anonymous embeds are NOT compliant for regulated environments. 9. **Mobile experience** — design for Teams mobile too. Power BI mobile-layout for the report; key metrics on the first screen. 10. **Compliance overlay**: - Data residency — Power BI workspace region matches your tenant region - PII handling — never raw user identifiers in dashboards; aggregate to roles - Retention — align dataset and underlying warehouse retention to regime - Audit — Power BI activity log review cadence Output as: (a) metric list with DAX measure definitions for two, (b) data pipeline architecture, (c) RLS scheme, (d) refresh policy, (e) Teams tab integration steps, (f) compliance checklist. Bias toward: one source of truth per metric, dashboards that drive action not vanity, fast performance even on mobile.