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

View File

@ -18,6 +18,8 @@ from typing import Any, Dict, List, Optional, Union
from pydantic import BaseModel, Extra, Field, validator
from metadata.generated.schema.entity.data.chart import ChartType
class TableauBaseModel(BaseModel):
"""
@ -83,11 +85,10 @@ class TableauChart(TableauBaseModel):
workbook: TableauBaseModel
owner: Optional[TableauOwner]
tags: List[TableauTag]
tags: Optional[List[TableauTag]] = []
_extract_tags = validator("tags", pre=True, allow_reuse=True)(transform_tags)
contentUrl: str
sheetType: str
viewUrlName: str
contentUrl: Optional[str] = ""
sheetType: Optional[str] = ChartType.Other.value
class TableauDashboard(TableauBaseModel):
@ -99,10 +100,10 @@ class TableauDashboard(TableauBaseModel):
extra = Extra.allow
description: Optional[str]
owner: TableauOwner
tags: List[TableauTag]
owner: Optional[TableauOwner]
tags: Optional[List[TableauTag]] = []
_extract_tags = validator("tags", pre=True, allow_reuse=True)(transform_tags)
webpageUrl: str
webpageUrl: Optional[str]
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
"""
schema_: str = Field(..., alias="schema")
database: TableauBaseModel
schema_: Optional[str] = Field(..., alias="schema")
database: Optional[TableauBaseModel]
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
"""
luid: str
upstreamTables: List[DatabaseTable]
upstreamTables: Optional[List[DatabaseTable]] = []
class FieldDataType(Enum):
@ -179,7 +179,7 @@ class DatasourceField(TableauBaseModel):
"""
remoteField: Optional[ColumnField]
upstreamTables: List[DatabaseTable] = []
upstreamTables: Optional[List[DatabaseTable]] = []
class Sheet(TableauBaseModel):
@ -189,8 +189,8 @@ class Sheet(TableauBaseModel):
"""
description: Optional[str]
worksheetFields: List[CalculatedField]
datasourceFields: List[DatasourceField]
worksheetFields: Optional[List[CalculatedField]] = []
datasourceFields: Optional[List[DatasourceField]] = []
class TableauSheets(BaseModel):
@ -198,4 +198,4 @@ class TableauSheets(BaseModel):
Aux class to handle response from GraphQL API
"""
sheets: List[Sheet] = []
sheets: Optional[List[Sheet]] = []