Power BI
Power BI
Scan Power BI workspaces, datasets, reports, and dashboards.
- Category
- Analytics & BI
- Source type
- POWERBI
- Produces
- item
A BI platform is where warehouse data becomes visible — and where a table with restricted columns turns into a dashboard shared with three hundred people. Scanning Power BI answers a question the warehouse can’t: who is actually looking at this.
What you need to connect
Either a service principal (tenant ID, client ID and secret) or a short-lived access token. For the service principal route, enable service-principal API access in the Power BI admin portal and add the principal to the workspaces you want scanned.
What Classifyre reads
Workspaces, and inside them datasets, reports and dashboards — each a switchable extraction option. Dataset table schemas and owner metadata can be captured too.
Scope by workspace name or id, and choose whether personal workspaces are included.
Metadata on every asset
Asset kind · item
| Field | Type | Always present | What it is |
|---|---|---|---|
| workspace_id | string | Yes | Power BI workspace id |
| workspace_name | string | Yes | Workspace name |
| report_type | string | Yes | Asset kind (report/dataset/dashboard) |
| dataset_id | string | No | Dataset id |
| author | string | No | Author display name or email |
Lineage
Lineage
Power BI is one of the sources that produces genuine lineage:
- A report or dashboard over its dataset is recorded as lineage — change the dataset and you know exactly which reports are affected.
- A dataset over its upstream databases is recorded too, named the way the database platform names itself. So a dataset pulling from a Snowflake or SQL Server database links to the real table once that system is scanned — even if it’s scanned months later.
- A workspace holding a report is containment, not lineage: structural, and used to collapse the graph rather than to add a hop to it.
Worth knowing
- Personal workspaces are off by default. They’re frequently where ungoverned copies of production data end up.
- Sovereign clouds are supported by overriding the API and authority URLs.
Configuration
Beyond the fields below, every source also has the settings shared by all of them: the sampling strategy, the detectors to run, the scan schedule, and the compute limits for its scan jobs.
Required
Without these, the source will not save.
This section depends on which authentication method you pick — one of the following applies.
Power BI Service Principal
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| auth_mode | "SERVICE_PRINCIPAL" | Yes | — | — |
| tenant_id | string | Yes | Azure tenant identifier | — |
| client_id | string | Yes | Azure app client identifier | — |
Power BI Access Token
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| auth_mode | "ACCESS_TOKEN" | Yes | — | — |
Secrets
Stored encrypted and never shown again after you save them. See Configuration & Fields.
This section depends on which authentication method you pick — one of the following applies.
Power BI Client Secret
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| client_secret | string | Yes | Azure app client secret for service principal auth | — |
Power BI Access Token
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| access_token | string | Yes | Bearer token for PowerBI API access | — |
Optional
Everything you can tune. Sensible defaults apply when you leave them alone.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| optional | object | No | —no extra properties | — |
| connection | object | No | PowerBI API endpoint and timeout controls.no extra properties | — |
| connection.api_base_url | string | No | PowerBI REST API base URLformat uri | https://api.powerbi.com/v1.0/myorg |
| connection.authority_url | string | No | Authority base URL for Microsoft Entra token issuanceformat uri | https://login.microsoftonline.com |
| connection.timeout_seconds | integer | No | HTTP timeout for PowerBI API callsmin 5, max 300 | 30 |
| extraction | object | No | Feature flags that control PowerBI entities to extract.no extra properties | — |
| extraction.extract_dashboards | boolean | No | Extract PowerBI dashboards | true |
| extraction.extract_dataset_schema | boolean | No | Attempt to extract PowerBI dataset table schema metadata | true |
| extraction.extract_datasets_to_containers | boolean | No | Emit dataset metadata suitable for container grouping | false |
| extraction.extract_ownership | boolean | No | Extract workspace/report/dataset owner metadata | false |
| extraction.extract_reports | boolean | No | Extract PowerBI reports | true |
| extraction.extract_workspaces_to_containers | boolean | No | Emit workspace metadata suitable for container grouping | true |
| scope | object | No | Workspace scope controls for PowerBI ingestion.no extra properties | — |
| scope.include_personal_workspaces | boolean | No | Include personal workspaces when true | false |
| scope.workspace_ids | array | No | Optional allowlist of workspace IDs to scan | — |
| scope.workspace_ids[] | string | No | — | — |
| scope.workspace_names | array | No | Optional allowlist of workspace names to scan | — |
| scope.workspace_names[] | string | No | — | — |