mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-27 09:55:36 +00:00
Fix tableau models to make fields optional (#11513)
This commit is contained in:
parent
0aa6c08cf6
commit
be7b056d72
@ -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
|
||||||
|
@ -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]] = []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user