From d409c339e4be02f0da458b772878e26d0a04246a Mon Sep 17 00:00:00 2001 From: Onkar Ravgan Date: Wed, 14 Jun 2023 17:00:08 +0530 Subject: [PATCH] Fix 10689: Added Powerbi Datamodels (#11923) --- .../source/dashboard/dashboard_service.py | 16 +- .../source/dashboard/powerbi/client.py | 17 + .../source/dashboard/powerbi/metadata.py | 472 ++++++++++++++---- .../source/dashboard/powerbi/models.py | 36 ++ ingestion/tests/cli_e2e/test_cli_powerbi.py | 12 +- .../connectors/dashboard/powerbi/airflow.md | 2 +- .../connectors/dashboard/powerbi/cli.md | 2 +- .../connectors/dashboard/powerbi/index.md | 18 +- .../powerbi/setup-powerbi-account.md | 2 +- .../connectors/powerbi/lineage-powerbi-om.png | Bin 0 -> 61415 bytes .../connectors/powerbi/lineage-powerbi.png | Bin 0 -> 69225 bytes .../dashboards/DashboardResource.java | 1 + .../json/schema/api/data/createDashboard.json | 3 + .../json/schema/entity/data/dashboard.json | 23 + .../entity/data/dashboardDataModel.json | 6 +- 15 files changed, 495 insertions(+), 115 deletions(-) create mode 100644 openmetadata-docs/images/v1.1.0/connectors/powerbi/lineage-powerbi-om.png create mode 100644 openmetadata-docs/images/v1.1.0/connectors/powerbi/lineage-powerbi.png diff --git a/ingestion/src/metadata/ingestion/source/dashboard/dashboard_service.py b/ingestion/src/metadata/ingestion/source/dashboard/dashboard_service.py index 212dcc933ae..6a6b2465bec 100644 --- a/ingestion/src/metadata/ingestion/source/dashboard/dashboard_service.py +++ b/ingestion/src/metadata/ingestion/source/dashboard/dashboard_service.py @@ -65,6 +65,12 @@ from metadata.utils.logger import ingestion_logger logger = ingestion_logger() +LINEAGE_MAP = { + Dashboard: "dashboard", + Table: "table", + DashboardDataModel: "dashboardDataModel", +} + class DashboardUsage(BaseModel): """ @@ -391,22 +397,18 @@ class DashboardServiceSource(TopologyRunnerMixin, Source, ABC): @staticmethod def _get_add_lineage_request( to_entity: Union[Dashboard, DashboardDataModel], - from_entity: Union[Table, DashboardDataModel], + from_entity: Union[Table, DashboardDataModel, Dashboard], ) -> Optional[AddLineageRequest]: if from_entity and to_entity: return AddLineageRequest( edge=EntitiesEdge( fromEntity=EntityReference( id=from_entity.id.__root__, - type="table" - if isinstance(from_entity, Table) - else "dashboardDataModel", + type=LINEAGE_MAP[type(from_entity)], ), toEntity=EntityReference( id=to_entity.id.__root__, - type="dashboard" - if isinstance(to_entity, Dashboard) - else "dashboardDataModel", + type=LINEAGE_MAP[type(to_entity)], ), ) ) diff --git a/ingestion/src/metadata/ingestion/source/dashboard/powerbi/client.py b/ingestion/src/metadata/ingestion/source/dashboard/powerbi/client.py index 789ac137553..60b40e54616 100644 --- a/ingestion/src/metadata/ingestion/source/dashboard/powerbi/client.py +++ b/ingestion/src/metadata/ingestion/source/dashboard/powerbi/client.py @@ -28,8 +28,10 @@ from metadata.ingestion.source.dashboard.powerbi.models import ( Group, GroupsResponse, PowerBIDashboard, + PowerBIReport, PowerBiTable, PowerBiToken, + ReportsResponse, TablesResponse, Tile, TilesResponse, @@ -130,6 +132,21 @@ class PowerBiApiClient: return None + def fetch_all_org_reports(self, group_id: str) -> Optional[List[PowerBIReport]]: + """Method to fetch all powerbi reports within the group + Returns: + List[PowerBIReport] + """ + try: + response_data = self.client.get(f"/myorg/groups/{group_id}/reports") + response = ReportsResponse(**response_data) + return response.value + except Exception as exc: # pylint: disable=broad-except + logger.debug(traceback.format_exc()) + logger.warning(f"Error fetching group reports: {exc}") + + return None + def fetch_all_org_datasets(self, group_id: str) -> Optional[List[Dataset]]: """Method to fetch all powerbi datasets within the group Returns: diff --git a/ingestion/src/metadata/ingestion/source/dashboard/powerbi/metadata.py b/ingestion/src/metadata/ingestion/source/dashboard/powerbi/metadata.py index bb8f9a13d78..98cc7ff8e60 100644 --- a/ingestion/src/metadata/ingestion/source/dashboard/powerbi/metadata.py +++ b/ingestion/src/metadata/ingestion/source/dashboard/powerbi/metadata.py @@ -11,28 +11,49 @@ """PowerBI source module""" import traceback -from typing import Any, Iterable, List, Optional +import uuid +from typing import Any, Iterable, List, Optional, Union from metadata.generated.schema.api.data.createChart import CreateChartRequest from metadata.generated.schema.api.data.createDashboard import CreateDashboardRequest +from metadata.generated.schema.api.data.createDashboardDataModel import ( + CreateDashboardDataModelRequest, +) from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest from metadata.generated.schema.entity.data.chart import Chart, ChartType -from metadata.generated.schema.entity.data.dashboard import Dashboard -from metadata.generated.schema.entity.data.table import Table +from metadata.generated.schema.entity.data.dashboard import Dashboard, DashboardType +from metadata.generated.schema.entity.data.dashboardDataModel import ( + DashboardDataModel, + DataModelType, +) +from metadata.generated.schema.entity.data.table import Column, DataType, Table from metadata.generated.schema.entity.services.connections.dashboard.powerBIConnection import ( PowerBIConnection, ) from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import ( OpenMetadataConnection, ) +from metadata.generated.schema.entity.services.dashboardService import ( + DashboardServiceType, +) from metadata.generated.schema.metadataIngestion.workflow import ( Source as WorkflowSource, ) from metadata.ingestion.api.source import InvalidSourceException from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource -from metadata.ingestion.source.dashboard.powerbi.models import Dataset, PowerBIDashboard +from metadata.ingestion.source.dashboard.powerbi.models import ( + Dataset, + PowerBIDashboard, + PowerBIReport, + PowerBiTable, +) +from metadata.ingestion.source.database.column_type_parser import ColumnTypeParser from metadata.utils import fqn -from metadata.utils.filters import filter_by_chart, filter_by_dashboard +from metadata.utils.filters import ( + filter_by_chart, + filter_by_dashboard, + filter_by_datamodel, +) from metadata.utils.helpers import clean_uri from metadata.utils.logger import ingestion_logger @@ -84,6 +105,11 @@ class PowerbiSource(DashboardServiceSource): or [] ) + # add the reports to the groups + group.reports.extend( + self.client.fetch_all_org_reports(group_id=group.id) or [] + ) + # add the datasets to the groups group.datasets.extend( self.client.fetch_all_org_datasets(group_id=group.id) or [] @@ -181,25 +207,33 @@ class PowerbiSource(DashboardServiceSource): continue yield dashboard_details - def get_dashboards_list(self) -> Optional[List[PowerBIDashboard]]: + def get_dashboards_list( + self, + ) -> Optional[List[Union[PowerBIDashboard, PowerBIReport]]]: """ Get List of all dashboards """ - return self.context.workspace.dashboards + return self.context.workspace.reports + self.context.workspace.dashboards - def get_dashboard_name(self, dashboard: PowerBIDashboard) -> str: + def get_dashboard_name( + self, dashboard: Union[PowerBIDashboard, PowerBIReport] + ) -> str: """ Get Dashboard Name """ - return dashboard.displayName + if isinstance(dashboard, PowerBIDashboard): + return dashboard.displayName + return dashboard.name - def get_dashboard_details(self, dashboard: PowerBIDashboard) -> PowerBIDashboard: + def get_dashboard_details( + self, dashboard: Union[PowerBIDashboard, PowerBIReport] + ) -> Union[PowerBIDashboard, PowerBIReport]: """ Get Dashboard Details """ return dashboard - def get_dashboard_url(self, workspace_id: str, dashboard_id: str) -> str: + def _get_dashboard_url(self, workspace_id: str, dashboard_id: str) -> str: """ Method to build the dashboard url """ @@ -208,7 +242,16 @@ class PowerbiSource(DashboardServiceSource): f"{workspace_id}/dashboards/{dashboard_id}" ) - def get_chart_url( + def _get_report_url(self, workspace_id: str, dashboard_id: str) -> str: + """ + Method to build the dashboard url + """ + return ( + f"{clean_uri(self.service_connection.hostPort)}/groups/" + f"{workspace_id}/reports/{dashboard_id}" + ) + + def _get_chart_url( self, report_id: Optional[str], workspace_id: str, dashboard_id: str ) -> str: """ @@ -222,74 +265,289 @@ class PowerbiSource(DashboardServiceSource): f"{workspace_id}/{chart_url_postfix}" ) + def list_datamodels(self) -> Iterable[Dataset]: + """ + Get All the Powerbi Datasets + """ + if self.source_config.includeDataModels: + try: + for workspace in self.workspace_data: + for dataset in workspace.datasets or []: + if filter_by_datamodel( + self.source_config.dataModelFilterPattern, dataset.name + ): + self.status.filter(dataset.name, "Data model filtered out.") + continue + yield dataset + except Exception as err: + logger.debug(traceback.format_exc()) + logger.error(f"Unexpected error fetching PowerBI datasets - {err}") + + def yield_bulk_datamodel( + self, dataset: Dataset + ) -> Iterable[CreateDashboardDataModelRequest]: + """ + Method to fetch DataModels in bulk + """ + try: + data_model_request = CreateDashboardDataModelRequest( + name=dataset.id, + displayName=dataset.name, + description=dataset.description, + service=self.context.dashboard_service.fullyQualifiedName.__root__, + dataModelType=DataModelType.PowerBIDataModel.value, + serviceType=DashboardServiceType.PowerBI.value, + columns=self._get_column_info(dataset), + ) + yield data_model_request + self.status.scanned(f"Data Model Scanned: {data_model_request.displayName}") + except Exception as exc: + error_msg = f"Error yielding Data Model [{dataset.name}]: {exc}" + self.status.failed( + name=dataset.name, + error=error_msg, + stack_trace=traceback.format_exc(), + ) + logger.error(error_msg) + logger.debug(traceback.format_exc()) + + def _get_child_columns(self, table: PowerBiTable) -> List[Column]: + """ + Extract the child columns from the fields + """ + columns = [] + for column in table.columns or []: + try: + parsed_column = { + "dataTypeDisplay": column.dataType + if column.dataType + else DataType.UNKNOWN.value, + "dataType": ColumnTypeParser.get_column_type( + column.dataType if column.dataType else None + ), + "name": str(uuid.uuid4()), + "displayName": column.name, + } + if column.dataType and column.dataType == DataType.ARRAY.value: + parsed_column["arrayDataType"] = DataType.UNKNOWN + columns.append(Column(**parsed_column)) + except Exception as exc: + logger.debug(traceback.format_exc()) + logger.warning(f"Error processing datamodel nested column: {exc}") + return columns + + def _get_column_info(self, dataset: Dataset) -> Optional[List[Column]]: + """ + Args: + data_source: DataSource + Returns: + Columns details for Data Model + """ + datasource_columns = [] + for table in dataset.tables or []: + try: + parsed_table = { + "dataTypeDisplay": "PowerBI Table", + "dataType": DataType.TABLE, + "name": str(uuid.uuid4()), + "displayName": table.name, + "description": table.description, + } + child_columns = self._get_child_columns(table=table) + if child_columns: + parsed_table["children"] = child_columns + datasource_columns.append(Column(**parsed_table)) + except Exception as exc: + logger.debug(traceback.format_exc()) + logger.warning(f"Error to yield datamodel column: {exc}") + return datasource_columns + def yield_dashboard( - self, dashboard_details: PowerBIDashboard + self, dashboard_details: Union[PowerBIDashboard, PowerBIReport] ) -> Iterable[CreateDashboardRequest]: """ Method to Get Dashboard Entity, Dashboard Charts & Lineage """ - dashboard_request = CreateDashboardRequest( - name=dashboard_details.id, - dashboardUrl=self.get_dashboard_url( - workspace_id=self.context.workspace.id, - dashboard_id=dashboard_details.id, - ), - displayName=dashboard_details.displayName, - description="", - charts=[ - fqn.build( - self.metadata, - entity_type=Chart, - service_name=self.context.dashboard_service.fullyQualifiedName.__root__, - chart_name=chart.name.__root__, + try: + if isinstance(dashboard_details, PowerBIDashboard): + dashboard_request = CreateDashboardRequest( + name=dashboard_details.id, + dashboardUrl=self._get_dashboard_url( + workspace_id=self.context.workspace.id, + dashboard_id=dashboard_details.id, + ), + displayName=dashboard_details.displayName, + dashboardType=DashboardType.Dashboard, + charts=[ + fqn.build( + self.metadata, + entity_type=Chart, + service_name=self.context.dashboard_service.fullyQualifiedName.__root__, + chart_name=chart.name.__root__, + ) + for chart in self.context.charts + ], + service=self.context.dashboard_service.fullyQualifiedName.__root__, ) - for chart in self.context.charts - ], - service=self.context.dashboard_service.fullyQualifiedName.__root__, - ) - yield dashboard_request - self.register_record(dashboard_request=dashboard_request) + else: + dashboard_request = CreateDashboardRequest( + name=dashboard_details.id, + dashboardType=DashboardType.Report, + dashboardUrl=self._get_report_url( + workspace_id=self.context.workspace.id, + dashboard_id=dashboard_details.id, + ), + displayName=dashboard_details.name, + service=self.context.dashboard_service.fullyQualifiedName.__root__, + ) + yield dashboard_request + self.register_record(dashboard_request=dashboard_request) + except Exception as exc: # pylint: disable=broad-except + logger.debug(traceback.format_exc()) + logger.error(f"Error creating dashboard [{dashboard_details}]: {exc}") - def yield_dashboard_lineage_details( - self, dashboard_details: PowerBIDashboard, db_service_name: str - ) -> Optional[Iterable[AddLineageRequest]]: + def create_report_dashboard_lineage( + self, dashboard_details: PowerBIDashboard + ) -> Iterable[CreateDashboardRequest]: """ - Get lineage between dashboard and data sources + create lineage between report and dashboard """ try: charts = dashboard_details.tiles + dashboard_fqn = fqn.build( + self.metadata, + entity_type=Dashboard, + service_name=self.config.serviceName, + dashboard_name=dashboard_details.id, + ) + dashboard_entity = self.metadata.get_by_name( + entity=Dashboard, + fqn=dashboard_fqn, + ) for chart in charts or []: - dataset = self.fetch_dataset_from_workspace(chart.datasetId) - if dataset: - for table in dataset.tables: - table_name = table.name + report = self._fetch_report_from_workspace(chart.reportId) + if report: + report_fqn = fqn.build( + self.metadata, + entity_type=Dashboard, + service_name=self.config.serviceName, + dashboard_name=report.id, + ) + report_entity = self.metadata.get_by_name( + entity=Dashboard, + fqn=report_fqn, + ) - from_fqn = fqn.build( - self.metadata, - entity_type=Table, - service_name=db_service_name, - database_name=None, - schema_name=None, - table_name=table_name, + if report_entity and dashboard_entity: + yield self._get_add_lineage_request( + to_entity=dashboard_entity, from_entity=report_entity ) - from_entity = self.metadata.get_by_name( - entity=Table, - fqn=from_fqn, - ) - to_fqn = fqn.build( - self.metadata, - entity_type=Dashboard, - service_name=self.config.serviceName, - dashboard_name=dashboard_details.id, - ) - to_entity = self.metadata.get_by_name( - entity=Dashboard, - fqn=to_fqn, - ) - if from_entity and to_entity: - yield self._get_add_lineage_request( - to_entity=to_entity, from_entity=from_entity - ) + except Exception as exc: # pylint: disable=broad-except + logger.debug(traceback.format_exc()) + logger.error(f"Error to yield report and dashboard lineage details: {exc}") + + def create_datamodel_report_lineage( + self, db_service_name: str, dashboard_details: PowerBIReport + ) -> Iterable[CreateDashboardRequest]: + """ + create the lineage between datamodel and report + """ + try: + report_fqn = fqn.build( + self.metadata, + entity_type=Dashboard, + service_name=self.config.serviceName, + dashboard_name=dashboard_details.id, + ) + report_entity = self.metadata.get_by_name( + entity=Dashboard, + fqn=report_fqn, + ) + + dataset = self._fetch_dataset_from_workspace(dashboard_details.datasetId) + if dataset: + datamodel_fqn = fqn.build( + self.metadata, + entity_type=DashboardDataModel, + service_name=self.config.serviceName, + data_model_name=dataset.id, + ) + datamodel_entity = self.metadata.get_by_name( + entity=DashboardDataModel, + fqn=datamodel_fqn, + ) + + if datamodel_entity and report_entity: + yield self._get_add_lineage_request( + to_entity=report_entity, from_entity=datamodel_entity + ) + + # create the lineage between table and datamodel + yield from self.create_table_datamodel_lineage( + db_service_name=db_service_name, + tables=dataset.tables, + datamodel_entity=datamodel_entity, + ) + except Exception as exc: # pylint: disable=broad-except + logger.debug(traceback.format_exc()) + logger.error( + f"Error to yield datamodel and report lineage details for DB service name [{db_service_name}]: {exc}" + ) + + def create_table_datamodel_lineage( + self, + db_service_name: str, + tables: Optional[List[PowerBiTable]], + datamodel_entity: Optional[DashboardDataModel], + ): + """ + Method to create lineage between table and datamodels + """ + for table in tables or []: + try: + table_fqn = fqn.build( + self.metadata, + entity_type=Table, + service_name=db_service_name, + database_name=None, + schema_name=None, + table_name=table.name, + ) + table_entity = self.metadata.get_by_name( + entity=Table, + fqn=table_fqn, + ) + + if table_entity and datamodel_entity: + yield self._get_add_lineage_request( + to_entity=datamodel_entity, from_entity=table_entity + ) + except Exception as exc: # pylint: disable=broad-except + logger.debug(traceback.format_exc()) + logger.error( + f"Error to yield datamodel lineage details for DB service name [{db_service_name}]: {exc}" + ) + + def yield_dashboard_lineage_details( + self, + dashboard_details: Union[PowerBIDashboard, PowerBIReport], + db_service_name: str, + ) -> Iterable[AddLineageRequest]: + """ + We will build the logic to build the logic as below + tables - datamodel - report - dashboard + """ + try: + if isinstance(dashboard_details, PowerBIReport): + yield from self.create_datamodel_report_lineage( + db_service_name=db_service_name, dashboard_details=dashboard_details + ) + + if isinstance(dashboard_details, PowerBIDashboard): + yield from self.create_report_dashboard_lineage( + dashboard_details=dashboard_details + ) + except Exception as exc: # pylint: disable=broad-except logger.debug(traceback.format_exc()) logger.error( @@ -297,7 +555,7 @@ class PowerbiSource(DashboardServiceSource): ) def yield_dashboard_chart( - self, dashboard_details: PowerBIDashboard + self, dashboard_details: Union[PowerBIDashboard, PowerBIReport] ) -> Optional[Iterable[CreateChartRequest]]: """Get chart method Args: @@ -305,37 +563,39 @@ class PowerbiSource(DashboardServiceSource): Returns: Iterable[Chart] """ - charts = dashboard_details.tiles - for chart in charts or []: - try: - chart_title = chart.title - chart_display_name = chart_title if chart_title else chart.id - if filter_by_chart( - self.source_config.chartFilterPattern, chart_display_name - ): - self.status.filter(chart_display_name, "Chart Pattern not Allowed") - continue - yield CreateChartRequest( - name=chart.id, - displayName=chart_display_name, - description="", - chartType=ChartType.Other.value, - chartUrl=self.get_chart_url( - report_id=chart.reportId, - workspace_id=self.context.workspace.id, - dashboard_id=dashboard_details.id, - ), - service=self.context.dashboard_service.fullyQualifiedName.__root__, - ) - self.status.scanned(chart_display_name) - except Exception as exc: - name = chart.title - error = f"Error creating chart [{name}]: {exc}" - logger.debug(traceback.format_exc()) - logger.warning(error) - self.status.failed(name, error, traceback.format_exc()) + if isinstance(dashboard_details, PowerBIDashboard): + charts = dashboard_details.tiles + for chart in charts or []: + try: + chart_title = chart.title + chart_display_name = chart_title if chart_title else chart.id + if filter_by_chart( + self.source_config.chartFilterPattern, chart_display_name + ): + self.status.filter( + chart_display_name, "Chart Pattern not Allowed" + ) + continue + yield CreateChartRequest( + name=chart.id, + displayName=chart_display_name, + chartType=ChartType.Other.value, + chartUrl=self._get_chart_url( + report_id=chart.reportId, + workspace_id=self.context.workspace.id, + dashboard_id=dashboard_details.id, + ), + service=self.context.dashboard_service.fullyQualifiedName.__root__, + ) + self.status.scanned(chart_display_name) + except Exception as exc: + name = chart.title + error = f"Error creating chart [{name}]: {exc}" + logger.debug(traceback.format_exc()) + logger.warning(error) + self.status.failed(name, error, traceback.format_exc()) - def fetch_dataset_from_workspace( + def _fetch_dataset_from_workspace( self, dataset_id: Optional[str] ) -> Optional[Dataset]: """ @@ -352,3 +612,21 @@ class PowerbiSource(DashboardServiceSource): ) return dataset_data return None + + def _fetch_report_from_workspace( + self, report_id: Optional[str] + ) -> Optional[Dataset]: + """ + Method to search the report using id in the workspace dict + """ + if report_id: + report_data = next( + ( + report + for report in self.context.workspace.reports or [] + if report.id == report_id + ), + None, + ) + return report_data + return None diff --git a/ingestion/src/metadata/ingestion/source/dashboard/powerbi/models.py b/ingestion/src/metadata/ingestion/source/dashboard/powerbi/models.py index 496d8a3e545..806a15c2699 100644 --- a/ingestion/src/metadata/ingestion/source/dashboard/powerbi/models.py +++ b/ingestion/src/metadata/ingestion/source/dashboard/powerbi/models.py @@ -44,6 +44,17 @@ class PowerBIDashboard(BaseModel): tiles: Optional[List[Tile]] = [] +class PowerBIReport(BaseModel): + """ + PowerBI PowerBIReport Model + Definition: https://learn.microsoft.com/en-us/rest/api/power-bi/reports/get-report#report + """ + + id: str + name: str + datasetId: Optional[str] + + class DashboardsResponse(BaseModel): """ PowerBI DashboardsResponse Model @@ -54,6 +65,16 @@ class DashboardsResponse(BaseModel): value: List[PowerBIDashboard] +class ReportsResponse(BaseModel): + """ + PowerBI ReportsResponse Model + Definition: https://learn.microsoft.com/en-us/rest/api/power-bi/reports/get-reports-in-group + """ + + odata_context: str = Field(alias="@odata.context") + value: List[PowerBIReport] + + class TilesResponse(BaseModel): """ PowerBI TilesResponse Model @@ -64,6 +85,17 @@ class TilesResponse(BaseModel): value: List[Tile] +class PowerBiColumns(BaseModel): + """ + PowerBI Column Model + Definition: https://learn.microsoft.com/en-us/rest/api/power-bi/push-datasets/datasets-get-tables-in-group#column + """ + + name: str + dataType: Optional[str] + columnType: Optional[str] + + class PowerBiTable(BaseModel): """ PowerBI Table Model @@ -71,6 +103,8 @@ class PowerBiTable(BaseModel): """ name: str + columns: Optional[List[PowerBiColumns]] + description: Optional[str] class TablesResponse(BaseModel): @@ -92,6 +126,7 @@ class Dataset(BaseModel): id: str name: str tables: Optional[List[PowerBiTable]] = [] + description: Optional[str] class DatasetResponse(BaseModel): @@ -115,6 +150,7 @@ class Group(BaseModel): type: Optional[str] state: Optional[str] dashboards: Optional[List[PowerBIDashboard]] = [] + reports: Optional[List[PowerBIReport]] = [] datasets: Optional[List[Dataset]] = [] diff --git a/ingestion/tests/cli_e2e/test_cli_powerbi.py b/ingestion/tests/cli_e2e/test_cli_powerbi.py index 21bf89d94a0..2861015a7b6 100644 --- a/ingestion/tests/cli_e2e/test_cli_powerbi.py +++ b/ingestion/tests/cli_e2e/test_cli_powerbi.py @@ -56,22 +56,22 @@ class PowerBICliTest(CliCommonDashboard.TestSuite): return [] def expected_entities(self) -> int: - return 74 + return 91 def expected_lineage(self) -> int: - return 6 + return 58 def expected_tags(self) -> int: return 0 def expected_not_included_entities(self) -> int: - return 74 + return 82 def expected_not_included_sink_entities(self) -> int: - return 81 + return 127 def expected_filtered_mix(self) -> int: - return 14 + return 19 def expected_filtered_sink_mix(self) -> int: - return 12 + return 36 diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/airflow.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/airflow.md index d148eb7ad51..2f54557d062 100644 --- a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/airflow.md +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/airflow.md @@ -11,7 +11,7 @@ slug: /connectors/dashboard/powerbi/airflow | Charts | {% icon iconName="check" /%} | | Owners | {% icon iconName="cross" /%} | | Tags | {% icon iconName="cross" /%} | -| Datamodels | {% icon iconName="cross" /%} | +| Datamodels | {% icon iconName="check" /%} | | Lineage | {% icon iconName="check" /%} | In this section, we provide guides and references to use the PowerBI connector. diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/cli.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/cli.md index 9d9e8498cdb..7ae6cf2313a 100644 --- a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/cli.md +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/cli.md @@ -11,7 +11,7 @@ slug: /connectors/dashboard/powerbi/cli | Charts | {% icon iconName="check" /%} | | Owners | {% icon iconName="cross" /%} | | Tags | {% icon iconName="cross" /%} | -| Datamodels | {% icon iconName="cross" /%} | +| Datamodels | {% icon iconName="check" /%} | | Lineage | {% icon iconName="check" /%} | In this section, we provide guides and references to use the PowerBI connector. diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/index.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/index.md index ca5a48da635..f7e18216b8b 100644 --- a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/index.md +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/index.md @@ -11,7 +11,7 @@ slug: /connectors/dashboard/powerbi | Charts | {% icon iconName="check" /%} | | Owners | {% icon iconName="cross" /%} | | Tags | {% icon iconName="cross" /%} | -| Datamodels | {% icon iconName="cross" /%} | +| Datamodels | {% icon iconName="check" /%} | | Lineage | {% icon iconName="check" /%} | In this section, we provide guides and references to use the PowerBI connector. @@ -359,6 +359,22 @@ caption="View the Ingestion Pipeline from the Service Page" /%} {% /stepsContainer %} +## PowerBI Lineage + +We are creating the lineage between `Tables - DataSources - Reports - Dashboards`. + +Below images show the lineage as shown in PowerBI and the lineage displayed in OpenMetadata + +{% image + src="/images/v1.1.0/connectors/powerbi/lineage-powerbi.png" + alt="PowerBI Lineage" + caption="Lineage in PowerBI" /%} + +{% image + src="/images/v1.1.0/connectors/powerbi/lineage-powerbi-om.png" + alt="PowerBI Lineage OpenMetadata" + caption="PowerBI Lineage in OpenMetadata" /%} + ## Troubleshooting ### Workflow Deployment Error diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/setup-powerbi-account.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/setup-powerbi-account.md index ebae321d3ba..b6a037c4649 100644 --- a/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/setup-powerbi-account.md +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/dashboard/powerbi/setup-powerbi-account.md @@ -24,7 +24,7 @@ The required permissions are: - `Dashboard.Read.All` - `Dashboard.ReadWrite.All` -Optional Permissions: (Without granting these permissions, the dataset information cannot be retrieved and the lineage processing will be skipped) +Optional Permissions: (Without granting these permissions, the dataset information cannot be retrieved and the datamodel and lineage processing will be skipped) - `Dataset.Read.All` - `Dataset.ReadWrite.All` diff --git a/openmetadata-docs/images/v1.1.0/connectors/powerbi/lineage-powerbi-om.png b/openmetadata-docs/images/v1.1.0/connectors/powerbi/lineage-powerbi-om.png new file mode 100644 index 0000000000000000000000000000000000000000..96df0221c108692e260ce8268d5a6b532872b1ff GIT binary patch literal 61415 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 literal 0 HcmV?d00001 diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/dashboards/DashboardResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/dashboards/DashboardResource.java index 0b9725a2d49..02f985b7b06 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/dashboards/DashboardResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/dashboards/DashboardResource.java @@ -434,6 +434,7 @@ public class DashboardResource extends EntityResource