> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dqlabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# What We Collect

> Field-level breakdown of every metadata object Prizm extracts from Power BI — workspaces, semantic models, reports, dashboards, dataflows, and data sources.

<script type="application/ld+json">
  {`{
            "@context": "https://schema.org",
            "@type": "TechArticle",
            "headline": "Power BI: What We Collect",
            "description": "Field-level breakdown of every metadata object Prizm extracts from Power BI - workspaces, semantic models, reports, dashboards, dataflows, and data sources.",
            "url": "https://docs.dqlabs.ai/sources/powerbi/what-we-collect",
            "publisher": {
              "@type": "Organization",
              "name": "DQLabs Inc",
              "logo": "https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg"
            }
            }`}
</script>

Prizm extracts metadata from Power BI using a combination of the **XMLA endpoint** and the Power BI REST/Scanner API. Semantic model schema (tables, columns, measures, relationships, hierarchies, calculation groups, and DAX/M expressions) is read over the XMLA endpoint, which requires a Premium Per User, Premium capacity, or Fabric capacity workspace (see [Setup](/sources/powerbi/setup)). Workspace, report, dashboard, dataflow, and data source inventory, along with refresh history, is read through the REST/Scanner API. The tables below describe every field collected for each asset type.

## Workspaces

Workspaces are the top-level containers in Power BI. Prizm uses workspace metadata as the organizational root for all cataloged Power BI assets.

| Field              | Description                                 |
| :----------------- | :------------------------------------------ |
| **Workspace ID**   | Unique GUID assigned by Power BI            |
| **Workspace Name** | Display name of the workspace               |
| **Type**           | Workspace type: Personal, Group, or Premium |
| **State**          | Active or Deleted                           |
| **Capacity**       | Linked Premium capacity, if assigned        |

## Semantic Models (Datasets)

A semantic model (formerly called a dataset) is the data layer that reports and dashboards query against. It contains tables, columns, measures, relationships, and transformation logic built in Power Query.

Prizm catalogs semantic models as a parent asset with each table and column cataloged as child assets.

### Semantic Model — Top Level

| Field                               | Description                                            |
| :---------------------------------- | :----------------------------------------------------- |
| **Model ID**                        | Unique GUID assigned by Power BI                       |
| **Model Name**                      | Display name of the semantic model                     |
| **Workspace**                       | The workspace the model belongs to                     |
| **Configured By**                   | User or service principal that owns the model          |
| **Created Date**                    | When the model was first published                     |
| **Modified Date**                   | When the model was last modified                       |
| **Storage Mode**                    | Import, DirectQuery, Direct Lake, or Composite         |
| **Target Storage Mode**             | The target storage mode, if a migration is in progress |
| **Is Refreshable**                  | Whether the model supports scheduled refresh           |
| **Is On-Premises Gateway Required** | Whether an on-premises data gateway is needed          |
| **Gateway ID**                      | ID of the on-premises gateway, if applicable           |

### Semantic Model Building Blocks

For each semantic model, Prizm extracts the following internal building blocks and catalogs them as child objects:

| Building Block                   | What Prizm collects                                                                                                                                                  |
| :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Tables**                       | Table name, schema, storage mode (Import / DirectQuery / Direct Lake), hidden state, row count (where available)                                                     |
| **Columns**                      | Column name, data type, format string, hidden/visible state, data category, lineage tag (stable GUID across renames)                                                 |
| **Measures**                     | Measure name, DAX expression, data type, format string, description                                                                                                  |
| **Calculated Columns**           | Column name, DAX expression, data type                                                                                                                               |
| **Relationships**                | Source table, source column, target table, target column, cardinality (1:1, 1:many, many:many), cross-filter direction (single/bidirectional), active/inactive state |
| **Hierarchies**                  | Hierarchy name, levels (column references in order), table                                                                                                           |
| **Data Sources / M Expressions** | Power Query connection string, source type, server/database/schema path, full M expression (for upstream lineage parsing)                                            |
| **Calculation Groups**           | Calculation group name, precedence, calculation items, and their DAX expressions                                                                                     |
| **Storage Mode Config**          | Per-table storage mode configuration for Composite models                                                                                                            |
| **Partitions**                   | Partition name, mode (Import / DirectQuery), source expression, refresh policy (for incremental refresh)                                                             |

<Note>
  Tables, columns, measures, relationships, hierarchies, calculation groups, partitions, and their DAX/M expressions are extracted over the **XMLA endpoint** using AMO/TOM metadata queries, not the Scanner API. M expressions are required for upstream lineage stitching — Prizm parses them to resolve which source system table each semantic model table draws from.
</Note>

### Refresh History

For each semantic model, Prizm collects the last N refresh runs to power Freshness and Reliability metrics:

