> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Additional configuration properties

export const SpringPropertiesTable = ({metadata}) => {
  const [query, setQuery] = React.useState('');
  const renderInline = text => {
    if (!text) return '—';
    const nodes = [];
    const re = /(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g;
    let last = 0, m, key = 0;
    while ((m = re.exec(text)) !== null) {
      if (m.index > last) nodes.push(text.slice(last, m.index));
      const tok = m[0];
      if (tok.startsWith('`')) {
        nodes.push(<code key={key++} style={{
          fontSize: '0.8rem'
        }}>{tok.slice(1, -1)}</code>);
      } else if (tok.startsWith('**')) {
        nodes.push(<strong key={key++}>{tok.slice(2, -2)}</strong>);
      } else {
        const lm = (/\[([^\]]+)\]\(([^)]+)\)/).exec(tok);
        nodes.push(<a key={key++} href={lm[2]}>{lm[1]}</a>);
      }
      last = re.lastIndex;
    }
    if (last < text.length) nodes.push(text.slice(last));
    return nodes;
  };
  const shortType = type => type ? type.replace(/(?:[a-z][a-z0-9_]*\.)+/g, '') : null;
  const q = query.trim().toLowerCase();
  const visible = q ? metadata.properties.filter(p => p.name.toLowerCase().includes(q) || p.description && p.description.toLowerCase().includes(q)) : metadata.properties;
  return <div>
      <input type="text" placeholder="Filter by name or description…" value={query} onChange={e => setQuery(e.target.value)} style={{
    marginBottom: '1rem',
    padding: '0.5rem 0.75rem',
    width: '100%',
    border: '1px solid var(--border)',
    borderRadius: '0.375rem'
  }} />
      <table style={{
    width: '100%',
    borderCollapse: 'collapse',
    fontSize: '0.875rem'
  }}>
        <thead>
          <tr>
            <th style={{
    textAlign: 'left',
    padding: '0.5rem',
    borderBottom: '2px solid var(--border)'
  }}>Key</th>
            <th style={{
    textAlign: 'left',
    padding: '0.5rem',
    borderBottom: '2px solid var(--border)'
  }}>Type</th>
            <th style={{
    textAlign: 'left',
    padding: '0.5rem',
    borderBottom: '2px solid var(--border)'
  }}>Default</th>
            <th style={{
    textAlign: 'left',
    padding: '0.5rem',
    borderBottom: '2px solid var(--border)'
  }}>Description</th>
          </tr>
        </thead>
        <tbody>
          {visible.map(prop => <tr key={prop.name} style={{
    borderBottom: '1px solid var(--border)'
  }}>
              <td style={{
    padding: '0.5rem',
    verticalAlign: 'top'
  }}>
                <code style={{
    fontSize: '0.8rem'
  }}>{prop.name}</code>
                {prop.deprecated && <span style={{
    marginLeft: '0.4rem',
    fontSize: '0.7rem',
    background: '#f59e0b22',
    color: '#b45309',
    border: '1px solid #f59e0b66',
    borderRadius: '0.25rem',
    padding: '0 0.3rem'
  }}>
                    deprecated
                  </span>}
              </td>
              <td style={{
    padding: '0.5rem',
    verticalAlign: 'top'
  }}>
                {shortType(prop.type) ? <code style={{
    fontSize: '0.8rem'
  }}>{shortType(prop.type)}</code> : <span style={{
    color: 'var(--muted)'
  }}>—</span>}
              </td>
              <td style={{
    padding: '0.5rem',
    verticalAlign: 'top'
  }}>
                {prop.defaultValue !== undefined && prop.defaultValue !== null ? <code style={{
    fontSize: '0.8rem'
  }}>
                      {Array.isArray(prop.defaultValue) ? prop.defaultValue.join(', ') : String(prop.defaultValue)}
                    </code> : <span style={{
    color: 'var(--muted)'
  }}>—</span>}
              </td>
              <td style={{
    padding: '0.5rem',
    verticalAlign: 'top'
  }}>{renderInline(prop.description)}</td>
            </tr>)}
        </tbody>
      </table>
      {visible.length === 0 && <p style={{
    textAlign: 'center',
    color: 'var(--muted)',
    marginTop: '1rem'
  }}>
          No properties match “{query}”
        </p>}
    </div>;
};

