Skip to main content


Module powerbi


Important Capabilities

Extract OwnershipEnabled by default
This plugin extracts the following:
  • Power BI dashboards, tiles, datasets
  • Names, descriptions and URLs of dashboard and tile
  • Owners of dashboards

Configuration Notes

See the

  1. Microsoft AD App Creation doc for the steps to create a app client ID and secret.
  2. Login to Power BI as Admin and from Tenant settings allow below permissions.
    • Allow service principles to use Power BI APIs
    • Allow service principals to use read-only Power BI admin APIs
    • Enhance admin APIs responses with detailed metadata

Install the Plugin

pip install 'acryl-datahub[powerbi]'

Quickstart Recipe

Check out the following recipe to get started with ingestion! See below for full configuration options.

For general pointers on writing and running a recipe, see our main recipe guide

type: "powerbi"
# Your Power BI tenant identifier
tenant_id: a949d688-67c0-4bf1-a344-e939411c6c0a
# Ingest elements of below PowerBi Workspace into Datahub
workspace_id: 4bd10256-e999-45dd-8e56-571c77153a5f
# Workspace's dataset environments (PROD, DEV, QA, STAGE)
env: DEV
# Azure AD App client identifier
client_id: foo
# Azure AD App client secret
client_secret: bar
# dataset_type_mapping is fixed mapping of Power BI datasources type to equivalent Datahub "data platform" dataset
PostgreSql: postgres
Oracle: oracle

# sink configs

Config Details

Note that a . is used to denote nested fields in the YAML recipe.

View All Configuration Options
envstringThe environment that all assets produced by this connector belong toPROD
tenant_idstringPower BI tenant identifier.None
workspace_idstringPower BI workspace identifier.None
dataset_type_mappingDict[str,string]Mapping of Power BI datasource type to Datahub dataset.
client_idstringAzure AD App client identifier.None
client_secretstringAzure AD App client secret.None
scan_timeoutintegertime in seconds to wait for Power BI metadata scan result.60
dashboard_patternAllowDenyPattern (see below for fields){'allow': ['.*'], 'deny': [], 'ignoreCase': True, 'alphabet': '[A-Za-z0-9 _.-]'}
dashboard_pattern.allowArray of stringList of regex patterns for process groups to include in ingestion['.*']
dashboard_pattern.denyArray of stringList of regex patterns for process groups to exclude from ingestion.[]
dashboard_pattern.ignoreCasebooleanWhether to ignore case sensitivity during pattern matching.True
dashboard_pattern.alphabetstringAllowed alphabets pattern[A-Za-z0-9 _.-]
chart_patternAllowDenyPattern (see below for fields){'allow': ['.*'], 'deny': [], 'ignoreCase': True, 'alphabet': '[A-Za-z0-9 _.-]'}
chart_pattern.allowArray of stringList of regex patterns for process groups to include in ingestion['.*']
chart_pattern.denyArray of stringList of regex patterns for process groups to exclude from ingestion.[]
chart_pattern.ignoreCasebooleanWhether to ignore case sensitivity during pattern matching.True
chart_pattern.alphabetstringAllowed alphabets pattern[A-Za-z0-9 _.-]

Concept mapping

Power BIDatahub
Dataset, DatasourceDataset

If Tile is created from report then Chart.externalUrl is set to Report.webUrl.

Code Coordinates

  • Class Name: datahub.ingestion.source.powerbi.PowerBiDashboardSource
  • Browse on GitHub


If you've got any questions on configuring ingestion for PowerBI, feel free to ping us on our Slack