How to view Microsoft call quality dashboard in Power Bi app

This article talks about on how to view Microsoft call quality dashboard in Power Bi app

Call quality dashboard

Power Bi + CQD in MS Teams is a powerful, integrated analytics solution used to monitor, visualize, and troubleshoot audio/video quality and reliability issues across an organization.

It combines CQD’s near-real-time streaming data with Power BI’s interactive reporting, enabling admins to identify network, building, or user-level issues

Call Quality Dashboard → Power BI Dataset → Power BI Report → Power BI App

Below is the complete end-to-end step-by-step procedure (Admin + Power BI deployment)


PHASE 1: PREREQUISITES (Must Check First)

1. Required Permissions

You must have at least one of these roles:

  • Teams Administrator
  • Global Administrator
  • CQD Administrator / CQD Reader (recommended)
  • Power BI Admin (optional but helpful)

To verify call quality dashboard access:
Go to:
Teams Admin Center → Analytics & reports → Call Quality Dashboard

If CQD opens, you are good :https://cqd.teams.cloud.microsoft/spd/#/Dashboard/


2. call quality dashboard Must Be Enabled (CQD Data Available)

call quality dashboard data is available only after:

  • Users are making Teams calls
  • Data is collected for at least 24–48 hours

3. Power BI Licensing Requirement

To publish & share Power BI App, you need:

Option A (Most common)

Power BI Pro license for:

  • Report creator
  • All users consuming the App

Option B (Enterprise)

Power BI Premium capacity (then free users can consume)


PHASE 2: GET CQD DATA INTO POWER BI

There are 2 ways:

Recommended Way: Use call quality dashboard OData API (Automatic refresh)


Step 1: Get CQD OData URL

Use this call quality dashboard API endpoint: https://cqd.teams.microsoft.com/spd/odata/v1.0/

This is the most common endpoint used globally.

Also Read  How to create Teams update policies in Teams admin center

Step 2: Open Power BI Desktop

  1. Open Power BI Desktop
  2. Click Home → Get Data
  3. Search and select OData Feed
  4. Paste: https://cqd.teams.microsoft.com/spd/odata/v1.0/
  1. Click OK

Step 3: Authenticate

When prompted:

  • Select Organizational account
  • Click Sign in
  • Sign in with your Teams admin account
  • Click Connect

Step 4: Select CQD Tables

Navigator will show many tables.

Select these minimum recommended tables:

Core Fact Tables

  • AudioStreams
  • VideoStreams
  • AppSharingStreams

Dimensions

  • Building
  • Subnet
  • Tenant
  • ConnectionType
  • ISP
  • Device

Then click:
Transform Data (recommended)


Step 5: Power Query Cleanup (Mandatory)

In Power Query:

Recommended cleanup actions

  • Keep only required columns (remove unnecessary ones)
  • Filter last 30 / 90 days to improve performance

Example filter:

  • StartTime >= DateTime.LocalNow() – 90 days

Step 6: Load Data

Click:
Close & Apply

Now data will load into your PBIX model.


PHASE 3: CREATE YOUR POWER BI REPORT (CQD STYLE)

Step 7: Create Date Table

Go to Modeling → New Table

Date = CALENDAR ( MIN(AudioStreams[StartTime]), MAX(AudioStreams[StartTime]) )

Add columns:

MonthYear = FORMAT(Date[Date], “MMM yyyy”)
Year = YEAR(Date[Date])
Month = FORMAT(Date[Date], “MMM”)
Week = WEEKNUM(Date[Date])


Step 8: Create Relationships

Go to Model view and create relationships:

AudioStreams relationships

  • AudioStreams[BuildingId] → Building[BuildingId]
  • AudioStreams[SubnetId] → Subnet[SubnetId]
  • AudioStreams[DeviceId] → Device[DeviceId]
  • AudioStreams[ISPId] → ISP[ISPId]
  • AudioStreams[ConnectionTypeId] → ConnectionType[ConnectionTypeId]
  • AudioStreams[StartTime] → Date[Date]

Do the same for VideoStreams.


Step 9: Create Core Measures

Create measures:

Total Streams = SUM(AudioStreams[TotalStreamCount]) + SUM(VideoStreams[TotalStreamCount])

Total Poor Streams = SUM(AudioStreams[PoorStreamCount]) + SUM(VideoStreams[PoorStreamCount])

Overall Poor Rate % = DIVIDE([Total Poor Streams], [Total Streams], 0)

Avg Packet Loss % = AVERAGE(AudioStreams[AveragePacketLossRate])

