Migration notes 2.0

This page explains the changes required to migrate to the stated version of Atoti Common Library.

Migrate to 2.0.5-AS6.0

Headline announcement

  • Parent-Child: The feature now uses configurable depth for the flat store. It relies on the flat store size.
  • Switch post-processor: This post-processor uses filters to select an underlying metric. It can also expand levels during the mapper phase.
  • New Tenor Converter: A new version of the tenor converter, not based on the calendar, is available.

Parent-Child

The depth of the hierarchies are no longer fixed, they are inferred from the stores size:

Feature Flat Store Old default depth New depth
Book Hierarchy BookHierarchy 15 Store size - 4
Book Hierarchy V2 BookHierarchy 15 Store size - 2
Counterparty Hierarchy CounterpartyHierarchy 10 Store size - 2
LegalEntity Hierarchy LegalEntityHierarchy 5 Store size - 2

Switch post-processor

The underlying measure is now selected by filters instead of locations. The hierarchy levels can be expanded to call the mapper. In this case, an aggregation function must be provided to handle possible collisions.

New Tenor Converter

A new version of the tenor converter is now available. This version has a reduced interface and doesn’t use the calendar. For more information, see IYearOrDayFractionRetriever.

Migrate to 2.0.4-AS6.0

Headline announcement

  • Tenor Converter / Maturity Converter: When a parsing error occurs, a null value (for object-based return functions) or a NaN value (for double return functions) is returned.

Tenor Converter / Maturity Converter

When a parsing error occurs, a null value (for object based return functions) or a NaN value (for double return functions) is returned. The caller should take action to handle the error case correctly, for instance, by calling the error handler.

Migrate to 2.0.3-AS6.0

Headline announcement

  • LocalDate: Removed LocalDate support from the Atoti Common Library, as this is handled by Atoti Server.
  • CommitDatastoreHandler: A continuous query handler that ticks an update after each datastore commit.

LocalDate

The support of LocalDate is removed from the Atoti Common Library. To access this feature from Atoti Server, just use the LOCALDATE key.

Migrate to 2.0.2-AS6.0

Headline announcement

  • getInCacheOrCompute: The caching tools now support providers with a checked exception signature.
  • Migrator: You can now restrict the cubes to be migrated.
  • Databricks: The schema and database name are part of the Databricks configuration.

getInCacheOrCompute

The class PostProcessorUtils::NotNullCacheSupplier and PostProcessorUtils::NullableCacheSupplier signature has changed to include the ability to throw a checked exception. This exception also appears on the signature of the functions getInCacheOrCompute*.

Migrator

Two new functions onlyMigratingCubes and addCubeToMigrate have been added to the Migrator, allowing you to restrict the scope of the migrated star schema depending on the cube name.

Databricks

schema and database properties are part of the Databricks properties.

Migrate to 2.0.1-AS6.0

Headline announcement

  • Post-processor builders: The fluent post-processor definition has been changed and improved.
  • Migrator Vector handling: The handling of vector fields by the DirectQuery migrator is improved for FRTB.

New classes / interfaces

  • WithAggregationFunction: interface used to add builder functions that defines the aggregation function of a post-processor.
  • WithAnalysisLevels: interface used to add builder functions that defines extra levels for the measure expansion on a post-processor.
  • WithConfidenceLevel: interface used to add builder functions to define a confidence level for metrics like VaR or ES.

Renamed classes / interfaces

Old class name New class name
BaseFluentCopperPostProcessor BaseCopperPostProcessorBuilder
FluentCopperPostProcessorWithAnUnderlying WithAnUnderlying

Renamed package

com.activeviam.accelerator.common.postprocessor.fluent is renamed com.activeviam.accelerator.common.postprocessor.builders.

Migrator

  • migrateReference(...) returns a List<SqlJoin>.
  • migrateToDirectQueryTable(...) returns a List<IDataTable>.
  • Set<SqlJoin> getJoinToVectorTable(...) returns the extra references needed for the vector tables.
  • Collection on the signature has changed to a more generic type.

