Integrations
Breadcrumbs

PowerBI

Integration model

Metadata extraction

The following APIs are used to extract metadata from an object:

With these APIs it is possible to extract the following types of PowerBI objects:

  • APP

  • Workspace

  • Dataset (data model)

  • Report

  • Dashboard


The plugin extracts the following attributes, which must be named the same in the attribute_definition table, field name, for them to appear in the template:

Attribute name

Attribute type

Description

physicalName, name

INPUT_TEXT

object name

path

INPUT_TEXT

path to the object

infrastructure

SELECT

selected value

technology

SELECT

selected value

zone

SELECT

selected value


Additionally, the Azure API itself can return more attributes that, in the same way, must match attributes defined in the object template with the same name in order to appear in Anjana Data. When in doubt about the returned value, INPUT_TEXT will always accept any value.


App: https://learn.microsoft.com/en-us/rest/api/power-bi/admin/apps-get-apps-as-admin#adminapp  

  • The id field must be represented in Anjana as appId.

Workspace: https://learn.microsoft.com/en-us/rest/api/power-bi/admin/groups-get-groups-as-admin#admingroup  

  • The id field must be represented in Anjana as workspaceId.

  • The state field must be represented in Anjana as workspaceState.

  • The dataflows and workbook fields are not retrieved as they are a separate type of data that will be extracted in future versions.

  • The users field is not retrieved as it has been deprecated by PowerBI.

  • The information related to dashboards, datasets and reports is extracted as a list of names, with a specific field for each one.

  • The logAnalyticsWorkspace field is not retrieved due to API limitations.

  • The type field must be represented in Anjana as workspaceType.

Dataset (data model) : https://learn.microsoft.com/en-us/rest/api/power-bi/admin/datasets-get-datasets-in-group-as-admin  

  • The id field must be represented in Anjana as semanticModelId.

  • The tags field is not retrieved as it was only available in the Fabric API at the time of writing this document.

  • The users field is not retrieved as it has been deprecated by PowerBI.

  • The ContentProviderType field is not retrieved as it has been deprecated by PowerBI.

Report: https://learn.microsoft.com/en-us/rest/api/power-bi/admin/reports-get-reports-in-group-as-admin

  • The id field must be represented in Anjana as reportId.

  • The tags field is not retrieved as it was only available in the Fabric API at the time of writing this document.

  • The subscriptions and users fields are not retrieved as they have been deprecated by PowerBI.

Dashboard: https://learn.microsoft.com/en-us/rest/api/power-bi/admin/dashboards-get-dashboards-in-group-as-admin

  • The id field must be represented in Anjana as dashboardId.

  • The displayName field will be included in Anjana as the generic name field.

  • The tags field is not retrieved as it was only available in the Fabric API at the time of writing this document.

  • The subscriptions and users fields are not retrieved as they have been deprecated by PowerBI.

Tables with special characters in the name

This technology allows characters such as “/” in the name; if they are being used, the path-separator must be configured with a character other than “/”. See File extraction for more details.

Access management (On Roadmap)

Since the PowerBI API does not provide access to access management, the only way to make it possible is by delegating it through EntraID (Azure AD). To do this, two manual actions will be required for this mechanism to work:

  1. Permission assignment:

    1. Create a DSA and add Power BI objects.

      1. The group name must be entered in the physical_name field.

    2. This group must be assigned to each Power BI object (see Annexes)

  2. Synchronization:

    1. The synchronization process between Azure and PowerBI is neither automatic nor instantaneous.

    2. Force it if possible.

 

Required credentials

Metadata extraction

The following permissions are required:

  • Tenant.Read.All 


These permissions must be granted to the service principal to be used for the plugin's purpose. These permissions cannot be granted as Admin consent but must be delegated permissions:

  1. App Registration configuration

    1. Go to the Azure Portal.

    2. Navigate to Azure Active Directory > App registrations > + New registration.

    3. Provide a name for the application and select the account type (the most common is Accounts in this organizational directory only).

  2. Configure API Permissions

    1. Within the App Registration, navigate to API permissions.

    2. Click + Add a permission.

    3. Select Microsoft Power BI.

    4. Select Delegated permissions (not Application permissions).

    5. Search for and select the permissions the application needs as mentioned above.

  3. Generate a specific Azure security group to consume the PowerBI APIs

    1. Add the generated APP inside the group

    2. Add the group to the following existing option in PowerBI (see screenshot)

