0.5.2 (March 04, 2021)#

Added#

User interface#

  • Convert to Widget Below JupyterLab command available on (not mutated) DataFrames returned by the atoti.Cube.query() and atoti_query.QueryCube.query() methods (issue #49).

    convert query result to interactive widget

    This command provides a bridge from queries run from the Python API to widgets offering more interactivity. It can be executed by:#

    • right-clicking on the DataFrame and selecting the corresponding context menu item.

    • selecting it in the command palette when the DataFrame cell is the active one.

  • Defer updates checkbox in the JupyterLab extension sidebar (issue #25).

    deferring updates in the JupyterLab extension

    Deferring updates reduces the load on the server by avoiding intermediate queries.#

  • Pivot table columns can be resized (issue #206).

    • resizing a pivot table column manually

      Dragging the left border of a column resize the column to the desired width.#

    • resizing a pivot table column automatically

      Double clicking on the left border resize the column to fit its content.#

    • resizing all the columns of a pivot table automatically

      Selecting all the cells and double clicking on the left border of any column.#

  • Pivot tables support expansion by another hierarchy.

    expanding a pivot table cell by another hierarchy

    Drag and drop a hierarchy to a pivot table cell to expand it.#

Experimental#

  • atoti.experimental.create_date_hierarchy() to create a multilevel date hierarchy based on a date column.

Changed#

  • Improve atoti.where() performance when either:

    • no false_measure is passed.

    • the passed condition on levels is made only of == or != comparisons to None and at most one == or != comparison to a non-None value.

Fixed#

  • Issue when accessing query session hierarchies and levels (issue #202).

  • Issue where switching to an incompatible widget type would crash the JupyterLab extension (issue #211).

  • Issue with glob path on Windows.

  • Prevent redefining reserved roles such as ROLE_USER and ROLE_ADMIN by raising an error in atoti.config.create_role().

  • Respect sampling mode when adding rows with atoti.store.Store.append() and the += operator.