Fix tableau models to make fields optional (#11513)

This commit is contained in:
Mayur Singal 2023-05-10 12:23:44 +05:30 committed by GitHub
parent 0aa6c08cf6
commit be7b056d72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 21 deletions

View File

@ -416,12 +416,14 @@ class TableauSource(DashboardServiceSource):
service_name=db_service_name, service_name=db_service_name,
schema_name=table.schema_, schema_name=table.schema_,
table_name=table.name, table_name=table.name,
database_name=table.database.name, database_name=table.database.name if table.database else None,
) )
if table_fqn:
return self.metadata.get_by_name( return self.metadata.get_by_name(
entity=Table, entity=Table,
fqn=table_fqn, fqn=table_fqn,
) )
return None
@staticmethod @staticmethod
def get_column_info(sheet: Sheet) -> Optional[List[Column]]: def get_column_info(sheet: Sheet) -> Optional[List[Column]]:
@ -463,7 +465,7 @@ class TableauSource(DashboardServiceSource):
tables: Set[DatabaseTable] = set() tables: Set[DatabaseTable] = set()
for colum in sheet.datasourceFields: for colum in sheet.datasourceFields:
for table in colum.upstreamTables: for table in colum.upstreamTables:
if table.schema_ and table.name: if table.name:
table.name = table.name.split(" ")[0].strip() table.name = table.name.split(" ")[0].strip()
tables.add(table) tables.add(table)
return tables return tables

View File

@ -18,6 +18,8 @@ from typing import Any, Dict, List, Optional, Union
from pydantic import BaseModel, Extra, Field, validator from pydantic import BaseModel, Extra, Field, validator
from metadata.generated.schema.entity.data.chart import ChartType
class TableauBaseModel(BaseModel): class TableauBaseModel(BaseModel):
""" """
@ -83,11 +85,10 @@ class TableauChart(TableauBaseModel):
workbook: TableauBaseModel workbook: TableauBaseModel
owner: Optional[TableauOwner] owner: Optional[TableauOwner]
tags: List[TableauTag] tags: Optional[List[TableauTag]] = []
_extract_tags = validator("tags", pre=True, allow_reuse=True)(transform_tags) _extract_tags = validator("tags", pre=True, allow_reuse=True)(transform_tags)
contentUrl: str contentUrl: Optional[str] = ""
sheetType: str sheetType: Optional[str] = ChartType.Other.value
viewUrlName: str
class TableauDashboard(TableauBaseModel): class TableauDashboard(TableauBaseModel):
@ -99,10 +100,10 @@ class TableauDashboard(TableauBaseModel):
extra = Extra.allow extra = Extra.allow
description: Optional[str] description: Optional[str]
owner: TableauOwner owner: Optional[TableauOwner]
tags: List[TableauTag] tags: Optional[List[TableauTag]] = []
_extract_tags = validator("tags", pre=True, allow_reuse=True)(transform_tags) _extract_tags = validator("tags", pre=True, allow_reuse=True)(transform_tags)
webpageUrl: str webpageUrl: Optional[str]
charts: Optional[List[TableauChart]] charts: Optional[List[TableauChart]]
@ -121,8 +122,8 @@ class DatabaseTable(TableauBaseModel):
https://help.tableau.com/current/api/metadata_api/en-us/reference/databasetable.doc.html https://help.tableau.com/current/api/metadata_api/en-us/reference/databasetable.doc.html
""" """
schema_: str = Field(..., alias="schema") schema_: Optional[str] = Field(..., alias="schema")
database: TableauBaseModel database: Optional[TableauBaseModel]
referencedByQueries: Optional[List[CustomSQLTable]] referencedByQueries: Optional[List[CustomSQLTable]]
@ -132,8 +133,7 @@ class Workbook(TableauBaseModel):
https://help.tableau.com/current/api/metadata_api/en-us/reference/workbook.doc.html https://help.tableau.com/current/api/metadata_api/en-us/reference/workbook.doc.html
""" """
luid: str upstreamTables: Optional[List[DatabaseTable]] = []
upstreamTables: List[DatabaseTable]
class FieldDataType(Enum): class FieldDataType(Enum):
@ -179,7 +179,7 @@ class DatasourceField(TableauBaseModel):
""" """
remoteField: Optional[ColumnField] remoteField: Optional[ColumnField]
upstreamTables: List[DatabaseTable] = [] upstreamTables: Optional[List[DatabaseTable]] = []
class Sheet(TableauBaseModel): class Sheet(TableauBaseModel):
@ -189,8 +189,8 @@ class Sheet(TableauBaseModel):
""" """
description: Optional[str] description: Optional[str]
worksheetFields: List[CalculatedField] worksheetFields: Optional[List[CalculatedField]] = []
datasourceFields: List[DatasourceField] datasourceFields: Optional[List[DatasourceField]] = []
class TableauSheets(BaseModel): class TableauSheets(BaseModel):
@ -198,4 +198,4 @@ class TableauSheets(BaseModel):
Aux class to handle response from GraphQL API Aux class to handle response from GraphQL API
""" """
sheets: List[Sheet] = [] sheets: Optional[List[Sheet]] = []