0.4.3 (September 01, 2020)#


  • atoti.agg.sum_product() return a measure equal to the product and sum of two measures or fields.

  • The modulo % operation between measures (issue #48).

  • Support reading Parquet files from AWS S3 (issue #27).

  • atoti.store.Store.drop() remove rows from a store by specifying column names and values.

  • Atoti widgets are snapshotted as SVG images in the notebook on save. These images will appear in HTML exports or in GitHub previews of the notebook.

  • Context menu actions for widgets of the Atoti JupyterLab extension:


  • Java is no longer required in the pip installation since the Atoti Python wheel now relies on jdk4py.

  • The Measure simulations and Source simulation editors have been redesigned. They now both have their dedicated page instead of being widgets embeddable in dashboards. The Measure simulations editor also issue more minimal updates to the underlying store (issue #70).

  • Upgraded Atoti UI to 4.3.11 (issue #30, issue #59, issue #74, issue #79, issue #84, issue #87, issue #110).

  • Upgraded Atoti Server to 5.9.2 (issue #98, issue #99).

  • atoti.Session.query_mdx(), atoti.Cube.query(), atoti_query.QuerySession.query_mdx(), and atoti_query.QueryCube.query() return DataFrames displaying formatted values and providing a style attribute reflecting the potential styling properties of the corresponding cell set (issue #91).

  • The first MDX query ran by an Atoti widget in JupyterLab is now executed in Python and its resulting cell set is outputted to the corresponding notebook cell. It allows to ensure that the data displayed by the widget reflects the expected state of the cube without having to block the IPython kernel in a fragile way.

  • Added ability to append rows in all scenarios of a store with atoti.store.Store.append().


  • The constructors of atoti.config.SessionConfiguration, atoti.config.BasicAuthentication, atoti.config.BasicUser and atoti.config.OidcAuthentication have been made private and using them is deprecated. They have been replaced by factory functions: atoti.config.create_config(), atoti.config.create_basic_authentication(), atoti.config.create_basic_user() and atoti.config.create_oidc_authentication().

  • atoti_query.basic_auth.BasicAuthentication, replaced by atoti.query.create_basic_authentication.


  • The creation of calculated measures and the action to add a measure computing the difference between to table columns have been disabled in the JupyterLab widget extension to incentivize creating these measures in Python instead. These features are still available in the app (issue #21).


  • Issue with dates not correctly converted to Python datetime in atoti.store.Store.head() (issue #97).

  • Issue getting vector element with a measure containing long (issue #115).

  • Issue with aggregation function not preserved when creating a simulated measure (issue #121).