This page provides a description of how to add a new column to an
existing file and load that column into the Atoti FRTB project. It features an
example in which TestField is added to the file
Trade\_Attributes.csv.
The techniques employed are generic examples that
can be extended, adapted and repeated for any use case. In
all cases, only minimal changes are made to the Reference
Implementation.
Editing the data
For this example, a column is added to the file
Trade_Attributes.csv and the data from this column is loaded into the
TradeMapping store. In this case, the new column’s header is TestField,
and all data in this column is TestData. Below is a portion of the file.
Step 1 - Datastore modifications
Before this new column can be loaded into the cube, the datastore must
have a field that can accept this column.
To add a new field to an existing datastore, create a DatastoreConfiguratorConsumer bean that adds a field to the existing
DatastoreConfig.TRADE_MAPPING_STORE_NAME store.
See the Datastore Helper documentation for more information on potential datastore modifications.
Step 2 - DLC config
This step uses the Data Load Controller.
Next, the topic configuration may have to be updated to expect the new column.
If no parser.columns are set for the Topic Description, the columns of the file are coming implicitly from the columns of the Atoti table.
If the columns of the file still match the columns of the Atoti table, no other configuration is required.
In the case of Trade_Attributes, the columns are being set explicitly, so the new column must be added to the Trade_Attributes topic.
Add the snippet below under dlc.csv.topics.Trade_Attributes.parser.columns in frtb-application/src/main/resources/application.yaml,
which Spring Boot loads automatically at startup:
The file sample-data/application-dlc-in-memory.yaml contains the complete DLC topic configuration used by the reference implementation
and is a convenient reference for the exact YAML shape of every topic (file patterns, columns, channels). It is not loaded by default:
it lives outside the application classpath and is gated behind the dlc-in-memory Spring profile. To consume it as-is, copy it to
frtb-application/src/main/resources/ and start the application with -Dspring.profiles.active=dlc-in-memory. For most customizations,
copying the relevant topic block into your application.yaml (as shown above) is simpler.
If you would like to specify the column names in Java, or if you need to include additional processing logic to handle the new column, you can do so by defining
DLC Description beans.
See DLC - Configuration for details on how to customize different aspects of the data loading.
Step 3 - Ensure FrtbApplicationConfig picks up the modifications
For the customizations to be picked up, all added Spring @Configuration classes must be included in FrtbApplicationConfig located in /frtb-application/src/main/java/com/activeviam/frtb/application/config/.
When using DirectQuery
With DirectQuery, modifying CSV files is not applicable as DirectQuery uses a remote database in place of loading data from CSV files. However, if you would like to
add a column to an existing Table with DirectQuery, then see
Modifying Datastores - when using DirectQuery.
Suggested further reading
Enriching File Fields by Adding Column Calculators
Adding New Cube Hierarchies
Adding New Cube Measures
Adding and Populating a New Store