0.9.16
Released on Jul 10, 2026.Added
atoti.Table.load()s error_handling parameter 1 2 3.atoti.Cube.feedingandatoti.Session.create_cube()’s feeding parameter 14.Atoti Intelligencecan be enabled without configuring an LLM provider 5. PassAiConfigwith no arguments (leavingconnectionandchatasNone). Auto-Explain will return a default, non-AI summary, and the chat feature will be disabled.
Changed
- Upgraded Atoti Server to 6.1.23.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.25.
- The Atoti UI app is served in development mode if
__debug__isTrue. See deployment setup. - When
atoti.SessionConfig.aiis notNone, the session’s MCP server exposes an OAuth 2.1 flow, so MCP clients such as Claude Desktop or Claude Code can authenticate without a manually provisioned Bearer token. If the session delegates authentication to an OIDC provider (OidcConfig), the MCP server reuses it (externalmode: clients authenticate against that provider, which already guards the MCP endpoint). Otherwise the MCP server acts as its own OAuth 2.1 authorization server (self-issuedmode: a browser login and consent against the session’s own authentication). HTTP Basic authentication on the MCP endpoint keeps working, so programmatic and headless clients are unaffected. Override with theatoti.server.endpoint.mcp.oauth2.*server properties 10. - Changing
atoti.Hierarchy.virtualtoTruedoes not restart the cube 11. atoti.AiConfighas moved toatoti_ai.AiConfig5. TheChatConfigandConnectionConfigbase classes have moved fromatoti.config.aitoatoti_aias well.
Deprecated
-
Publishing of Conda packages.
Install the Python packages with uv (or pip) instead.
It is still possible to use a Conda environment by installing the packages with
pip: -
atoti.Hierarchy.dimension, use
atoti.Hierarchy.dimension_nameinstead 8. -
atoti.Level.dimension, use
atoti.Level.dimension_nameinstead 8. -
atoti.Level.hierarchy, use
atoti.Level.hierarchy_nameinstead 8.
Fixed
create_parameter_hierarchy_from_column()supports using the target field of a join 4.query()andquery()raising an error when aLocalDatecolumn member is outside the pandas datetime range 6.LoggingCsvHealthEventHandlerno longer logs spurious errors when non-CSV health events are dispatched to it 7.JdbcPingDiscoveryProtocolbacked by an embedded H2 file database intermittently failing to form the cluster, because the query and data nodes, which run in separate JVMs, could not open the discovery database concurrently.AUTO_SERVER=TRUEis enabled automatically for embedded H2 databases so that the query and data nodes can access the discovery table concurrently 9.
Security
Internal issue tracker references
- [1]
PIVOT-13841 - [2]
PIVOT-13961 - [3]
PIVOT-14160 - [4]
PYTHON-851 - [5]
PYTHON-859 - [6]
PYTHON-909 - [7]
PYTHON-913 - [8]
PYTHON-921 - [9]
PYTHON-926
0.9.15
Released on May 29, 2026.Added
Changed
- Upgraded Atoti Server to 6.1.20.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.24.
- The Atoti UI app is served using its development build when
__debug__isTrue. It is strongly recommended to use Python’s optimized mode in production to avoid this development build’s overhead. - Accept using the JDK that the
JAVA_HOMEenvironment variable points to even if its version is greater than 21.
Fixed
data_model_transaction()raisingIllegalStateException: Structural transaction must be committed by the thread starting itdepending on the order of operations inside it 12.create_cube()from anexternal tablewithmode="no_measures"and afiltersending unfilteredAPPROX_COUNT_DISTINCTqueries forvirtual hierarchydetection 13.
Internal issue tracker references
0.9.14
Released on April 17, 2026.Added
- OpenTelemetry spans around the main functions and methods of the library.
See
atoti_observabilityfor example traces.
Changed
- Upgraded Atoti Server to 6.1.19.
Deprecated
atoti_directquery_databricks.ConnectionConfig.array_sum_agg_function_name,array_long_agg_function_name,array_short_agg_function_name, andarray_sum_product_agg_function_name. Spark UDAFs API has been deprecated as it is not recommended by Databricks anymore, usearray conversioninstead 16.
Fixed
QueryCube’s hierarchies not beingvisibleby default. 15.ModuleNotFoundErrorraised byatoti-clientwhenatoti-client-parquetis not installed.
Internal issue tracker references
0.9.13
Released on March 10, 2026.Added
shift()’s mode parameter 18.- Documentation for
atoti-observability. - Documentation for the ROLE_MEASURE_LINEAGE role in
atoti.security.Security. atoti_jdbc.JdbcPingDiscoveryProtocol.update_store_on_view_change22.
Changed
- Upgraded Atoti Server to 6.1.18.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.20.
-
Renamed cloud storage packages:
atoti-client-aws→atoti-client-storage-awsatoti-server-aws→atoti-server-storage-awsatoti-client-azure→atoti-client-storage-azureatoti-server-azure→atoti-server-storage-azureatoti-client-gcp→atoti-client-storage-gcpatoti-server-gcp→atoti-server-storage-gcp
atoti_aws→atoti_storage_awsatoti_azure→atoti_storage_azureatoti_gcp→atoti_storage_gcp
Deprecated
atoti-client-aws,atoti-server-aws, and theatoti_awsmodule. Useatoti-client-storage-aws,atoti-server-storage-aws, andatoti_storage_awsinstead.atoti-client-azure,atoti-server-azure, and theatoti_azuremodule. Useatoti-client-storage-azure,atoti-server-storage-azure, andatoti_storage_azureinstead.atoti-client-gcp,atoti-server-gcp, and theatoti_gcpmodule. Useatoti-client-storage-gcp,atoti-server-storage-gcp, andatoti_storage_gcpinstead.
Fixed
NotImplementedErrorraised when creating a==condition on a column operation 20, 21.atoti.Column.data_typeandatoti.Column.default_valueraising an error when accessed on aconnected sessionusing the"Object"data type 17.- Setting MDX-related context values with
shared_contextnot being reflected in subsequent access toshared_contextin data cubes and raising an error in query cubes 19.
Internal issue tracker references
0.9.12
Released on January 23, 2026.Added
Changed
- Upgraded Atoti Server to 6.1.16.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.18.
-
Loading Apache Parquet files requires the new
atoti-client-parquetandatoti-server-parquetpackages 23. Installing theatotipackage also installs these packages but the next breaking release will make them opt-in.If you do no use Parquet files and wish to reduce the size of your dependencies, you can skip the installation of theatotipackage and manually install theatoti-clientandatoti-serverpackages instead:Or, if you use some extras:
Deprecated
-
atoti.ParquetLoad23. Useatoti_parquet.ParquetLoadinstead: -
read_parquet()since support for Apache Parquet will become opt-in 23. Useinfer_data_types(),create_table(), andload()instead: -
atoti.Session.query_mdx()andatoti.Cube.query()’s timeout parameter 24. The default value has also been changed fromdatetime.timedelta(seconds=30)toNoneto automatically useshared_context’squeriesTimeLimit. Use the context parameter to specify a custom timeout:
Fixed
- Atoti Admin UI connecting to wrong server due to wrong order of WebJars in the server’s classpath 26.
- Hierarchies disappearing from the Data model tree when editing the data model of a
secured session25.
Internal issue tracker references
0.9.11
Released on December 16, 2025.Added
atoti.Hierarchy.description30.pandas<3.0.0rc0upper bound to avoid breaking changes from the new str dtype 32.
Changed
- Upgraded Atoti Server to 6.1.15.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.17.
-
atoti.Measure.descriptionreturns""instead ofNone30. -
Everything related to
Securityis kept in memory instead of being persisted in theuser_content_storage27. This makes the API more consistent since all the other methods onatoti.Sessionand its related classes never persisted their changes either. This improves performance, both when configuring these properties but also when executing queries.Basic authentication credentialsare unaffected since, for security reasons, they were already only kept in memory.
Deprecated
atoti.Measure.description’s deleter 30. Set the description to a blank string instead:
Fixed
- Data model search bar display issue in JupyterLab extension 33.
- Truncated response bodies when using
proxyorendpoint()28. This operation is not supported while batching mutationserror raised when requesting anendpoint()31.- Users configured through
basic_authenticationunable to connect whenthe configured LDAP serveris unreachable 29.
Internal issue tracker references
- [27]
PYTHON-716 - [28]
PYTHON-717 - [29]
PYTHON-728 - [30]
PYTHON-733 - [31]
PYTHON-737 - [32]
PYTHON-739 - [33]
PYTHON-745
0.9.10
Released on October 31, 2025.Added
- Support for Python 3.14 35.
- Dependencies page.
Changed
- Upgraded Atoti Server to 6.1.13.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.15.
- Installation instructions with Conda to recommend Miniforge over Anaconda’s installer to not be tied to Anaconda’s license requirements 36.
- Configuring
brandingdoes not remove the By ActiveViam signature at the bottom right corner of the app anymore. It is still possible to remove this signature through a customapp extension34.
Internal issue tracker references
0.9.9.2
Released on October 20, 2025.This version is not published on PyPI, it is only available on ActiveViam’s repository.
Added
- ROLE_ADMIN to
atoti.Hierarchy.viewers’s default value 38.
Changed
- Improved planning of MDX queries requesting many specific cells of the cube 37.
- Reduce number of requests made when
representing(or evaluating in a Jupyter notebook cell) cubes, levels, measures, etc of aconnected session39.
Fixed
SSL: CERTIFICATE_VERIFY_FAILEDerror when requesting a customendpoint()on aSessionconfigured withhttps40.
Internal issue tracker references
0.9.9.1
Released on September 30, 2025.This version is not published on PyPI, it is only available on ActiveViam’s repository.
Changed
- Improved planning of MDX queries requesting many specific cells of the cube 41.
Fixed
ArrayIndexOutOfBoundsExceptionwhen running some MDX queries 42.AssertionError: Output has already been setwhen deleting a cube 44.GraphQLClientGraphQLMultiError: Structural transaction must be committed by the thread starting itwhen settingatoti.Measure.visibleinside adata_model_transaction()43.
Internal issue tracker references
0.9.9
Released on September 22, 2025.Added
plugin_measure()50.atoti.Session.client48.Spring Boot Admin plugin45.atoti_directquery_snowflake.ConnectionConfig.main_warehouse_name46.
Changed
- Upgraded Atoti Server to 6.1.12.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.13.
-
Improved the logic used in
atoti.Session.linkandatoti.Session.widgetto find the URL from which theSessioncan be reached from the JupyterLab extension 47. For instance, if Jupyter Server is running at https://1.9.9.1:8888 and the Atoti session is running on the same machine but on port 1337, the browser will try to reach the session from https://1.9.9.1:1337.
Fixed
- Incorrect
MdxQueryResultwhen disabling light crossjoin 49. - Regression introduced in version 0.9.8 where
atoti.Session.endpointwould not handle URL encoded characters correctly 51. - Inability to use Basic Authentication in requests made to
custom endpointswhen the session is secured withOIDC52.
Internal issue tracker references
- [45]
PIVOT-12095 - [46]
PYTHON-592 - [47]
PYTHON-621 - [48]
PYTHON-629 - [49]
PYTHON-632 - [50]
PYTHON-634 - [51]
PYTHON-677 - [52]
PYTHON-678
0.9.8
Released on August 12, 2025.Added
Changed
- Upgraded Atoti Server to 6.1.11.
- When
atoti.JwtConfig.key_pairisNone, the automatically generated key pair will use 3072 bits instead of the old 2048 bits.
Deprecated
- Requests to endpoints created with
atoti.Session.endpointshould now use/proxyinstead of/atoti/pyapi./atoti/pyapiremains available but logs a warning when used 53. - The
atoti.pyapimodule is deprecated, import its classes directly fromatoti.Useroratoti.endpoint.Requestinstead 53.
Fixed
- Performance regression when editing measures inside a
data_model_transaction()54.
Internal issue tracker references
0.9.7
Released on July 01, 2025.Added
atoti.Hierarchy.viewers57.atoti.Hierarchy.folder58.atoti.SecurityConfig.cors56.atoti.finance.irr()’s period and guess parameters 61.
Changed
- Upgraded Atoti Server to 6.1.10.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.10.
atoti.AggregateProvider.measurescan be set toNoneto pre-aggregate all eligible measures 60.- Measures can no longer be defined in a data
Cubeonce it joined a distribution cluster. The measures must be defined before settingatoti.Session.clusters, or the session must be started withatoti.SessionConfig.readyset toFalsewithatoti.Session.readyset toTrueonly once all measures have been defined 55.
Deprecated
atoti.Hierarchy.visiblesetter 57. Useatoti.Hierarchy.viewersinstead:- Passing multiple levels of the same hierarchy to
atoti.AggregateProvider.levels. Only pass the deepest level instead: - Passing sequences to
atoti.AggregateProvider.levelsoratoti.AggregateProvider.measures. Pass sets instead:
Fixed
where()rejecting condition if it contained a~hierarchy.isin(...)or~level.isin(...)leaf 59.atoti.finance.irr()returningnanwhen the actual rate was too large 61.
Internal issue tracker references
- [55]
PIVOT-11612 - [56]
PIVOT-11652 - [57]
PYTHON-552 - [58]
PYTHON-593 - [59]
PYTHON-610 - [60]
PYTHON-615 - [61]
PYTHON-623
0.9.6
Released on May 17, 2025.Added
allow_data_duplicationandatoti.Session.create_cube()’s priority parameter 63.unload_members_from_data_cube()andatoti.Session.create_cube()’s id_in_cluster parameter 62.- Support for condition on hierarchy members (not only member paths) in
atoti.Cube.query()’s filter parameter 64. atoti.date_shift()’s dense parameter 68.experimental()context manager.
Changed
- Upgraded Atoti UI and Atoti Admin UI to 5.2.8.
- Upgraded Atoti Server to 6.1.8.
- The functions that were in the
atoti.experimentalsubpackage have been moved outside of it and require passing their feature key toexperimental():
Deprecated
- Deleting a level through
atoti.Cube.levels. Redefine its hierarchy instead: atoti.date_shift()’s method parameter 68. The new parameter name is fallback:
Fixed
- Display of join labels in
atoti.tables.Tables.schema66. atoti.where()’s returned measure evaluating incorrectly when using|within another condition 65.- Behavior of
get()when settingmapping_lookup()’s check toFalse. - Missing continuous query updates when using measures such as
atoti.agg.sum()withCumulativeScope67.
Internal issue tracker references
- [62]
PYTHON-538 - [63]
PYTHON-542 - [64]
PYTHON-554 - [65]
PYTHON-581 - [66]
PYTHON-584 - [67]
PYTHON-586 - [68]
PYTHON-591
0.9.5
Released on April 4, 2025.Security
SSO
Theatoti.KerberosConfig.username_case_conversion and atoti.LdapConfig.username_case_conversion attributes have been added to coerce the name of users logging in to the expected case 69.
Not picking a case conversion is a source of confusion or bugs so leaving these attributes unset will raise a deprecation warning.
Database access
atoti.tables.Tables.owners and atoti.tables.Tables.readers have been added 70.
Their impact is not limited to the Python API.
For instance, atoti.tables.Tables.readers will also control whether end users are able to see tables in Atoti Admin UI Database tab.
Dependencies
Fixed
Data loading
Cloud storage
On Windows, passing a URL toatoti.CsvLoad.path or atoti_parquet.ParquetLoad.path raised an InvalidPathException 74.
Data modeling
Conditions
Creating logical conditions (i.e. boolean combinations of leaf conditions such as(level["Product"] == "Phone") | (level["Country"] == "Portugal")) with more than 508 leaves raised a ValidationError because it reached the maximum nesting depth supported by the runtime type checker 75.
This was fixed by allowing the internal representation of a logical condition to group more than 2 operands.
For example, (a & b) | c | d | f | g (with a maximum depth of 2) replaces the old internal representation (((a & b) | c) | (d | f)) | g (with a maximum depth of 4).
Table columns
Columns are strictly typed: a column with a "LocalDate" data_type can only store dates (or None if its default_value is None); it cannot store a "String" such as "NaN".
Since Java has no equivalent of pandas.NaT, the only available values to represent a special null-restricted:
"LocalDate"areLocalDate.MINandLocalDate.MAX,"LocalDateTime"areLocalDateTime.MINandLocalDateTime.MAX.
default_value when it was set to one of these values raised a ValidationError 71.
This is fixed.
Measures
-
The type annotation of
filter()’s filter parameter never allowed invertedatoti.Level.isin()conditions (e.g.~level.isin("foo", "bar")) but, by chance, these conditions actually behaved as expected at runtime. However, 0.9.4 introduced runtime validation of condition types which lead to the rejection of these conditions. This regression is fixed: the type annotation of filter accepts these conditions and they are supported at runtime 72. -
Passing
isnullconditions toatoti.where()raised anUnknownUnderlyingMeasureRuntimeException73.
Internal issue tracker references
- [69]
PIVOT-11110 - [70]
PYTHON-528 - [71]
PYTHON-529 - [72]
PYTHON-534 - [73]
PYTHON-536 - [74]
PYTHON-539 - [75]
PYTHON-548
0.9.4
Released on February 28, 2025.Distribution
The nameQuerySession, unused since 0.9.0, makes a come back in this release but, this time, with a different meaning.
QuerySession becomes the entry point to create clusters of Atoti applications 81.
atoti.Cube.restrictions has been introduced to secure query sessions.
For the sake of symmetry, atoti.Session.security.restrictions has moved to atoti.tables.Tables.restrictions (the old location remains available but is deprecated).
See Scaling with distribution.
Performance
Client/server communication
Most components ofSession are exposed through mappings such as Cubes or Tables.
As a project grows, a lot of mapping lookups will be made to iteratively define the data model or to pass arguments to methods such as atoti.Cube.query().
For instance, the following code will make 3 lookups:
mapping_lookup() allows skipping these server requests.
Cube queries
The aggregate cache of a cube can be restricted to a subset of measures 78. This improvement comes with a newatoti.Cube.aggregate_cache API deprecating the previous atoti.Cube.aggregates_cache (with an “s”) one:
Hierarchy creation
Creating hierarchies from columns of a table fully joined (i.e. all their keys are mapped) to the cube’s fact table do not require “rebuilding” the cube anymore 79. This means that no time will be lost reindexing hierarchies or performing other expensive computations.Data modeling
Measures
atoti.where() was not respecting the order of condition_to_value when the same value was assigned to multiple conditions 77.
For example, in:
-1 because the first and last conditions, being both assigned to the same value, were merged together and that merged condition became the first one evaluating to True.
This incorrect merging of conditions has been removed: m["8"] >= 5 is correctly detected as the first condition evaluating to True and so Test is equal to 1.
Table columns
Columns with an arrray data type can be made non-nullable.atoti.Column.default_value’s documentation has been updated accordingly.
Data loading
Transactions
data_transaction()’s tables parameter allows some data transactions to execute concurrently 76.
CSV
Theatoti.CsvLoad.true_values and atoti.CsvLoad.false_values attributes can be configured to parse more values than "True", "true", "False", and "false" as "boolean" 80.
Dependencies
Internal issue tracker references
0.9.3
Released on January 13, 2025.Added
Changed
- Upgraded Atoti Server to 6.1.3.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.4.
SessionConfigand its inner classes validate that passedPathattributes exist. It prevents situations such as passing a path containing a typo toextra_jarsand being confused that the JAR’s classes still cannot be loaded.
Fixed
read_parquet()andParquetLoadnot being able to load Parquet files with extension other than.parquet.NullPointerExceptionreturned by the server when executing some MDX queries.
0.9.2
Released on December 05, 2024.Added
infer_data_types(),load(), andload_async()methods. Combined with the existingcreate_table()anddata_transaction()methods, they form the preferred way to create tables and load data into them.atoti_jdbc.JdbcLoad.parametersto bind variables to queries and avoid SQL injection.- Runtime check that
atoti.OidcConfig.scopesincludes the required"openid"scope.
Documentation
- Pressing the
ykey after clicking on an anchor in a page under https://docs.activeviam.com/products/atoti/python-sdk/latest/ will permalink the URL by replacing latest with the corresponding version.
Changed
- Upgraded Atoti Server to 6.1.2.
- Upgraded Atoti UI and Atoti Admin UI to 5.2.3.
- To support remote clusters,
atoti.Session.read_spark()andatoti.Table.load_spark()convert the passed Spark DataFrame to an in-memory Pandas DataFrame instead of exporting it to a Parquet file.
Deprecated
atoti.Table.append():atoti.Table.load_arrow():atoti.Table.load_csv():atoti.Table.load_kafka():atoti.Table.load_numpy():atoti.Table.load_pandas():atoti.Table.load_parquet():atoti.Table.load_spark()atoti.Table.load_sql():atoti.Session.read_numpy():atoti.Session.read_spark():atoti.Session.read_sql():create_table(),read_arrow(),read_csv(),read_pandas(),read_parquet()’s types parameter. Use the data_types parameter instead.- Inference of
read_csv()andread_parquet()’s table_name parameter. Pass a table_name argument instead.
Fixed
RecursionErrorbeing raised when passing more than 296 cases towhere().KeyErrorbeing raised when using aLevelas a key inswitch()’s cases parameter.- Snapshotting of
widgetin JupyterLab >= 4.2 by setting windowingMode to"defer".
0.9.1
Released on October 18, 2024.Added
- Support for Live extension to
atoti.Session.connect().
Changed
Fixed
- Incorrect use of credentials when reading from S3 in
atoti-storage-aws. atoti.Cube.query()’s include_totals not including sub totals of multilevel slicing hierarchies.
0.9.0
Released on September 13, 2024.Added
-
atoti-directquery-jdbcto connect to an external database through JDBC. -
data_model_transaction(). Batching measure creation with a data model transaction has the same performance as usingMeasures.update()without being limited to independent measures:Data model transactions also replace the private API relying onatoti.MeasureMetadata: -
atoti_directquery_redshift.ConnectionConfig.connection_pool_size.
User interface
- Filters tool in the sidebar of the JupyterLab extension to see default filters.
Changed
Packaging
-
The
atotipackage and most of its plugins (e.g.atoti-aws,atoti-directquery-directquery,atoti-kafkaetc.) have been split intoatoti-client-*andatoti-server-*packages. Theatoti-client-*packages contain the Python code composing the API while theatoti-server-*packages mostly contain the JARs implementing the corresponding features. The advanced installation section explains the goal of this split. Theatotipackage still exists but has become empty, it is only there to provide a convenient way to install both client and server packages. For instance:-
pip install atotiwill install bothatoti-clientandatoti-server. It will actually also installjdk4py. Note:jdk4pyis not a dependency ofatoti-serverso that projects willing to use another JDK can avoid installingjdk4pyby dependending onatoti-clientandatoti-serverdirectly. -
pip install "atoti[aws]"will installatoti-client,atoti-aws-client,atoti-aws-server, andatoti-server. -
pip install "atoti[jupyterlab]"will installatoti-client,atoti-server, andatoti-jupyterlab(no client/server split for this package because it only contains frontend assets).
atotiand its AWS plugin is:conda install atoti atoti-client-aws atoti-server-aws. -
Session start and configuration
-
atoti.Session.__init__()has been replaced withatoti.Session.start()for symmetry withatoti.Session.connect()(the removed section gives more details about that latter method):The top-level config parameters have been grouped into aSessionConfigdataclass providing better error reporting and allowing code reuse: -
atoti.Session.__init__()’s authentication parameter has been replaced withatoti.SessionConfig.security: -
atoti.UserContentStorageConfighas been moved toatoti_jdbc.UserContentStorageConfig:It makes it obvious that storing user content in an external database requiresatoti-jdbcto be installed.
DirectQuery
-
DirectQuery
*ConnectionInfoand*TableOptionsclasses have been renamedConnectionConfigandTableConfig. -
The
cacheattribute controlling whether DirectQuery connections should use caching has been moved from the connection instance to the connection config: -
The
DatabricksConnectionInfo.heavy_load_urlattribute has been renamedfeeding_url.
Other
- Upgraded
jdk4pydependency to 21.0.4 which adds support for Linux Arm64. atoti_aws.AwsKeyPair,atoti_aws.AwsKmsConfig, andatoti_azure.AzureKeyPairhave been renamedKeyPair,KmsConfig, andKeyPair.- The
atoti-sqlpackage has been renamedatoti-jdbc. atoti.Session.explain_mdx_query()andatoti.Cube.explain_query()have been replaced with an explain parameter toatoti.Session.query_mdx()andatoti.Cube.query():atoti.Table.keysreturns atupleinstead of alist. It communicates that keys cannot be changed once the table exists.create_cube()’s base_table parameter has been renamed fact_table.
User interface
- Upgraded Atoti UI and Admin UI to 5.2.0.
Deprecated
-
atoti.Session.port. Useatoti.Session.urlinstead: -
atoti.Session.start_transaction(). Useatoti.tables.Tables.data_transaction()instead: -
atoti.Session.security.basic. Usebasic_authentication: -
atoti.Table.columnsandatoti.ExternalTable.columns. Uselist(table)to list column names andfor column_name in table: ...to iterate on column names: -
atoti.Hierarchy.levels. Iterate on theHierarchyinstead:
Removed
- Support for Java 17, 18, 19, and 20.
-
The
atoti-querypackage and itsQuerySessionclass. Useatoti.Session.connect()instead: -
atoti.Table.__len__(). It was ambiguous because it could be interpreted as counting either rows or columns. Instead, useatoti.Table.row_countto count rows andlen(list(table))to count columns:
Previously deprecated
- Support for Python 3.9.
- Support for pandas 1.
- Support for JupyterLab 3.
atoti.UserServiceClient.atoti.Cube.schema.- Support for passing an
inttoatoti.Table.load_kafka()’s batch_duration parameter. - Support for passing a
tupleas a case key toswitch(). - Variadic constructor of
OriginScope. - Support for calling
atoti.Session.link(). atoti.Session.visualize()andatoti.QuerySession.visualize().- Support for array constants mixing
intandfloatvalues. - Support for passing a
Setto:atoti.Session()’s extra_jars or java_options parametersatoti.Cube.query()’s levels parameteratoti.Cube.create_parameter_simulation()’s levels parameteratoti.Cube.create_parameter_hierarchy_from_members()’s members parameter
- Support for passing a
Sequenceto:- DirectQuery
TableConfigclasses’ clustering_columns attribute atoti.MultiColumnArrayConversion.column_prefixesatoti.MultiRowArrayConversion.array_columnsatoti.OidcConfig.roles_claimsatoti.OidcConfig.scopes
- DirectQuery
atoti.Session.security.users.atoti.Session.security.basic.usersandatoti.Session.security.basic.create_user().atoti.Session.security.rolesandatoti.Session.security.create_role().- In-place mutation of
atoti.Security.security.ldap.role_mappingandatoti.Security.security.oidc.role_mapping’s values. - In-place mutation of
atoti.Security.security.individual_roles’ values.