[docs]classTableauMetric(Tableau):"""Description"""type_name:str=Field(default="TableauMetric",allow_mutation=False)@validator("type_name")defvalidate_type_name(cls,v):ifv!="TableauMetric":raiseValueError("must be TableauMetric")returnvdef__setattr__(self,name,value):ifnameinTableauMetric._convenience_properties:returnobject.__setattr__(self,name,value)super().__setattr__(name,value)SITE_QUALIFIED_NAME:ClassVar[TextField]=TextField("siteQualifiedName","siteQualifiedName")""" Unique name of the site in which this metric exists. """PROJECT_QUALIFIED_NAME:ClassVar[KeywordTextField]=KeywordTextField("projectQualifiedName","projectQualifiedName.keyword","projectQualifiedName")""" Unique name of the project in which this metric exists. """TOP_LEVEL_PROJECT_QUALIFIED_NAME:ClassVar[TextField]=TextField("topLevelProjectQualifiedName","topLevelProjectQualifiedName")""" Unique name of the top-level project in which this metric exists. """PROJECT_HIERARCHY:ClassVar[KeywordField]=KeywordField("projectHierarchy","projectHierarchy")""" List of top-level projects with their nested child projects. """PROJECT:ClassVar[RelationField]=RelationField("project")""" TBC """_convenience_properties:ClassVar[List[str]]=["site_qualified_name","project_qualified_name","top_level_project_qualified_name","project_hierarchy","project",]@propertydefsite_qualified_name(self)->Optional[str]:returnNoneifself.attributesisNoneelseself.attributes.site_qualified_name@site_qualified_name.setterdefsite_qualified_name(self,site_qualified_name:Optional[str]):ifself.attributesisNone:self.attributes=self.Attributes()self.attributes.site_qualified_name=site_qualified_name@propertydefproject_qualified_name(self)->Optional[str]:return(Noneifself.attributesisNoneelseself.attributes.project_qualified_name)@project_qualified_name.setterdefproject_qualified_name(self,project_qualified_name:Optional[str]):ifself.attributesisNone:self.attributes=self.Attributes()self.attributes.project_qualified_name=project_qualified_name@propertydeftop_level_project_qualified_name(self)->Optional[str]:return(Noneifself.attributesisNoneelseself.attributes.top_level_project_qualified_name)@top_level_project_qualified_name.setterdeftop_level_project_qualified_name(self,top_level_project_qualified_name:Optional[str]):ifself.attributesisNone:self.attributes=self.Attributes()self.attributes.top_level_project_qualified_name=(top_level_project_qualified_name)@propertydefproject_hierarchy(self)->Optional[List[Dict[str,str]]]:returnNoneifself.attributesisNoneelseself.attributes.project_hierarchy@project_hierarchy.setterdefproject_hierarchy(self,project_hierarchy:Optional[List[Dict[str,str]]]):ifself.attributesisNone:self.attributes=self.Attributes()self.attributes.project_hierarchy=project_hierarchy@propertydefproject(self)->Optional[TableauProject]:returnNoneifself.attributesisNoneelseself.attributes.project@project.setterdefproject(self,project:Optional[TableauProject]):ifself.attributesisNone:self.attributes=self.Attributes()self.attributes.project=projectclassAttributes(Tableau.Attributes):site_qualified_name:Optional[str]=Field(default=None,description="")project_qualified_name:Optional[str]=Field(default=None,description="")top_level_project_qualified_name:Optional[str]=Field(default=None,description="")project_hierarchy:Optional[List[Dict[str,str]]]=Field(default=None,description="")project:Optional[TableauProject]=Field(default=None,description="")# relationshipattributes:TableauMetric.Attributes=Field(default_factory=lambda:TableauMetric.Attributes(),description=("Map of attributes in the instance and their values. ""The specific keys of this map will vary by type, ""so are described in the sub-types of this schema."),)