export const metadata = {
  "properties": [{
    "name": "configuration.sign-off.enabled",
    "type": "java.lang.Boolean",
    "description": "Flag used to enable Sign-Off-related features.",
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "datastore-sum-duplicates",
    "type": "java.util.Map<java.lang.String,com.activeviam.frtb.starter.cfg.impl.DatastoreCustomisationsConfig$SensitivityFields>",
    "description": "For each store, the fields that should be summed when keys are duplicated.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.aggregate-tables.cubes",
    "type": "java.util.Map<java.lang.String,com.activeviam.frtb.directquery.config.properties.AggregateTablesSpringProperties$AggregateProvidersProperties>",
    "description": "The aggregate tables of each cube, by cube name.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.aggregate-tables.enabled",
    "type": "java.lang.Boolean",
    "description": "Whether the aggregate tables declared below are bootstrapped. Off unless a configuration turns it on.",
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "directquery.clustering.clustering-per-table",
    "type": "java.util.Map<java.lang.String,java.util.List<java.lang.String>>",
    "description": null,
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.clustering.enabled",
    "type": "java.lang.Boolean",
    "description": "If clustering is enabled or not",
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "directquery.clustering.fields",
    "type": "java.util.List<java.lang.String>",
    "description": "Fields to specify the Clustering on",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.clickhouse-options",
    "type": "java.util.Map<com.clickhouse.client.api.ClientConfigProperties,java.lang.String>",
    "description": "Additional options to pass to the ClickHouse client. The key type changed from `ClickHouseOption` (client v1) to `ClientConfigProperties` (client v2) as part of the ClickHouse Java client migration. This is not a breaking change for Spring-configured applications: the property keys in YAML/properties files are plain strings that Spring binds to the enum name, and the values were already stored as strings. The old v1 converter (`ClickhouseOptionsConverter`) and the `setClickhouseOptions` override that round-tripped values through `ClickHouseOption.fromString` are no longer needed \u2014 the v2 client accepts string values directly.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.database",
    "type": "java.lang.String",
    "description": "Name of the Database to use. `null` means use the default Clickhouse value.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.emulated-time-travel-description.column-type",
    "type": "java.lang.String",
    "description": "The type used for the `.emptyTableVersion` and `.validRowToColumnValue` values as `com.activeviam.database.api.types.ILiteralType` (string, double, ...)",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.emulated-time-travel-description.empty-table-version",
    "type": "java.lang.String",
    "description": "The version value for an empty table. It is not possible to determine the version of a currently empty table with a discovery as there is no value. However, we still need to use time travel filters because new data can be inserted in future versions, and we don't want it to impact the versions before insertion. To guarantee consistency, this value must be set to a value that is lower than all the future version numbers or timestamps, such as 0 or a timestamp in the past.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.emulated-time-travel-description.time-travel-map",
    "type": "java.util.Map<java.lang.String,com.activeviam.accelerator.common.directquery.config.TableTimeTravelDescriptionSpringProperties>",
    "description": "Map of the tables with emulated time-travel.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.emulated-time-travel-description.valid-row-to-column-value",
    "type": "java.lang.String",
    "description": "The value of the `to` column while the row is valid. Typical values would be null or a max value.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.external-database-query-timeout",
    "type": "java.time.Duration",
    "description": null,
    "deprecated": false,
    "defaultValue": "1h"
  }, {
    "name": "directquery.database.clickhouse.feeding-query-timeout",
    "type": "java.time.Duration",
    "description": "Timeout (in seconds) which can be set on a query running on the external database during the feeding. Feeding queries are the ones run during the initial loading to feed the aggregate providers and hierarchies, and also during the refresh operations. It defaults to 1 hour and cannot be less than a second. This limit is only for external databases and does not impact queries on datastore. Warning: increasing this value might result in longer queries and higher costs.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.get-by-key-behavior",
    "type": "com.activeviam.database.api.IDatabaseSettings$GetByKeyBehavior",
    "description": "While Get-by-key queries performed on the datastore are very fast, they can take a long time on external databases, solely due to the networking time. When performing a Get-by-key query through DirectQuery, the possible behaviors are denying, warning, or allowing the query to run. Defaults to `IDatabaseSettings.DEFAULT_GET_BY_KEY_QUERY_BEHAVIOR`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.host-name",
    "type": "java.lang.String",
    "description": "Hostname to connect to. Using `null` means use the default Clickhouse value.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.max-sub-queries-allowed-in-multi-step-query",
    "type": "java.lang.Integer",
    "description": "A query clustered by too many fields or by fields with a high cardinality can be divided in lots of sub queries. To avoid creating too many queries on the external database, a limit is set on the number of those sub queries. This property sets the limit. It is recommended to be conservative when increasing the limit. See documentation for more details. Defaults to `IDatabaseSettings.DEFAULT_MAX_SUB_QUERIES_ALLOWED_IN_MULTI_STEP_QUERY`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.password",
    "type": "java.lang.String",
    "description": "Optional password to use to connect to Clickhouse.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.port",
    "type": "java.lang.Integer",
    "description": "Port number on which the Clickhouse server is available. Using `null` means use the default Clickhouse value.",
    "deprecated": false,
    "defaultValue": 0
  }, {
    "name": "directquery.database.clickhouse.protocol",
    "type": "com.clickhouse.client.api.enums.Protocol",
    "description": "Protocol to use to connect to Clickhouse Can be http Using `null` means use the default Clickhouse value.",
    "deprecated": false,
    "defaultValue": "http"
  }, {
    "name": "directquery.database.clickhouse.time-travel-discovery-query-timeout",
    "type": "java.time.Duration",
    "description": "The timeout for the querying time-travel metadata during the discovery process. Metadata querying is slower than regular querying, so this allows to have a different timeout.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.use-clustering-fields",
    "type": "com.activeviam.database.api.IDatabaseSettings$UseClusteringFields",
    "description": "Returns whether clustering fields should be used for all queries or only for `QueryTags.CATEGORY_FEEDING`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.clickhouse.username",
    "type": "java.lang.String",
    "description": "Optional username to use to connect to Clickhouse.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.connection-string",
    "type": "java.lang.String",
    "description": "The JDBC connection string",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.database",
    "type": "java.lang.String",
    "description": "The used remote database name",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.emulated-time-travel-description.column-type",
    "type": "java.lang.String",
    "description": "The type used for the `.emptyTableVersion` and `.validRowToColumnValue` values as `com.activeviam.database.api.types.ILiteralType` (string, double, ...)",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.emulated-time-travel-description.empty-table-version",
    "type": "java.lang.String",
    "description": "The version value for an empty table. It is not possible to determine the version of a currently empty table with a discovery as there is no value. However, we still need to use time travel filters because new data can be inserted in future versions, and we don't want it to impact the versions before insertion. To guarantee consistency, this value must be set to a value that is lower than all the future version numbers or timestamps, such as 0 or a timestamp in the past.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.emulated-time-travel-description.time-travel-map",
    "type": "java.util.Map<java.lang.String,com.activeviam.accelerator.common.directquery.config.TableTimeTravelDescriptionSpringProperties>",
    "description": "Map of the tables with emulated time-travel.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.emulated-time-travel-description.valid-row-to-column-value",
    "type": "java.lang.String",
    "description": "The value of the `to` column while the row is valid. Typical values would be null or a max value.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.external-database-query-timeout",
    "type": "java.time.Duration",
    "description": "Set the external database query timeout and validates user input validation.",
    "deprecated": false,
    "defaultValue": "1h"
  }, {
    "name": "directquery.database.databricks.feeding-query-timeout",
    "type": "java.time.Duration",
    "description": "Timeout (in seconds) which can be set on a query running on the external database during the feeding. Feeding queries are the ones run during the initial loading to feed the aggregate providers and hierarchies, and also during the refresh operations. It defaults to 1 hour and cannot be less than a second. This limit is only for external databases and does not impact queries on datastore. Warning: increasing this value might result in longer queries and higher costs.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.get-by-key-behavior",
    "type": "com.activeviam.database.api.IDatabaseSettings$GetByKeyBehavior",
    "description": "While Get-by-key queries performed on the datastore are very fast, they can take a long time on external databases, solely due to the networking time. When performing a Get-by-key query through DirectQuery, the possible behaviors are denying, warning, or allowing the query to run. Defaults to `IDatabaseSettings.DEFAULT_GET_BY_KEY_QUERY_BEHAVIOR`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.gross-sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Databricks to perform an element-wise gross sum on vectors (i.e. the sum of absolute values) Check the Databricks Connector Atoti documentation to see how to define this function.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.heavy-load-connection-string",
    "type": "java.lang.String",
    "description": "Optional special JDBC connection string used for feeding queries. See the Databricks Connector Atoti documentation to see how to use this feature.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.jdbc-properties",
    "type": "java.util.Map<java.lang.String,java.lang.String>",
    "description": "Additional properties used by the connection",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.long-sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Databricks to perform an element-wise long sum on vectors (i.e. the sum of positive values) Check the Databricks Connector Atoti documentation to see how to define this function.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.max-sub-queries-allowed-in-multi-step-query",
    "type": "java.lang.Integer",
    "description": "A query clustered by too many fields or by fields with a high cardinality can be divided in lots of sub queries. To avoid creating too many queries on the external database, a limit is set on the number of those sub queries. This property sets the limit. It is recommended to be conservative when increasing the limit. See documentation for more details. Defaults to `IDatabaseSettings.DEFAULT_MAX_SUB_QUERIES_ALLOWED_IN_MULTI_STEP_QUERY`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.password",
    "type": "java.lang.String",
    "description": "The password used by the connection",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.schema",
    "type": "java.lang.String",
    "description": "The used remote schema name",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.short-sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Databricks to perform an element-wise short sum on vectors (i.e. the sum of negative values) Check the Databricks Connector Atoti documentation to see how to define this function.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Databricks to perform an element-wise sum on vectors. Check the Databricks Connector Atoti documentation to see how to register this function.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.sum-scalar-product-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Databricks to perform an element-wise vector sum multiplied by a scalar product on each row. Check the Databricks Connector Atoti documentation to see how to define this function.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.time-travel-discovery-query-timeout",
    "type": "java.time.Duration",
    "description": "The timeout for the querying time-travel metadata during the discovery process. Metadata querying is slower than regular querying, so this allows to have a different timeout.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.time-travel-policy",
    "type": "com.activeviam.database.databricks.api.DatabricksDatabaseSettings$TimeTravelPolicy",
    "description": "Databricks view do not support time-travel queries. By default, if some tables in the schema are views, time-travel is disabled, but can be activated for mixed data model containing both tables and views, at the risk of data desynchronization as queries on views might return newly inserted/updated data. Default value is `TimeTravelPolicy#STRICT`",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.databricks.use-clustering-fields",
    "type": "com.activeviam.database.api.IDatabaseSettings$UseClusteringFields",
    "description": "Returns whether clustering fields should be used for all queries or only for `QueryTags.CATEGORY_FEEDING`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.connect-retry-count",
    "type": "java.lang.Integer",
    "description": "Number of connection retries",
    "deprecated": false,
    "defaultValue": 5
  }, {
    "name": "directquery.database.mssql.database",
    "type": "java.lang.String",
    "description": "The database name",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.emulated-time-travel-description.column-type",
    "type": "java.lang.String",
    "description": "The type used for the `.emptyTableVersion` and `.validRowToColumnValue` values as `com.activeviam.database.api.types.ILiteralType` (string, double, ...)",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.emulated-time-travel-description.empty-table-version",
    "type": "java.lang.String",
    "description": "The version value for an empty table. It is not possible to determine the version of a currently empty table with a discovery as there is no value. However, we still need to use time travel filters because new data can be inserted in future versions, and we don't want it to impact the versions before insertion. To guarantee consistency, this value must be set to a value that is lower than all the future version numbers or timestamps, such as 0 or a timestamp in the past.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.emulated-time-travel-description.time-travel-map",
    "type": "java.util.Map<java.lang.String,com.activeviam.accelerator.common.directquery.config.TableTimeTravelDescriptionSpringProperties>",
    "description": "Map of the tables with emulated time-travel.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.emulated-time-travel-description.valid-row-to-column-value",
    "type": "java.lang.String",
    "description": "The value of the `to` column while the row is valid. Typical values would be null or a max value.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.encrypt",
    "type": "java.lang.String",
    "description": "Is the connection encrypted",
    "deprecated": false,
    "defaultValue": "false"
  }, {
    "name": "directquery.database.mssql.external-database-query-timeout",
    "type": "java.time.Duration",
    "description": "Set the external database query timeout and validates user input validation.",
    "deprecated": false,
    "defaultValue": "1h"
  }, {
    "name": "directquery.database.mssql.feeding-query-timeout",
    "type": "java.time.Duration",
    "description": "Timeout (in seconds) which can be set on a query running on the external database during the feeding. Feeding queries are the ones run during the initial loading to feed the aggregate providers and hierarchies, and also during the refresh operations. It defaults to 1 hour and cannot be less than a second. This limit is only for external databases and does not impact queries on datastore. Warning: increasing this value might result in longer queries and higher costs.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.get-by-key-behavior",
    "type": "com.activeviam.database.api.IDatabaseSettings$GetByKeyBehavior",
    "description": "While Get-by-key queries performed on the datastore are very fast, they can take a long time on external databases, solely due to the networking time. When performing a Get-by-key query through DirectQuery, the possible behaviors are denying, warning, or allowing the query to run. Defaults to `IDatabaseSettings.DEFAULT_GET_BY_KEY_QUERY_BEHAVIOR`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.host-name",
    "type": "java.lang.String",
    "description": "The database hostname",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.max-sub-queries-allowed-in-multi-step-query",
    "type": "java.lang.Integer",
    "description": "A query clustered by too many fields or by fields with a high cardinality can be divided in lots of sub queries. To avoid creating too many queries on the external database, a limit is set on the number of those sub queries. This property sets the limit. It is recommended to be conservative when increasing the limit. See documentation for more details. Defaults to `IDatabaseSettings.DEFAULT_MAX_SUB_QUERIES_ALLOWED_IN_MULTI_STEP_QUERY`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.password",
    "type": "java.lang.String",
    "description": "The user password for this connection",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.port",
    "type": "java.lang.Integer",
    "description": "The database connection port",
    "deprecated": false,
    "defaultValue": 0
  }, {
    "name": "directquery.database.mssql.schema",
    "type": "java.lang.String",
    "description": "The schema name",
    "deprecated": false,
    "defaultValue": "dbo"
  }, {
    "name": "directquery.database.mssql.time-travel-discovery-query-timeout",
    "type": "java.time.Duration",
    "description": "The timeout for the querying time-travel metadata during the discovery process. Metadata querying is slower than regular querying, so this allows to have a different timeout.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.trust-server-certificate",
    "type": "java.lang.Boolean",
    "description": "Does SSL use a truststore for certificates",
    "deprecated": false,
    "defaultValue": true
  }, {
    "name": "directquery.database.mssql.use-clustering-fields",
    "type": "com.activeviam.database.api.IDatabaseSettings$UseClusteringFields",
    "description": "Returns whether clustering fields should be used for all queries or only for `QueryTags.CATEGORY_FEEDING`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.mssql.username",
    "type": "java.lang.String",
    "description": "The userName used by this connection",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.additional-options",
    "type": "java.util.Map<net.snowflake.client.internal.core.SFSessionProperty,java.lang.String>",
    "description": "Any additional properties that need t be set",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.connection-string",
    "type": "java.lang.String",
    "description": "The JDBC connection string",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.database",
    "type": "java.lang.String",
    "description": "The database where the schema is located, it will also feed SFSessionProperty.DATABASE",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.emulated-time-travel-description.column-type",
    "type": "java.lang.String",
    "description": "The type used for the `.emptyTableVersion` and `.validRowToColumnValue` values as `com.activeviam.database.api.types.ILiteralType` (string, double, ...)",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.emulated-time-travel-description.empty-table-version",
    "type": "java.lang.String",
    "description": "The version value for an empty table. It is not possible to determine the version of a currently empty table with a discovery as there is no value. However, we still need to use time travel filters because new data can be inserted in future versions, and we don't want it to impact the versions before insertion. To guarantee consistency, this value must be set to a value that is lower than all the future version numbers or timestamps, such as 0 or a timestamp in the past.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.emulated-time-travel-description.time-travel-map",
    "type": "java.util.Map<java.lang.String,com.activeviam.accelerator.common.directquery.config.TableTimeTravelDescriptionSpringProperties>",
    "description": "Map of the tables with emulated time-travel.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.emulated-time-travel-description.valid-row-to-column-value",
    "type": "java.lang.String",
    "description": "The value of the `to` column while the row is valid. Typical values would be null or a max value.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.external-database-query-timeout",
    "type": "java.time.Duration",
    "description": "Set the external database query timeout and validates user input validation.",
    "deprecated": false,
    "defaultValue": "1h"
  }, {
    "name": "directquery.database.snowflake.feeding-query-timeout",
    "type": "java.time.Duration",
    "description": "Timeout (in seconds) which can be set on a query running on the external database during the feeding. Feeding queries are the ones run during the initial loading to feed the aggregate providers and hierarchies, and also during the refresh operations. It defaults to 1 hour and cannot be less than a second. This limit is only for external databases and does not impact queries on datastore. Warning: increasing this value might result in longer queries and higher costs.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.feeding-warehouse",
    "type": "java.lang.String",
    "description": "The feeding warehouse",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.get-by-key-behavior",
    "type": "com.activeviam.database.api.IDatabaseSettings$GetByKeyBehavior",
    "description": "While Get-by-key queries performed on the datastore are very fast, they can take a long time on external databases, solely due to the networking time. When performing a Get-by-key query through DirectQuery, the possible behaviors are denying, warning, or allowing the query to run. Defaults to `IDatabaseSettings.DEFAULT_GET_BY_KEY_QUERY_BEHAVIOR`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.gross-sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Snowflake to perform an element-wise gross sum on vectors (i.e. the sum of absolute values) Check the Snowflake Connector Atoti documentation to see how to define this function. N-B: Defining UDAFs on Snowflake is a feature on private preview. It might not be available on your Snowflake account.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.long-sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Snowflake to perform an element-wise long sum on vectors (i.e. the sum of positive values) Check the Snowflake Connector Atoti documentation to see how to define this function. N-B: Defining UDAFs on Snowflake is a feature on private preview. It might not be available on your Snowflake account.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.max-result-set-size",
    "type": "java.lang.Integer",
    "description": "The max size of the snowflake result set when split by Snowflake (in Bytes).",
    "deprecated": false,
    "defaultValue": 0
  }, {
    "name": "directquery.database.snowflake.max-sub-queries-allowed-in-multi-step-query",
    "type": "java.lang.Integer",
    "description": "A query clustered by too many fields or by fields with a high cardinality can be divided in lots of sub queries. To avoid creating too many queries on the external database, a limit is set on the number of those sub queries. This property sets the limit. It is recommended to be conservative when increasing the limit. See documentation for more details. Defaults to `IDatabaseSettings.DEFAULT_MAX_SUB_QUERIES_ALLOWED_IN_MULTI_STEP_QUERY`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.password",
    "type": "java.lang.String",
    "description": "The password for this connection, it will fill the SFSessionProperty.PASSWORD entry",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.role",
    "type": "java.lang.String",
    "description": "The user role used for the database access, it will fill SFSessionProperty.ROLE",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.schema",
    "type": "java.lang.String",
    "description": "The schema used by direct query, it will also feed SFSessionProperty.SCHEMA",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.short-sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Snowflake to perform an element-wise short sum on vectors (i.e. the sum of negative values) Check the Snowflake Connector Atoti documentation to see how to define this function. N-B: Defining UDAFs on Snowflake is a feature on private preview. It might not be available on your Snowflake account.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.sum-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Snowflake to perform an element-wise sum on vectors. Check the Snowflake Connector Atoti documentation to see how to define this function. N-B: Defining UDAFs on Snowflake is a feature on private preview. It might not be available on your Snowflake account.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.sum-scalar-product-native-array-udaf-name",
    "type": "java.lang.String",
    "description": "Optional User Defined Aggregate Function name registered on Snowflake to perform an element-wise vector sum multiplied by a scalar product on each row. Check the Snowflake Connector Atoti documentation to see how to define this function. N-B: Defining UDAFs on Snowflake is a feature on private preview. It might not be available on your Snowflake account.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.time-travel-discovery-query-timeout",
    "type": "java.time.Duration",
    "description": "The timeout for the querying time-travel metadata during the discovery process. Metadata querying is slower than regular querying, so this allows to have a different timeout.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.use-cache",
    "type": "java.lang.Boolean",
    "description": "USE_CACHED_RESULT_PROPERTY",
    "deprecated": false,
    "defaultValue": true
  }, {
    "name": "directquery.database.snowflake.use-clustering-fields",
    "type": "com.activeviam.database.api.IDatabaseSettings$UseClusteringFields",
    "description": "Returns whether clustering fields should be used for all queries or only for `QueryTags.CATEGORY_FEEDING`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.use-native-time-travel",
    "type": "java.lang.Boolean",
    "description": "Use the native Snowflake time travel Defaults to `SnowflakeDatabaseSettings.DEFAULT_USE_NATIVE_TIME_TRAVEL`.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.username",
    "type": "java.lang.String",
    "description": "The username for this connection, it will fill the SFSessionProperty.USER entry",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.snowflake.warehouse",
    "type": "java.lang.String",
    "description": "The used warehouse for computation",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.database.type",
    "type": "com.activeviam.accelerator.common.directquery.SupportedDatabaseTypes",
    "description": "The type of the used database, for instance clickhouse, databricks, mssql or snowflake",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.dates-filter.dates-to-exclude",
    "type": "java.util.List<java.time.LocalDate>",
    "description": null,
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.dates-filter.dates-to-include",
    "type": "java.util.List<java.time.LocalDate>",
    "description": null,
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.enabled",
    "type": "java.lang.Boolean",
    "description": "Set to true to enable DirectQuery feature",
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "directquery.incremental-refresh.templates",
    "type": "java.util.Map<java.lang.String,com.activeviam.accelerator.common.directquery.config.TemplateSpringProperties>",
    "description": "Incremental refresh templates. A map of template name to configuration. Example usage: directquery.incremental-refresh.templates.MyIncrementalRefreshTemplate.tables.BaseTable.fields[0].name=TradeId directquery.incremental-refresh.templates.MyIncrementalRefreshTemplate.tables.BaseTable.fields[1].name=AsOfDate directquery.incremental-refresh.templates.MyIncrementalRefreshTemplate.tables.BaseTable.fields[1].alias=Date directquery.incremental-refresh.templates.MyIncrementalRefreshTemplate.tables.TradeTable.fields[0].name=TradeAttribute directquery.incremental-refresh.templates.MyIncrementalRefreshTemplate.tables.TradeTable.fields[1].name=AsOfDate directquery.incremental-refresh.templates.MyIncrementalRefreshTemplate.tables.TradeTable.fields[1].alias=Date",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "directquery.schema.default-vector-size",
    "type": "java.lang.Integer",
    "description": "Default vector size used when vectorizing vector fields as columns (see `VectorType#COLUMN`). Array fields are expanded into this many scalar columns.",
    "deprecated": false,
    "defaultValue": 250
  }, {
    "name": "directquery.schema.validation.fail-startup-on-bad-schema",
    "type": "java.lang.Boolean",
    "description": "Does any schema validation error will halt the server.",
    "deprecated": false,
    "defaultValue": true
  }, {
    "name": "directquery.schema.validation.table-validation-query-timeout",
    "type": "java.time.Duration",
    "description": null,
    "deprecated": false,
    "defaultValue": "1m"
  }, {
    "name": "directquery.schema.validation.validate-on-startup",
    "type": "java.lang.Boolean",
    "description": "Should the schema be validated upon startup of the sever.",
    "deprecated": false,
    "defaultValue": true
  }, {
    "name": "directquery.with-adjustments",
    "type": "java.lang.Boolean",
    "description": "The Database will also hold the adjustments",
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "frtb.crypto-2a.apply-correlation-stress",
    "type": "java.lang.Boolean",
    "description": null,
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "frtb.crypto-2a.exchange-stored",
    "type": "java.lang.Boolean",
    "description": null,
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "frtb.curvature-cvr.enabled",
    "type": "java.lang.Boolean",
    "description": null,
    "deprecated": true,
    "defaultValue": false
  }, {
    "name": "frtb.distribution.enable-data-duplication",
    "type": "java.lang.Boolean",
    "description": "Set to true to allow duplicate members in the distribution level of horizontally distributed data cubes. This is typically useful in a hybrid setup where all data is held in DirectQuery and only recent data in-memory. With data duplication enabled, and by specifying node priorities, the in-memory data can be preferred. Older members can then be periodically unloaded from the in-memory cube and instead accessed from DirectQuery.",
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "frtb.distribution.levels.ima-cube",
    "type": "com.activeviam.activepivot.core.intf.api.cube.metadata.LevelIdentifier[]",
    "description": "InternalModelApproachCube distributing level.",
    "deprecated": false,
    "defaultValue": "AsOfDate@Date@Dates"
  }, {
    "name": "frtb.distribution.levels.ima-drc-cube",
    "type": "com.activeviam.activepivot.core.intf.api.cube.metadata.LevelIdentifier[]",
    "description": "IMADRCCube distributing level.",
    "deprecated": false,
    "defaultValue": "AsOfDate@Date@Dates"
  }, {
    "name": "frtb.distribution.levels.pl-cube",
    "type": "com.activeviam.activepivot.core.intf.api.cube.metadata.LevelIdentifier[]",
    "description": "PLCube distributing level.",
    "deprecated": false,
    "defaultValue": "AsOfDate@Date@Dates"
  }, {
    "name": "frtb.distribution.levels.sa-cube",
    "type": "com.activeviam.activepivot.core.intf.api.cube.metadata.LevelIdentifier[]",
    "description": "StandardisedApproachCube distributing level.",
    "deprecated": false,
    "defaultValue": "AsOfDate@Date@Dates"
  }, {
    "name": "frtb.distribution.levels.stress-calibration-cube",
    "type": "com.activeviam.activepivot.core.intf.api.cube.metadata.LevelIdentifier[]",
    "description": "StressCalibrationCube distributing level.",
    "deprecated": false,
    "defaultValue": "AsOfDate@Date@Dates"
  }, {
    "name": "frtb.distribution.priority.ima-cube",
    "type": "java.lang.Integer",
    "description": "Specify the priority of the InternalModelApproachCube in cases of data overlap within a horizontal distribution.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "frtb.distribution.priority.ima-drc-cube",
    "type": "java.lang.Integer",
    "description": "Specify the priority of the IMADRCCube in cases of data overlap within a horizontal distribution.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "frtb.distribution.priority.pl-cube",
    "type": "java.lang.Integer",
    "description": "Specify the priority of the PLCube in cases of data overlap within a horizontal distribution.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "frtb.distribution.priority.sa-cube",
    "type": "java.lang.Integer",
    "description": "Specify the priority of the StandardisedApproachCube in cases of data overlap within a horizontal distribution.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "frtb.distribution.priority.stress-calibration-cube",
    "type": "java.lang.Integer",
    "description": "Specify the priority of the StressCalibrationCube in cases of data overlap within a horizontal distribution.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "frtb.eu-da.rrao-zero-risk-weight.level",
    "type": "java.lang.String",
    "description": "Cube level of the RRAO Zero Risk Weight flag, in `level@hierarchy@dimension` form. Bound here so that the property is a declared member of the prefix. The measures in `frtb-core` read it from the environment rather than from this class.",
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "frtb.historical-dates-provider.as-of-date-field",
    "type": "java.lang.String",
    "description": "The field name used to collect the historical dates from the stores.",
    "deprecated": false,
    "defaultValue": "AsOfDate"
  }, {
    "name": "frtb.historical-dates-provider.is-using-approximate-members",
    "type": "java.lang.Boolean",
    "description": "If we are using `IStatisticsQueryRunner.getApproximateDistinctValues` to get the distinct dates values from the `.storesToScan`. Otherwise, distinct datastore queries will be used to get the historical dates.",
    "deprecated": false,
    "defaultValue": true
  }, {
    "name": "frtb.historical-dates-provider.stores-to-scan",
    "type": "java.util.List<java.lang.String>",
    "description": "The names of the stores to be used to collect the historical dates.",
    "deprecated": false,
    "defaultValue": "[PLTrades, IMATrades, DRCIMABase, SASensitivities, StressCalibrationTrades]"
  }, {
    "name": "frtb.migration.export.base-dir",
    "type": "java.lang.String",
    "description": null,
    "deprecated": false,
    "defaultValue": null
  }, {
    "name": "frtb.migration.export.enabled",
    "type": "java.lang.Boolean",
    "description": null,
    "deprecated": false,
    "defaultValue": true
  }, {
    "name": "frtb.pro-rata.multi-hierarchy-totals",
    "type": "java.lang.Boolean",
    "description": "Set to \"true\" to report, at the total of an outer pro-rata hierarchy, the sum of its members' allocations.",
    "deprecated": false,
    "defaultValue": false
  }, {
    "name": "parent-child.book-depth",
    "type": "java.lang.Integer",
    "description": "The number of levels in the Book parent-child hierarchy. Must be positive: the hierarchy is created before its levels are added, so a non-positive depth leaves it with no level and fails startup.",
    "deprecated": false,
    "defaultValue": 15
  }, {
    "name": "parent-child.legal-entity-depth",
    "type": "java.lang.Integer",
    "description": "The number of levels in the Legal Entity parent-child hierarchy. Must be positive: the hierarchy is created before its levels are added, so a non-positive depth leaves it with no level and fails startup.",
    "deprecated": false,
    "defaultValue": 5
  }]
};

export const productName = "Atoti FRTB";

This page lists additional {productName} configuration properties that are not described in the [Startup properties](./startup-properties) reference, including DirectQuery and other advanced options. Like the other startup properties, they can be set in `application.yaml`, `application.properties`, or passed as command-line arguments.

<SpringPropertiesTable metadata={metadata} />