We have added another method to the Migrator because if our Base store contains vectors, we don’t currently have any methods to generate the join from the base store to the vector value store.

We should have all of our Migration methods (for Tables and References) return collections.

This is useful because the user can call just a single method and handle all cases because the resulting migration may result in multiple objects. Below is an example of what should be called:

// Step 1: Migrate Stores and References:

// Migrate Tables:
Set<IDataTable> tables;
Set<SqlJoin> joins;

// This will add a single table, or multiple if table has vectors and DB does not support vectors:
tables.addAll(migrator.migrateTable(storeDescription);

// This will add a single or multiple Joins:
joins.addAll(migrator.migrateJoin(storeReference);

// This only NEEDS to be called if your base store contains a Vector (but this method is safe and will return empty list if no additional join is required). This is because there is no join TO the base store. Normally the migrateJoin() method will create the additional Join needed to the VectorValue store.
joins.addAll(migrator.getJoinToVectorTable(storeDescription);



// Step 2: Update Cube Selection

// When building the IApplication, need to update Cube Selection:
migrator.migrateSelection(activePivotManagerDescription);

Migrate to 2.0.0-AS6.0

Headline announcement

  • JAVA 17: This release only works with Java 17 or higher.
  • Spring Boot 3: The library is only compatible with Spring Boot 3.
  • Documentation: New documentation folder.
  • Removal of generic Lambda: As a new policy, the code tries to avoid usage of generic lambda class and instead uses a dedicated class.
  • Reorganized packages: Some packages have moved.
  • New features: New classes available.
  • Renamed methods: Some methods are renamed to be less confusing.
  • Spring profiles: Spring profiles dist-query-node and dist-data-node are removed and replaced by spring properties.
  • Fluent post-processor Setup: It is now possible to create a custom Copper metric (post-processor) in a fluent way.
  • Databricks: DirectQuery supports Databricks connection.

Removal of generic Lambda

All the used lambda based on the generic functional interfaces declared on package java.util.function have now their own specific functional interfaces. This allows a better tracking and a better documentation across the code. The list of the lambdas are provided there Functional Interfaces.

Package changes

Old package New package
com.activeviam.accelerator.common.date.impl com.activeviam.accelerator.common.dates.impl
com.activeviam.accelerator.common.postprocessor.hierarchy com.activeviam.accelerator.common.hierarchy
com.activeviam.accelerator.common.directQuery com.activeviam.accelerator.common.directquery

New classes

  • IMaturityConverterAware: interface used to auto-inject IMaturityConverter in Atoti plugins.
  • ReferenceLevelLocationShift: The post-processor that shifts a metric location to a specified level, moved from FRTB. See Reference Level Location Shift Post-processor.
  • ReferenceLevelLocationShiftLight: The post-processor that shifts a metric location to a specified level, moved from MR, that have less customization options. See Reference Level Location Shift Post-processor Light.
  • VectorExpandPostProcessor: A new post-processor to is able to expand a vector along an analysis hierarchy. See Vector Expand Post-processor.
  • NoOpPostProcessor: A post-processor that does nothing except passing the value of the underlying measure. It can be used to set specific properties to a metric. See A post-processor that doesn’t change the metric.
  • ReferenceLevelContextVal: The context value used by ReferenceLevelLocationShift and ReferenceLevelLocationShiftLight post-processors to select the reference level.
  • ReferenceLevelVisualTotalsModeContextVal: The way of ReferenceLevelLocationShift post-processor will handle the value of the reference level.
  • Databricks*: All the classes used to connect the Databricks database.
  • BaseFluentCopperPostProcessor: A base class used to create a fluent builder for post-processors. Described there Fluent post-processor builder.
  • FluentCopperPostProcessorWithAnUnderlying: A base class used to create a fluent builder for post-processors that defines one single underlying measure. . Described there Fluent post-processor builder.

Renamed class

Old class name New class name
AUniqueSyncBroadcastMessage UniqueASyncBroadcastMessage

Renamed methods

Old name New name
IDayCountConvention::dayCount IDayCountConvention::years