Data Sets

Most charts use data sets to store the data, and these data sets can be used in a variety of ways. There is a dedicated module to data sets which can be accessed through s.data:

s.data.append_to_data_set(
    uuid: Optional[str], name: Optional[str],
    data: Union[List[Dict], DataFrame]
) -> str

s.data.delete_data_set(uuid: Optional[str], name: Optional[str])


s.data.replace_data_from_data_set(
    uuid: Optional[str], name: Optional[str]
    data: Union[List[Dict], DataFrame],
):
       
s.data.get_data_from_data_set(
    uuid: Optional[str], name: Optional[str],
    limit: Optional[int]
) -> List[Dict]

But most of the time data sets will be created and managed through the module s.plt. When creating or deleting components and menu paths the necessary data sets will be managed automatically. By default the SDK will try to reuse as much resources as possible but in the case of data sets the user will have to specify that the data sets are the same, if not all the data from the data sets would have to be checked. To toggle the functionality the following methods are provided:

s.reuse_data_sets()  # to tell the SDK that the data sets won't change
s.update_data_sets() # to tell the SDK that the data has cahnged

Enabling this functionality will result in a notable speedup when reusing charts, and will optimize api calls.

Charts can share data sets between them, this can be useful for applying filters or aggregations to a single data set and affecting all charts that use it. To create the shared data sets the following function has to be used:

s.plt.set_shared_data(
    dfs: Dict[str, Union[List[Dict], pd.DataFrame]],
    custom_data: Dict[str, Any]
)

This function will enable the specified data sets to be referenced by name when creating the different charts, instead of passing a dataframe or similar structure to the data parameter of the charts that use data sets, a string can be passed which will be used as a reference of the shared data sets.

An example on how this feature can be used:

s.plt.set_shared_data(
    dfs={
        'data': [
            {'date': dt.date(2021, 1, 1), 'x': 5, 'y': 5},
            {'date': dt.date(2021, 1, 2), 'x': 6, 'y': 5},
            {'date': dt.date(2021, 1, 3), 'x': 4, 'y': 5},
            {'date': dt.date(2021, 1, 4), 'x': 7, 'y': 5},
            {'date': dt.date(2021, 1, 5), 'x': 3, 'y': 5},
        ]
    }
)

s.plt.bar(order=0, data='data', x='date', y='y')
s.plt.line(order=1, data='data', x='date', y='x')

When changing menu paths the shared data sets will reset, as data sets exist only in menu paths, so make sure that the data sets are initializated before using a data set reference name.

Last updated