Source code for sisense.data.hierarchy
from sisense.resource import Resource
from sisense.api import API
[docs]class Hierarchy(Resource):
def __init__(self, api: API, rjson: dict = None, elasticube_name: str = None):
super().__init__(api, rjson)
self._elasticube = elasticube_name
[docs] def all(self, elasticube: str = None) -> list:
"""
Get elasticube's hierarchies.
:param elasticube: (str, default None) Elasticube's name. If None, use self.elasticube.
:return: a list of Hierarchy objects
"""
elasticube = elasticube if elasticube else self._elasticube
query = {'elasticube': elasticube, 'server': 'localhost'}
content = self._api.get(f'elasticubes/hierarchies', query=query)
hierarchies = [Hierarchy(self._api, h, elasticube) for h in content]
return hierarchies
[docs] def get(self, oid: str, elasticube: str = None) -> Resource:
"""
Get the specified hierarchy.
:param oid: (str) Hierarchy's ID.
:param elasticube: (str, default None) Elasticube's name. If None, use self.elasticube.
:return: (Hierarchy) if found. Otherwise, None.
"""
for hierarchy in self.all(elasticube):
if hierarchy._id == oid:
return hierarchy
return None
[docs] def create(self, title: str, levels: list, always_included: bool, elasticube: str = None) -> Resource:
"""
Create a new hierarchy.
:param title: (str) Hierarchy's title.
:param levels: (list) List of dict {'title': str, 'table': str, 'column': str, 'datatype': str, 'dim': str, index: int}.
:param always_included: (bool) Whether to always include the hierarchy on widget.
:param elasticube: (str, default None) Elasticube's name. If None, use self.elasticube.
:return: (Hierarchy) The new hierarchy.
"""
elasticube = elasticube if elasticube else self._elasticube
data = {'title': title, 'levels': levels, 'alwaysIncluded': always_included}
content = self._api.post(f'elasticubes/localhost/{elasticube}/hierarchies', data=data)
return Hierarchy(self._api, content, elasticube)
[docs] def delete(self):
"""Delete the current hierarchy."""
self._api.delete(f'elasticubes/localhost/{self._elasticube}/hierarchies/{self._id}')