# Power BI

## Power BI (via Microsoft Fabric)

Euno integrates with Microsoft Fabric / Power BI, ingesting its metadata to enhance data observability and support proactive, shift‑left practices. By surfacing structure, lineage, and usage patterns across your Power BI environment, Euno enables more informed decision‑making and efficient data management.

Euno's Power BI integration supports auto‑discovery of the following resources and sub‑resources:

* Power BI workspace
* Power BI dataflows
* Power BI semantic models (Formally known as "datasets")
* Power BI tables (within semantic model)
* Power BI reports
* Power BI pages (within reports)
* Power BI dashboards
* Power BI tiles (on dashboards)
* Power BI fields
  * Measures
  * Columns
* Fabric Lakehouse database
* Fabric Mirrored database
* Users (when "Observe users" is enabled)
* User groups (when "Observe groups" is enabled)

## Power BI Requirements

To ingest metadata from Power BI (Fabric), you will need:

* Microsoft Entra application / Service Principal with access to target workspaces.
* Fabric Admin settings:
  * Create a Power BI application for Euno to use - "Euno Power BI application"
* Power BI admin:
  * Enable API access to various resources for Euno to be able to discover
* Power BI app:
  * Grant Euno's Power BI application access to the connection and gateway metadata

## Stage 1: Configure Azure and Power BI

### Step 1: Create an Euno Power BI application in Microsoft Entra

