From 90b4933f96c93bd9af914253299d7d9e4c9276dc Mon Sep 17 00:00:00 2001 From: Onkar Ravgan Date: Fri, 16 Feb 2024 09:57:15 +0530 Subject: [PATCH] Added sql to tableau datamodels (#15197) --- .../source/dashboard/tableau/metadata.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ingestion/src/metadata/ingestion/source/dashboard/tableau/metadata.py b/ingestion/src/metadata/ingestion/source/dashboard/tableau/metadata.py index 72c44ad648c..24349ec3b27 100644 --- a/ingestion/src/metadata/ingestion/source/dashboard/tableau/metadata.py +++ b/ingestion/src/metadata/ingestion/source/dashboard/tableau/metadata.py @@ -152,6 +152,23 @@ class TableauSource(DashboardServiceSource): include_tags=self.source_config.includeTags, ) + def _get_datamodel_sql_query(self, data_model: DataSource) -> Optional[str]: + """ + Method to fetch the custom sql query from the tableau datamodels + """ + try: + sql_queries = [] + for table in data_model.upstreamTables or []: + for referenced_query in table.referencedByQueries or []: + sql_queries.append(referenced_query.query) + return "\n\n".join(sql_queries) or None + except Exception as exc: + logger.debug(traceback.format_exc()) + logger.warning( + f"Error processing queries for datamodel [{data_model.id}]: {exc}" + ) + return None + def yield_datamodel( self, dashboard_details: TableauDashboard ) -> Iterable[Either[CreateDashboardDataModelRequest]]: @@ -171,6 +188,7 @@ class TableauSource(DashboardServiceSource): dataModelType=DataModelType.TableauDataModel.value, serviceType=DashboardServiceType.Tableau.value, columns=self.get_column_info(data_model), + sql=self._get_datamodel_sql_query(data_model=data_model), ) yield Either(right=data_model_request) self.register_record_datamodel(datamodel_request=data_model_request)