classHierarchy(SsasRenameRecord):"""TBD. SSAS spec: [Microsoft](https://learn.microsoft.com/en-us/openspecs/sql_server_protocols/ms-ssas-t/4eff6661-1458-4c5a-9875-07218f1458e5) """description:str|None=Nonedisplay_folder:str|None=Nonehide_members:HideMembershierarchy_storage_id:intis_hidden:boolname:strstate:DataStatetable_id:int"""A foreign key to the Table object the hierarchy is stored under"""lineage_tag:UUID=uuid4()source_lineage_tag:UUID=uuid4()modified_time:datetime.datetimerefreshed_time:datetime.datetime"""The last time the sources for this hierarchy were refreshed"""structure_modified_time:datetime.datetime_commands:RenameCommands=PrivateAttr(default_factory=lambda:SsasCommands.hierarchy)deftable(self)->"Table":returnself.tabular_model.tables.find({"id":self.table_id})deflevels(self)->set["Level"]:returnself.tabular_model.levels.find_all({"hierarchy_id":self.id})defvariations(self)->set["Variation"]:returnself.tabular_model.variations.find_all({"default_hierarchy_id":self.id})@classmethoddef_db_command_obj_name(cls)->str:return"Hierarchies"defget_lineage(self,lineage_type:Literal["children","parents"])->LineageNode:iflineage_type=="children":returnLineageNode(self,lineage_type,[level.get_lineage(lineage_type)forlevelinself.levels()]+[variation.get_lineage(lineage_type)forvariationinself.variations()],)returnLineageNode(self,lineage_type,[self.table().get_lineage(lineage_type),],)