1. Open [Microsoft Entra](https://entra.microsoft.com/) and sign in
2. In the sidebar, pick "App registrations"
3. Click "New registration"
4. Fill in the name ("Euno", for example), leave the "Supported account types" as default ("Accounts in this organizational directory only") and leave the "Redirect URI" empty
5. Click "Register"
6. You'll be redirected back to the Overview page. Make sure to note and copy the Application ID (Also called Client ID) and the Tenant ID (Also called Directory ID). You'll need these in the next steps.

* Skip to step 14 if you don't want Euno to observe Entra Users as part of this integration

7. Next, using the sidebar, pick "API permissions"
8. Click "+ Add a permission"
9. Select "Microsoft Graph"
10. Select "Application permissions"
11. Add the following permissions:
    * `User.Read.All` - Read all users' full profiles (required if "Observe users" is enabled)
    * `Group.Read.All` - Read all groups (required if "Observe users" or "Observe groups" is enabled)
    * `GroupMember.Read.All` - Read all group memberships (required if "Observe users" or "Observe groups" is enabled)
12. Click "Add permissions"
13. Click "Grant admin consent for \[your organization]" to grant admin consent for these permissions

{% hint style="info" %}
These Microsoft Graph API permissions are required if you enable "Observe users" or "Observe groups" in the Power BI integration configuration. If you don't plan to observe users or groups, you can skip steps 7–13.
{% endhint %}

14. Next, using the sidebar, pick "Certificates & secrets"
15. Under "Client secrets", click "+ New client secret"
16. Fill in the expiry time, and optionally a description, and click "Add". This creates a secret for Euno to use to authenticate as the Euno app. Make sure to note and copy the **secret Value**.

### Step 2: Create a security group for the Euno application

Note: This step is not strictly required, but highly recommended. As you'll see in the next steps, some privileges of Power BI can be either granted to the entire organization, or to specific security groups. If you don't configure a security group for the Euno application, you'll need to enable these privileges to the entire organization.

1. Open the [Azure portal](https://ms.portal.azure.com/#allservices) and sign in
2. Find the service "Microsoft Entra ID"
3. In the sidebar, under "Manage", pick "Groups"
4. Click "+ Add" and "Group"
   * Group type: Security
   * Group name: any name (i.e "Euno application")
   * Group description is optional
5. Once the group is created, click the link under "Members" to open a modal to add users. Add the Euno application and click "Select" to add the Euno application to the new security group

### Step 3: Configure access to Power BI APIs

1. Open the [Power BI admin portal](https://app.powerbi.com/admin-portal/) and sign in
2. Pick "Tenant settings" from the list of admin pages
3. Scroll to "Developer settings" section find "Service principals can call Fabric public APIs" and expand it. Switch to "Enable" and grant access to the security group we created in Step 2.
4. Scroll to "Admin API settings" and repeat the process for:

* Service principals can access read-only admin APIs
* Enhance admin APIs responses with detailed metadata
* Enhance admin APIs responses with DAX and mashup expressions

### Step 4: Add the Euno Power BI application to your workspaces

Note: this should be done for every Power BI workspace

> Many workspaces? To grant the Euno app Admin access programmatically, use a separate bootstrap app and the device-code script in [Grant Euno’s Power BI app access to many workspaces (programmatic)](/sources/business-intelligence/powerbi-integration/powerbi-workspace-access-bootstrap.md).

1. Open [Power BI](https://app.powerbi.com/) and sign in
2. Open "Workspaces" and find the workspace you want to enable. Click the `...` next to the name and pick "Workspace access"
3. Click "+ Add people or groups"
4. Add the Euno Power BI application you created in step 1 above, and select it. Make sure to assign the "Admin" role.

### Step 5: Add the Euno Power BI application to your gateways and connection

1. Open [Fabric Dashboard](https://app.fabric.microsoft.com/)
2. On the top right, click the "Settings" icon (gear icon) and pick "Manage connections and gateways"
3. For each connection under "Connections", click the `...` next to the name, and select "manage users", search the security group we created in step 2, and add it to the members of that connection

{% hint style="warning" %}
Rotate the client secret per your security policy; expired secrets will cause ingestion failures.
{% endhint %}

## Stage 2: Configure New Power BI Source in Euno

### Step 1: Access the Sources Page

* Open Sources.
* Select Add New Source and choose Power BI.

### Step 2: General Configuration

*Asterisk (\*) means a mandatory field.*

| Configuration               | Description                                                               |
| --------------------------- | ------------------------------------------------------------------------- |
| **Name**\*                  | Enter a name for your source (e.g., "Power BI – Finance").                |
| **Tenant ID**\*             | Your Microsoft Entra tenant ID.                                           |
| **Client ID**\*             | The application (client) ID of your SPN.                                  |
| **Client Secret**\*         | The client secret for the app registration.                               |
| **Power BI URL (optional)** | Base URL override for deep links (defaults to `https://app.powerbi.com`). |

### Step 3: Schedule

* Weekly: set specific days and times.
* Hourly: define the interval (e.g., every 8 hours).

### Step 4: Resource Cleanup

Keep your catalog current by choosing a cleanup strategy (see Resource Sponsorship in Euno):

* Immediate Cleanup: remove resources not detected in the most recent successful run.
* No Cleanup: keep resources indefinitely, even if no longer detected.

### Step 5: Advanced Settings (Optional)

| Configuration                | Description                                                                                                                                                                                                                |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Workspace/Object pattern** | Regular expressions to allow/exclude specific workspaces or objects (e.g., `.*` to match all).                                                                                                                             |
| **Observe users**            | When enabled, Euno will observe users from Entra ID and track which users access Power BI resources. Requires Microsoft Graph API permissions: User.Read.All, Group.Read.All, and GroupMember.Read.All (see Step 1 above). |
| **Observe groups**           | When enabled, Euno will observe security groups from Entra ID and their memberships. Requires Microsoft Graph API permissions: Group.Read.All and GroupMember.Read.All (see Step 1 above).                                 |
| **Observe content**          | When enabled (default), Euno fetches report content (page/tile definitions) for richer lineage. Disable to speed up crawls at the cost of tile-level lineage.                                                              |
| **Observe usage data**       | When enabled (default), Euno ingests Power BI activity log events to populate impression and distinct-user metrics.                                                                                                        |
| **Observe folders**          | When enabled (default), Euno discovers Fabric workspace folders and uses them as the parent container for reports, dashboards, and other items. Requires Fabric Core endpoint access on the workspace.                     |
| **Observe dataflows**        | When enabled (default), Euno discovers Power BI dataflows and their lineage to upstream warehouse tables.                                                                                                                  |

## What Euno Discovers

* Workspaces (with member information when available)
* Datasets (semantic models)
* Reports and Pages
* Dashboards and Tiles
* Apps
* Model fields: Columns and Measures
* Users (when "Observe users" is enabled)
* User groups (when "Observe groups" is enabled)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.euno.ai/sources/business-intelligence/powerbi-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