Avg Jitter = AVERAGE(AudioStreams[AverageJitter])

Avg RTT = AVERAGE(AudioStreams[AverageRoundTrip])

Avg MOS = AVERAGE(AudioStreams[AverageNetworkMOS])


Step 10: Build Pages (Suggested Minimum)

Create these report pages:

Page 1: Executive Summary

  • KPI Cards
  • Poor rate trend line
  • Top 10 bad buildings
  • Top 10 bad subnets
  • Connection type pie chart
Also Read  How to add Emergency addresses in Microsoft Teams

Page 2: Network Analysis

  • Subnet matrix (Building → Subnet)
  • Scatter plot (Packet Loss vs Jitter)

Page 3: Building Analysis

  • Select building slicer
  • Poor rate trend
  • Subnet performance chart

Page 4: ISP Analysis

  • ISP wise poor rate %
  • ISP wise RTT

Page 5: Device Analysis

  • Worst devices by poor rate

Step 11: Save PBIX

Save as:
Teams_CQD_Dashboard.pbix


PHASE 4: PUBLISH REPORT TO POWER BI SERVICE

Step 12: Create a Workspace

Go to Power BI Service:
https://app.powerbi.com

  1. Click Workspaces
  2. Click New workspace
  3. Name it:
    Teams CQD Analytics
  4. Set privacy: Private
  5. Create

Step 13: Publish PBIX

In Power BI Desktop:

  1. Click Publish
  2. Select workspace: Teams CQD Analytics
  3. Publish

PHASE 5: CONFIGURE DATA REFRESH (MOST IMPORTANT)

CQD reports must refresh automatically.

Step 14: Configure Dataset Credentials

In Power BI Service:

  1. Go to workspace
  2. Click Datasets
  3. Click your dataset → Settings
  4. Under Data source credentials
  5. Click Edit credentials
  6. Choose:
    • Authentication method: OAuth2
    • Sign in with your admin account

Step 15: Configure Scheduled Refresh

In Dataset settings:

  1. Enable Scheduled Refresh
  2. Choose refresh frequency:
    • 2–4 times/day is common
  3. Select time zone
  4. Apply

PHASE 6: CREATE POWER BI APP (WHAT YOU WANT)

Now your report is ready to be deployed as an App.

Step 16: Create App

In your Workspace:

  1. Click Create → App
  2. App name:
    Microsoft Teams CQD Dashboard
  3. Description:
    “Teams call quality dashboard powered by CQD data”
  4. Add logo (optional)

Step 17: Add Content to App

Under App content:

  • Include the report
  • Include dashboard (optional)

Select the report pages you want.


Step 18: Set Audience / Access

Add users/groups:

Also Read  Call hold policies in Microsoft Teams

Recommended:

  • Teams Admin group
  • Network team
  • IT support group

They must have Power BI Pro unless you have Premium.


Step 19: Publish the App

Click:
Publish App

Now you get an App link.

Users will see it in:
Power BI → Apps → Microsoft Teams CQD Dashboard


PHASE 7: SECURITY & ACCESS CONTROL (Important for Enterprises)

Step 20: Workspace Permissions

Give access to workspace carefully:

Best practice

  • Only report creators = Member/Contributor
  • Normal users should only access App (Viewer)

PHASE 8: OPTIONAL (RECOMMENDED ENHANCEMENTS)

A) Create Row Level Security (RLS)

Example: allow regional IT teams to see only their buildings.

  • Region Team A → only Building A/B/C
  • Region Team B → only Building X/Y/Z

This is optional.


B) Use Power BI Dataflow (Better Performance)

Instead of loading CQD directly in PBIX:

CQD OData → Dataflow → Dataset → Report → App

This is more stable for large tenants.


C) Use Incremental Refresh (Very Useful)

If your tenant has high call volume, CQD tables become huge.

Use incremental refresh:

  • Store 1 year
  • Refresh last 30 days only

 IMPORTANT LIMITATIONS YOU SHOULD KNOW

  1. CQD OData is not as fast as SQL databases.
  2. Large tenants may hit refresh failures unless you filter.
  3. Some CQD tables are aggregated, not call-by-call raw data.
  4. Do not pull all history (will kill performance).

Best practice: Last 90 days only.


Conclusion

Post reading above article user will be able to view Microsoft call quality dashboard in Power Bi app

Also you can read https://microbrother.com/how-to-create-policy-packages-in-ms-teams/ this article to create policy packages in MS Teams

Thank you 😇

Leave a Comment