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.