https://lh7-rt.googleusercontent.com/docsz/AD_4nXecrdWZgcnzYQuG970r8tJivPpPOiHk0cJF1Ur7UJP81EzPXbl7Y7N7CqnjNPs3_oHserXui6M29SVjFVVRvgWp84vv8TZEpnJgkqGwatqr6Pi2N_PBaRbIpcBBb-BTcMnelxL4-g?key=tEG1YCU5X1YeG_N2zrlbqw


In most scenarios, granting delegated permissions (Tenant.Read.All) is not necessary as long as we comply with point 3 described above

Access management (On Roadmap)

For access management, the user responsible for assigning a group to a PowerBI object (within the PowerBI application) must have Owner or Member permission over the Workspace where the object resides or from which an App is published.


Annexes

Group assignment to Report

https://lh7-rt.googleusercontent.com/docsz/AD_4nXdBK4CgeMIy3jl_kNHARNrYj4upGED86CLjPTXZXsLEkGekri5teYe6cV0FcvZeTeAhC6g4T9nGuAGApuNrcbml6i3utdZ9BiaUf2vky2uwfttSxeBTVOl1dOnGkwW-Kgxj081ZTHNxZF_l86TkYDONvEs?key=nnd5uwoFtUaM95mkaNApCQ
https://lh7-rt.googleusercontent.com/docsz/AD_4nXcYhVC7kg_GjVCUGJ7j2U52QjUU5kQYpx4n5Tj_zmaHEHK0R_F1kyKuYicAfj_P1jeOlCogoxqCH5tEUHPfmJ4tUTXSgXbyqyVrAtPKNxR5qni3e9DBlUTvoBuwO0es9HziExvlvO8bb9kacVyuvsUwNz7l?key=nnd5uwoFtUaM95mkaNApCQ


Group assignment to Dashboard

https://lh7-rt.googleusercontent.com/docsz/AD_4nXdDbvhRwA8DGEjerHiDTI1gBZs66MBfQAnci29QQ5eI1tGKAB2NMdu_7uPzTeuHyFBt7LuejcADdILTzHvgO25YVECaPWjN5m0IiXYRW-fica1QveQWEoLA9yVs2v4sV117mOR_5KtWUjfMa8iNMaFhUzNQ?key=nnd5uwoFtUaM95mkaNApCQ
https://lh7-rt.googleusercontent.com/docsz/AD_4nXcOjVxXA2QURjfzyVg_MloG3cF5TAjSaz16bRBd0wVvX_WKDNVphSwDWviw7M8u6drwQFxcO96N-Ysw4tcyA6oOJiEx9dWu-OIgZLWW9sr4k3Sanhjp0T9e6Ya3gfo9Da9hoVNLcORk6e8fGmP-6wDyLEM?key=nnd5uwoFtUaM95mkaNApCQ


Group assignment to Semantic Model

https://lh7-rt.googleusercontent.com/docsz/AD_4nXc7_6OoUtcKfVkw8yd-Vhu8LrqM2b2JIuglFsboFquw8pM4Vfi1NF_PP3u1mliItfdFOSRHCrTSbjTSoKmFkgfYBP5EceXr7R-3LJZ-9zrRxGHM-xvT4sZrUYqCStcnvvkT9wHJ7LU3UBvi2mxjx81EItri?key=nnd5uwoFtUaM95mkaNApCQ
https://lh7-rt.googleusercontent.com/docsz/AD_4nXfv0ts52crbWXzJP6gQkSHy1u_jiYDceGToRJ8x1AFiidrVgxaQANZ6K6vPqvDgw0yYRPpGfr6u3Cz4pVQT7EZKXa3Ju_TnXjwmdVGnZgpFG8fxkhL4J-sWsTCzMzWQaALv42lmbescmfPFUBeQNb1e-noW?key=nnd5uwoFtUaM95mkaNApCQ


Group assignment to APP

https://lh7-rt.googleusercontent.com/docsz/AD_4nXfLpFgnHxgzUw-93tpG-83WJUSKiPTipElEnk5UB5Z4fkoF2OPeDtBK_bSPPRPFRG-R2bwP7bBEbNdpwPrgckb6hvsS32Y737jzs_6b8CLingR6KJEzu_EAp4BcxKnSCJzIJnTM2te91NjdCF7OELEQgsTm?key=nnd5uwoFtUaM95mkaNApCQ
https://lh7-rt.googleusercontent.com/docsz/AD_4nXer35-tYX3fbD544yNtxKutw6e4Cvvv34zYLxfBBOaMMhwFf31seeaL_DbADUCsPdgxehoMqOp3AukH8PsZsc-QZBrOUXu20Ynr3gopW_J15hiAZh-hiHzJbjD6sXbXshzAg3TWb1RneOAvi-7mTT_Vp_u7?key=nnd5uwoFtUaM95mkaNApCQ