Configuration Properties

This section documents the different configuration properties that can be used when running Atoti FRTB with DirectQuery enabled.

By default, the properties are defined in the file frtb-starter/src/main/resources/application.yaml for optimal readability. You can also define these properties in another .yaml or .properties files. If defining in a .properties file, you must specify the full property path.

Properties

Here is a list of all DirectQuery configuration properties available for all Databases:

Common DirectQuery Properties

Base path: directquery

These properties are applied to any database the application is connecting to.

waitForDataLoad

Default Value: true

The Cube will not start until the Application is synced with the remote database.

If this is false, then the application can start before the remote data has been synced, resulting in a temporarily empty cube. The cube is not broken and will eventually be populated once the aggregates of DirectQuery are computed and collected by the application.

Schema Validation

Base path: directquery.schema.validation

These properties are used to specify when and how to validate the remote database schema. If the remote database schema is bad / invalid, this can result in significant performance issues. A schema with duplicate keys can result in longer than normal aggregation / application refresh times.

validateOnStartup

Default Value: true

This will initiate a validation check of the remote database when the application starts. This validation will check that all remote tables are readable and that they do not contain any duplicate keys. If there are any errors they will be logged and, if configured with the failStartupOnBadSchema property, an exception will be thrown.

failStartupOnBadSchema

Default Value: true

This property sets what you want the system to do when a bad schema is encountered when the application is starting: either fail or just log warnings.

Clustering

Base path: directquery.clustering

Clustering properties are specified per database, for example, when specifying the clustering fields for the database in use:

directquery:
  clustering:
    enabled: true
    clusteringPerTable:
      SASensitivities: AsOfDate

Clustering allows Atoti Server to break up queries into smaller ones that can be run in parallel. This improves the initial aggregation time on the remote database as the aggregation query can be run in parallel. See the Atoti Server documentation on clustering fields for more information.

Database Specific Properties

Base path: directquery.database.xxx

These properties are applied to the specific database the application is connecting to and may be unique per database.

type

Default Value: clickhouse

The database to use in the current instance of the application. This value must be the name of the database in lowercase.

enabled

Default Value: false

If we want to enable clustering for this database.

clusteringPerTable

Default Value: empty list

Specifies a mapping of tables to a list of clustering fields.

Here is an example of how to specify the key values:

clusteringPerTable:
  TableName1: Field_1, Field_2
  TableName2: Field_1
  etc...

Snowflake Database Properties

Base path: directquery.database.snowflake

These properties only apply to the Snowflake database.

connectionString

Default Value: null

The connection string used to connect to the remote Snowflake instance.

username

Default Value: null

The username to use to authenticate the connection to Snowflake.

password

Default Value: null

The password to use to authenticate the connection to Snowflake.

warehouse

Default Value: null

The warehouse (compute) to use when executing queries on Snowflake.

feedingWarehouse

Default Value: directquery.database.snowflake.warehouse value

The warehouse (compute) to use when computing the initial aggregates on Snowflake. This will also be the warehouse to use when performing an Application Refresh.

The idea is to use a larger instance so the initial aggregation time can be faster. This warehouse will only be used for the initial aggregation and refreshes, any other user query that hits Snowflake will be executed using the directquery.database.warehouse warehouse.

database

Default Value: null

The Snowflake Database to connect to and use for queries.

schema

Default Value: null

The Snowflake Schema to connect to and use for queries.

ClickHouse Database Properties

Base path: directquery.database.clickhouse

These properties only apply to the ClickHouse database.

username

Default Value: null

The optional username to use to authenticate the connection to ClickHouse. If no authentication is defined on your ClickHouse database, these properties can be ignored.

password

Default Value: null

The optional password to use to authenticate the connection to ClickHouse. If no authentication is defined on your ClickHouse database, these properties can be ignored.

port

Default Value: null

The port the ClickHouse database is exposed on.

hostName

Default Value: null

The hostname the ClickHouse database is hosted from. For example, when running locally this would be localhost

database

Default Value: null

The ClickHouse Database to connect to and use for queries.

schema

Default Value: null

The ClickHouse Schema to connect to and use for queries.