> ## 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.

# Common library properties

> Spring Boot configuration properties from the Common Accelerator Library shared across Atoti accelerators, covering DirectQuery database connectivity and Sign-Off configuration

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 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)'
  }}>Name</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'
  }}>
                {prop.type ? <code style={{
    fontSize: '0.8rem'
  }}>{prop.type}</code> : <span style={{
    color: 'var(--muted)'
  }}>—</span>}
              </td>
              <td style={{
    padding: '0.5rem',
    verticalAlign: 'top'
  }}>
                {prop.defaultValue !== undefined ? <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": "directquery.clustering.clustering-per-table",
    "type": "java.util.Map<java.lang.String,java.util.List<java.lang.String>>",
    "description": "",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "name": "directquery.database.clickhouse.external-database-query-timeout",
    "type": "java.time.Duration",
    "description": "",
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "name": "directquery.database.clickhouse.password",
    "type": "java.lang.String",
    "description": "Optional password to use to connect to Clickhouse.",
    "deprecated": false
  }, {
    "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
  }, {
    "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 feeding queries`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false
  }, {
    "name": "directquery.database.clickhouse.username",
    "type": "java.lang.String",
    "description": "Optional username to use to connect to Clickhouse.",
    "deprecated": false
  }, {
    "name": "directquery.database.databricks.connection-string",
    "type": "java.lang.String",
    "description": "The JDBC connection string",
    "deprecated": false
  }, {
    "name": "directquery.database.databricks.database",
    "type": "java.lang.String",
    "description": "The used remote database name",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "name": "directquery.database.databricks.password",
    "type": "java.lang.String",
    "description": "The password used by the connection",
    "deprecated": false
  }, {
    "name": "directquery.database.databricks.schema",
    "type": "java.lang.String",
    "description": "The used remote schema name",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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 feeding queries`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "name": "directquery.database.mssql.host-name",
    "type": "java.lang.String",
    "description": "The database hostname",
    "deprecated": false
  }, {
    "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
  }, {
    "name": "directquery.database.mssql.password",
    "type": "java.lang.String",
    "description": "The user password for this connection",
    "deprecated": false
  }, {
    "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
  }, {
    "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 feeding queries`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false
  }, {
    "name": "directquery.database.mssql.username",
    "type": "java.lang.String",
    "description": "The userName used by this connection",
    "deprecated": false
  }, {
    "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
  }, {
    "name": "directquery.database.snowflake.connection-string",
    "type": "java.lang.String",
    "description": "The JDBC connection string",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "name": "directquery.database.snowflake.feeding-warehouse",
    "type": "java.lang.String",
    "description": "The feeding warehouse",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "name": "directquery.database.snowflake.password",
    "type": "java.lang.String",
    "description": "The password for this connection, it will fill the SFSessionProperty.PASSWORD entry",
    "deprecated": false
  }, {
    "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
  }, {
    "name": "directquery.database.snowflake.schema",
    "type": "java.lang.String",
    "description": "The schema used by direct query, it will also feed SFSessionProperty.SCHEMA",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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
  }, {
    "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 feeding queries`. Defaults to `IDatabaseSettings.DEFAULT_USE_CLUSTERING_FIELDS`.",
    "deprecated": false
  }, {
    "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
  }, {
    "name": "directquery.database.snowflake.username",
    "type": "java.lang.String",
    "description": "The username for this connection, it will fill the SFSessionProperty.USER entry",
    "deprecated": false
  }, {
    "name": "directquery.database.snowflake.warehouse",
    "type": "java.lang.String",
    "description": "The used warehouse for computation",
    "deprecated": false
  }, {
    "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
  }, {
    "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
  }, {
    "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": "",
    "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
  }]
};

## Overview

These configuration properties are provided by the shared **Common Accelerator Library**
(`com.activeviam.apps:shared`) rather than by Atoti Market Risk itself. They are common to the
Atoti accelerators and configure cross-cutting features: DirectQuery database connectivity
(`directquery.*`) and Sign-Off (`configuration.*`). Use the filter to narrow the list (for example,
type `directquery` or a database name such as `snowflake`, `databricks`, or `clickhouse`).

## Properties

<SpringPropertiesTable metadata={metadata} />