| Field             | Description                                     |
| :---------------- | :---------------------------------------------- |
| **Request ID**    | Unique ID of the refresh request                |
| **Refresh Type**  | On Demand, Scheduled, Incremental, or REST API  |
| **Start Time**    | When the refresh began                          |
| **End Time**      | When the refresh completed (or failed)          |
| **Status**        | Completed, Failed, or Cancelled                 |
| **Error Message** | Failure reason, if the refresh did not complete |

## Reports

Reports are visual presentations built on top of a semantic model. Each report page queries one semantic model and renders results using visualizations.

| Field             | Description                                   |
| :---------------- | :-------------------------------------------- |
| **Report ID**     | Unique GUID assigned by Power BI              |
| **Report Name**   | Display name                                  |
| **Workspace**     | The workspace the report belongs to           |
| **Dataset ID**    | The semantic model this report queries        |
| **Web URL**       | Direct link to the report in Power BI Service |
| **Embed URL**     | Embeddable URL for the report                 |
| **Created Date**  | When the report was first published           |
| **Modified Date** | When the report was last modified             |
| **Report Type**   | PowerBIReport or PaginatedReport              |

## Dashboards

Dashboards aggregate tiles from one or more reports into a single view. Prizm catalogs dashboards and links them to their upstream reports and semantic models through lineage.

| Field              | Description                                                            |
| :----------------- | :--------------------------------------------------------------------- |
| **Dashboard ID**   | Unique GUID assigned by Power BI                                       |
| **Dashboard Name** | Display name                                                           |
| **Workspace**      | The workspace the dashboard belongs to                                 |
| **Is Read Only**   | Whether the dashboard is published as read-only                        |
| **Web URL**        | Direct link to the dashboard in Power BI Service                       |
| **Embed URL**      | Embeddable URL                                                         |
| **Tiles**          | List of tile IDs, dataset IDs, and report IDs the dashboard draws from |

## Dataflows

Dataflows are Power Query transformation layers that sit between raw data sources and semantic models. They allow shared, reusable transformation logic across multiple semantic models in a workspace.

Prizm catalogs dataflows when **Extract Dataflows** is enabled in the connector configuration.

| Field             | Description                                                            |
| :---------------- | :--------------------------------------------------------------------- |
| **Dataflow ID**   | Unique GUID assigned by Power BI                                       |
| **Dataflow Name** | Display name                                                           |
| **Workspace**     | The workspace the dataflow belongs to                                  |
| **Configured By** | User or service principal that owns the dataflow                       |
| **Modified Date** | When the dataflow was last modified                                    |
| **Entities**      | Tables produced by the dataflow (entity name, data type, M expression) |

## Data Sources

Data sources represent the external connections behind a semantic model or dataflow. Prizm uses data source metadata to stitch upstream lineage to cataloged warehouse assets.

| Field                  | Description                                                           |
| :--------------------- | :-------------------------------------------------------------------- |
| **Datasource ID**      | Unique GUID                                                           |
| **Datasource Type**    | Source system type (e.g., Snowflake, SQL Server, Azure Synapse, File) |
| **Connection Details** | Server, database, path — normalized per source type                   |
| **Gateway ID**         | On-premises data gateway, if the source requires one                  |

## Usage & Adoption

Usage data is collected as part of the Operational job (see [Setup](/sources/powerbi/setup)) and powers the Report View Count metric on reports, plus its cumulative rollup on semantic models. There is no separate, standalone usage-collection job for Power BI, and no usage metric is computed for dashboards or semantic models directly.

| Field                              | Description                                                                                           |
| :--------------------------------- | :---------------------------------------------------------------------------------------------------- |
| **Report View Count**              | Number of times the report was opened, over a 14-day or 28-day window                                 |
| **Report View Count (Cumulative)** | Sum of the Report View Count across every report built on a given semantic model, for the same window |

## API Methods Used

Prizm uses the following methods to collect the metadata above:

| Endpoint / Protocol                                                            | Data Collected                                                                                                                                                |
| :----------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **XMLA endpoint** (AMO/TOM metadata queries)                                   | Tables, columns, measures, calculated columns, relationships, hierarchies, calculation groups, partitions, and DAX/M expressions for in-scope semantic models |
| `GET /admin/groups`                                                            | Workspace list and metadata                                                                                                                                   |
| `GET /admin/groups/{groupId}/datasets`                                         | Semantic model inventory per workspace                                                                                                                        |
| `POST /admin/workspaces/getInfo` with `datasourceDetails=True`, `lineage=True` | Data source details and lineage edges (Scanner API — async)                                                                                                   |
| `GET /admin/groups/{groupId}/reports`                                          | Report inventory                                                                                                                                              |
| `GET /admin/groups/{groupId}/dashboards`                                       | Dashboard inventory                                                                                                                                           |
| `GET /admin/groups/{groupId}/dataflows`                                        | Dataflow inventory                                                                                                                                            |
| `GET /datasets/{datasetId}/refreshes`                                          | Refresh history per semantic model                                                                                                                            |
| `GET /admin/activityevents`                                                    | Usage and adoption activity log, polled as part of the Operational job                                                                                        |
