diff --git a/docs/cloud/integrations/bi/power-bi.mdx b/docs/cloud/integrations/bi/power-bi.mdx index 4274b5175..e16244bfa 100644 --- a/docs/cloud/integrations/bi/power-bi.mdx +++ b/docs/cloud/integrations/bi/power-bi.mdx @@ -2,14 +2,41 @@ title: "Power BI" --- - - - -} -> - Click for details - \ No newline at end of file +After you connect Power BI, Elementary will automatically and continuously extend the lineage to the report/dashboard level. +This will provide you end-to-end data lineage to understand your downstream dependencies, called exposures. + +### Create & authorize a Service Principal + +Elementary makes use of a service principal secret to authenticate with the Power BI API on your behalf. +Please follow the [official guide by Microsoft](https://learn.microsoft.com/en-us/power-bi/developer/embedded/embed-service-principal) for creating and authorizing a service principal for Power BI. +Make sure you're going through all steps up until but not including "Step 5 - Embed your content" (Which isn't currently our goal). +Also make sure that the security group you've created is allowed access to every relevant Workspace in your account. +Do NOTICE - "My Workspace" isn't accessible by service principals and thus can't be analyzed with our product. + + +### Allow Power BI's Admin API +Go to Power BI's Admin portal -> Tenant Settings -> Admin API settings +Enable the following features, and apply at least for the Service principal's security group (created on the last step): +- `Service principals can access read-only admin APIs` +- `Enhance admin APIs responses with detailed metadata` +- `Enhance admin APIs responses with DAX and mashup expressions` + +Those features will allow Elementary to get all required info for computing the data lineage graph. + +### Connecting Power BI to Elementary + +Navigate to the **Account settings > Environments** and choose the environment to which you would like to connect Elementary. +Choose the Power BI connection and provide the following details to validate and complete the integration. + +- **Tenant:** Your Microsoft tenant which is usaully your company's domain. e.g. `my-company.com` +- **Client ID**: The client ID of the new Microsoft Entra app you've created on the first step. +- **Client Secret:** The new client secret you've created on the first step. + + +### Limitations + +- Due to service principal limitations - we cannot analyze the default "My Workspace" Workspace. +- The lineage currently doesn't apply to the following entities: (But would be in the future) + - Paginated Reports + - Dataflows + - Datamarts diff --git a/elementary/cli/upgrade.py b/elementary/cli/upgrade.py index de23391b3..c028a706f 100644 --- a/elementary/cli/upgrade.py +++ b/elementary/cli/upgrade.py @@ -3,10 +3,16 @@ import click from packaging import version +from elementary.config.config import Config from elementary.utils import package def recommend_version_upgrade(): + config = Config() + + if config.disable_elementary_version_check: + return + try: latest_version = package.get_latest_package_version() current_version = package.get_package_version() diff --git a/elementary/config/config.py b/elementary/config/config.py index db02f405c..35741ac1f 100644 --- a/elementary/config/config.py +++ b/elementary/config/config.py @@ -190,6 +190,10 @@ def __init__( run_dbt_deps_if_needed, config.get("run_dbt_deps_if_needed"), True ) + self.disable_elementary_version_check = config.get( + "disable_elementary_version_check", False + ) + def _load_configuration(self) -> dict: if not os.path.exists(self.config_dir): os.makedirs(self.config_dir) diff --git a/elementary/monitor/data_monitoring/report/index.html b/elementary/monitor/data_monitoring/report/index.html index abe3cb88f..462ab1af5 100644 --- a/elementary/monitor/data_monitoring/report/index.html +++ b/elementary/monitor/data_monitoring/report/index.html @@ -30,7 +30,7 @@