mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-11-04 04:29:13 +00:00 
			
		
		
		
	ISSUE-17045: Modified to create column linage even when upstream columns and data source columns are one-to-many (#17112)
Co-authored-by: Pere Miquel Brull <peremiquelbrull@gmail.com>
This commit is contained in:
		
							parent
							
								
									3d8d8566cc
								
							
						
					
					
						commit
						43a244fbf1
					
				@ -313,17 +313,18 @@ class TableauSource(DashboardServiceSource):
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _get_data_model_column_fqn(
 | 
			
		||||
        data_model_entity: DashboardDataModel, column: str
 | 
			
		||||
    ) -> Optional[str]:
 | 
			
		||||
    ) -> Optional[List[str]]:
 | 
			
		||||
        """
 | 
			
		||||
        Get fqn of column if exist in table entity
 | 
			
		||||
        """
 | 
			
		||||
        if not data_model_entity:
 | 
			
		||||
            return None
 | 
			
		||||
        columns = []
 | 
			
		||||
        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
 | 
			
		||||
                    columns.append(child_column.fullyQualifiedName.root)
 | 
			
		||||
        return columns
 | 
			
		||||
 | 
			
		||||
    def _get_column_lineage(  # pylint: disable=arguments-differ
 | 
			
		||||
        self,
 | 
			
		||||
@ -342,13 +343,15 @@ class TableauSource(DashboardServiceSource):
 | 
			
		||||
                    from_column = get_column_fqn(
 | 
			
		||||
                        table_entity=table_entity, column=column.name
 | 
			
		||||
                    )
 | 
			
		||||
                    to_column = self._get_data_model_column_fqn(
 | 
			
		||||
                    to_columns = self._get_data_model_column_fqn(
 | 
			
		||||
                        data_model_entity=data_model_entity,
 | 
			
		||||
                        column=column.id,
 | 
			
		||||
                    )
 | 
			
		||||
                    column_lineage.append(
 | 
			
		||||
                        ColumnLineage(fromColumns=[from_column], toColumn=to_column)
 | 
			
		||||
                    )
 | 
			
		||||
                    for to_column in to_columns:
 | 
			
		||||
                        column_lineage.append(
 | 
			
		||||
                            ColumnLineage(fromColumns=[from_column], toColumn=to_column)
 | 
			
		||||
                        )
 | 
			
		||||
            return column_lineage
 | 
			
		||||
        except Exception as exc:
 | 
			
		||||
            logger.debug(f"Error to get column lineage: {exc}")
 | 
			
		||||
            logger.debug(traceback.format_exc())
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user