mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-10-16 19:28:21 +00:00
issue-9281: column lineage for powerbi (#16135)
* issue-9281: col. lineage for powerbi * issue-9281: error handling for columns fqn
This commit is contained in:
parent
2edfd2ef96
commit
f5a176c5f2
@ -514,7 +514,7 @@ class PowerbiSource(DashboardServiceSource):
|
|||||||
datamodel_fqn = fqn.build(
|
datamodel_fqn = fqn.build(
|
||||||
self.metadata,
|
self.metadata,
|
||||||
entity_type=DashboardDataModel,
|
entity_type=DashboardDataModel,
|
||||||
service_name=self.config.serviceName,
|
service_name=self.context.get().dashboard_service,
|
||||||
data_model_name=dataset.id,
|
data_model_name=dataset.id,
|
||||||
)
|
)
|
||||||
datamodel_entity = self.metadata.get_by_name(
|
datamodel_entity = self.metadata.get_by_name(
|
||||||
@ -552,6 +552,25 @@ class PowerbiSource(DashboardServiceSource):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_data_model_column_fqn(
|
||||||
|
data_model_entity: DashboardDataModel, column: str
|
||||||
|
) -> Optional[str]:
|
||||||
|
"""
|
||||||
|
Get fqn of column if exist in data model entity or its child columns
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
if not data_model_entity:
|
||||||
|
return None
|
||||||
|
for tbl_column in data_model_entity.columns:
|
||||||
|
for child_column in tbl_column.children or []:
|
||||||
|
if column.lower() == child_column.name.__root__.lower():
|
||||||
|
return child_column.fullyQualifiedName.__root__
|
||||||
|
return None
|
||||||
|
except Exception as exc:
|
||||||
|
logger.debug(f"Error to get data_model_column_fqn {exc}")
|
||||||
|
logger.debug(traceback.format_exc())
|
||||||
|
|
||||||
def _get_table_and_datamodel_lineage(
|
def _get_table_and_datamodel_lineage(
|
||||||
self,
|
self,
|
||||||
db_service_name: str,
|
db_service_name: str,
|
||||||
@ -576,8 +595,14 @@ class PowerbiSource(DashboardServiceSource):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if table_entity and datamodel_entity:
|
if table_entity and datamodel_entity:
|
||||||
|
columns_list = [column.name for column in table.columns]
|
||||||
|
column_lineage = self._get_column_lineage(
|
||||||
|
table_entity, datamodel_entity, columns_list
|
||||||
|
)
|
||||||
return self._get_add_lineage_request(
|
return self._get_add_lineage_request(
|
||||||
to_entity=datamodel_entity, from_entity=table_entity
|
to_entity=datamodel_entity,
|
||||||
|
from_entity=table_entity,
|
||||||
|
column_lineage=column_lineage,
|
||||||
)
|
)
|
||||||
except Exception as exc: # pylint: disable=broad-except
|
except Exception as exc: # pylint: disable=broad-except
|
||||||
return Either(
|
return Either(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user