Forum Discussion
Report creation
I need to build a monitoring report giving a global overview of an entire Power BI tenant: number of reports, dashboards and datasets per workspace, refresh status and failure history, and usage indicators. Essentially a "dashboard of dashboards" for the BI team. Context: Power BI Pro only, no Fabric capacity. What's the recommended approach to retrieve this data and keep it historized?
Since you're on Pro without Fabric capacity, the standard path is the Power BI REST Admin APIs, typically called from a service principal that has Tenant.Read.All granted by a Fabric admin.
The two workhorse endpoints are the Workspace Scanner API (/admin/workspaces/getInfo, called async as getInfo then scanStatus then scanResult) which returns workspaces, reports, dashboards, datasets and users; and the Activity Log (/admin/activityevents) which gives you usage events like report views, refreshes and sharing actions. For per-dataset refresh status use /groups/{groupId}/datasets/{datasetId}/refreshes.
To historize it, land the raw JSON into an Azure SQL DB or even a shared OneDrive folder as CSVs and then point a dedicated admin-monitoring PBIX at that store. Schedule the pulls with an Azure Function, an Automation runbook, or a Power Automate flow. Bear in mind the Activity Log only exposes the last 30 days, so you must pull it daily if you want any real history.
If this was helpful, please give a thumbs up and mark it as resolved.
Best regards,
Shai Karmani@powerbidev123 Use the Power BI REST API.
3 Replies
- Shai_KarmaniSuper User
Since you're on Pro without Fabric capacity, the standard path is the Power BI REST Admin APIs, typically called from a service principal that has Tenant.Read.All granted by a Fabric admin.
The two workhorse endpoints are the Workspace Scanner API (/admin/workspaces/getInfo, called async as getInfo then scanStatus then scanResult) which returns workspaces, reports, dashboards, datasets and users; and the Activity Log (/admin/activityevents) which gives you usage events like report views, refreshes and sharing actions. For per-dataset refresh status use /groups/{groupId}/datasets/{datasetId}/refreshes.
To historize it, land the raw JSON into an Azure SQL DB or even a shared OneDrive folder as CSVs and then point a dedicated admin-monitoring PBIX at that store. Schedule the pulls with an Azure Function, an Automation runbook, or a Power Automate flow. Bear in mind the Activity Log only exposes the last 30 days, so you must pull it daily if you want any real history.
If this was helpful, please give a thumbs up and mark it as resolved.
Best regards,
Shai Karmani - Greg_DecklerCommunity Champion
powerbidev123 Use the Power BI REST API.
- Greg_DecklerCommunity Champion
@powerbidev123 Use the Power BI REST API.