@@ -675,6 +675,7 @@ def create_report_dashboard_lineage(
675675 ) -> Iterable [Either [CreateDashboardRequest ]]:
676676 """Create lineage between report and dashboard"""
677677 try :
678+ logger .debug (f"Processing to create report and dashboard lineage for dashboard: { dashboard_details .id } " )
678679 charts = dashboard_details .tiles
679680 dashboard_fqn = fqn .build (
680681 self .metadata ,
@@ -686,9 +687,22 @@ def create_report_dashboard_lineage(
686687 entity = Dashboard ,
687688 fqn = dashboard_fqn ,
688689 )
690+ if not dashboard_entity :
691+ logger .debug (
692+ f"Dashboard entity not found to create lineage between report and dashboard for dashboard: { dashboard_details .id } "
693+ )
694+ return
689695 for chart in charts or []:
696+ if chart .reportId :
697+ logger .debug (f"Dashboard's chart { chart .id } is linked with report id: { str (chart .reportId )} " ) # noqa: RUF010
698+ else :
699+ logger .debug (f"Dashboard's chart { chart .id } is not linked with any report" )
700+ continue
690701 report = self ._fetch_report_from_workspace (chart .reportId )
691702 if report :
703+ logger .debug (
704+ f"Fetched report details for report id: { str (chart .reportId )} from workspace data to create lineage with dashboard: { dashboard_details .id } " # noqa: RUF010
705+ )
692706 report_fqn = fqn .build (
693707 self .metadata ,
694708 entity_type = Dashboard ,
@@ -699,9 +713,19 @@ def create_report_dashboard_lineage(
699713 entity = Dashboard ,
700714 fqn = report_fqn ,
701715 )
702-
716+ if not report_entity :
717+ logger .debug (
718+ f"Report entity not found to create lineage between report={ report .id } and dashboard={ dashboard_details .id } "
719+ )
703720 if report_entity and dashboard_entity :
721+ logger .debug (
722+ f"Creating lineage between report={ report .id } and dashboard={ dashboard_details .id } "
723+ )
704724 yield self ._get_add_lineage_request (to_entity = dashboard_entity , from_entity = report_entity )
725+ else :
726+ logger .debug (
727+ f"Could not fetch report with report id: { str (chart .reportId )} from workspace data to create lineage with dashboard: { dashboard_details .id } " # noqa: RUF010
728+ )
705729 except Exception as exc : # pylint: disable=broad-except
706730 yield Either (
707731 left = StackTraceError (
@@ -729,6 +753,8 @@ def _get_dataset_ids_from_report_datasources(self, report_id: str) -> List[str]:
729753 )
730754 if match :
731755 dataset_ids .append (match .group (1 ))
756+ if dataset_ids :
757+ logger .debug (f"Extracted dataset IDs from report datasources API call for report_id={ report_id } " )
732758 return dataset_ids
733759
734760 def create_datamodel_report_lineage (
@@ -740,6 +766,7 @@ def create_datamodel_report_lineage(
740766 create the lineage between datamodel and report
741767 """
742768 try :
769+ logger .debug (f"Processing to create datamodel and report lineage for report: { dashboard_details .id } " )
743770 report_fqn = fqn .build (
744771 self .metadata ,
745772 entity_type = Dashboard ,
@@ -750,10 +777,19 @@ def create_datamodel_report_lineage(
750777 entity = Dashboard ,
751778 fqn = report_fqn ,
752779 )
780+ if not report_entity :
781+ logger .debug (
782+ f"Report entity not found to create lineage between datamodel and report for report: { dashboard_details .id } "
783+ )
784+ return
753785 dataset_ids = []
754786 if dashboard_details .datasetId :
787+ logger .debug (f"Report linked datasetId is present in api response for report: { dashboard_details .id } " )
755788 dataset_ids = [dashboard_details .datasetId ]
756789 else :
790+ logger .debug (
791+ f"Processing to get report datasources from API to extract datasetIds for report: { dashboard_details .id } as datasetId is not present in api response"
792+ )
757793 dataset_ids = self ._get_dataset_ids_from_report_datasources (report_id = dashboard_details .id )
758794
759795 if dataset_ids :
@@ -768,6 +804,10 @@ def create_datamodel_report_lineage(
768804 entity = DashboardDataModel ,
769805 fqn = datamodel_fqn ,
770806 )
807+ if not datamodel_entity :
808+ logger .debug (
809+ f"Data model entity not found for dataset_id={ str (dataset_id )} while creating lineage with report={ str (dashboard_details .id )} " # noqa: RUF010
810+ )
771811 if datamodel_entity and report_entity :
772812 logger .debug (
773813 f"Creating lineage between datamodel={ str (dataset_id )} and report={ str (dashboard_details .id )} " # noqa: RUF010
@@ -778,7 +818,7 @@ def create_datamodel_report_lineage(
778818 )
779819 else :
780820 logger .debug (
781- f"Skipping datamodel and report lineage for { dashboard_details .id } as datasetId is not found"
821+ f"Skipping datamodel and report lineage for report: { dashboard_details .id } as datasetId is not found on api response and also could not be extracted from report datasources API call "
782822 )
783823
784824 except Exception as exc : # pylint: disable=broad-except
@@ -2062,7 +2102,7 @@ def _fetch_dataset_from_workspace(self, dataset_id: Optional[str]) -> Optional[D
20622102 return dataset_data
20632103 return None
20642104
2065- def _fetch_report_from_workspace (self , report_id : Optional [str ]) -> Optional [Dataset ]: # noqa: UP045
2105+ def _fetch_report_from_workspace (self , report_id : Optional [str ]) -> Optional [PowerBIReport ]: # noqa: UP045
20662106 """
20672107 Method to search the report using id in the workspace dict
20682108 """
0 commit comments