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

# ConnectionConfig

<span id="atoti_directquery_databricks.ConnectionConfig" />

> atoti\_directquery\_databricks.ConnectionConfig(<br />
>     \*,<br />
>     *password*: [str](https://docs.python.org/3/library/stdtypes.html#str) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *auto\_multi\_column\_array\_conversion*: [AutoMultiColumnArrayConversion](./atoti.directquery.array_conversion.AutoMultiColumnArrayConversion#atoti.AutoMultiColumnArrayConversion) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *column\_clustered\_queries*: 'all' | 'feeding' = `'feeding'`,<br />
>     *feeding\_query\_timeout*: Duration = `datetime.timedelta(seconds=3600)`,<br />
>     *lookup\_mode*: 'allow' | 'warn' | 'deny' = `'warn'`,<br />
>     *max\_sub\_queries*: Annotated\[[int](https://docs.python.org/3/library/functions.html#int), Field(gt=0)] = `500`,<br />
>     *query\_timeout*: Duration = `datetime.timedelta(seconds=300)`,<br />
>     *url*: [str](https://docs.python.org/3/library/stdtypes.html#str),<br />
>     *feeding\_url*: [str](https://docs.python.org/3/library/stdtypes.html#str) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *time\_travel*: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)\[False, 'lax', 'strict'] = `'strict'`,<br />
> )

Config to connect to a Databricks database.

```pycon theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
>>> import os
>>> from atoti_directquery_databricks import ConnectionConfig
>>> connection_config = ConnectionConfig(
...     url="jdbc:databricks://"
...     + os.environ["DATABRICKS_SERVER_HOSTNAME"]
...     + "/default;"
...     + "transportMode=http;"
...     + "ssl=1;"
...     + "httpPath="
...     + os.environ["DATABRICKS_HTTP_PATH_SQL_WAREHOUSE"]
...     + ";"
...     + "AuthMech=3;"
...     + "UID=token;",
...     password=os.environ["DATABRICKS_AUTH_TOKEN"],
... )
>>> external_database = session.connect_to_external_database(connection_config)
```

### Attributes

<h4 id="atoti_directquery_databricks.ConnectionConfig.url">
  *url*
</h4>

The JDBC connection string.

<h4 id="atoti_directquery_databricks.ConnectionConfig.feeding_url">
  *feeding\_url*
</h4>

When not `None`, this JDBC connection string will be used instead of [`url`](#atoti_directquery_databricks.ConnectionConfig.url) for the feeding phases.

<h4 id="atoti_directquery_databricks.ConnectionConfig.time_travel">
  *time\_travel*
</h4>

How to use Databricks’ time travel feature.

Databricks does not support time travel with views, so the options are:

* `False`: tables and views are queried on the latest state of the database.
* `"lax"`: tables are queried with time travel but views are queried without it.
* `"strict"`: tables are queried with time travel and querying a view raises an error.

<h4 id="atoti_directquery_databricks.ConnectionConfig.auto_multi_column_array_conversion">
  *auto\_multi\_column\_array\_conversion*
</h4>

When not `None`, multi-column array conversion will be performed automatically.

<h4 id="atoti_directquery_databricks.ConnectionConfig.column_clustered_queries">
  *column\_clustered\_queries*
</h4>

Control which queries will use clustering columns.

<h4 id="atoti_directquery_databricks.ConnectionConfig.feeding_query_timeout">
  *feeding\_query\_timeout*
</h4>

Timeout for queries performed on the external database during feeding phases.

The feeding phases are:

* the initial load to feed [`aggregate_providers`](./atoti.Cube.aggregate_providers#atoti.Cube.aggregate_providers) and [`hierarchies`](./atoti.Cube.hierarchies#atoti.Cube.hierarchies);
* the refresh operations.

<h4 id="atoti_directquery_databricks.ConnectionConfig.lookup_mode">
  *lookup\_mode*
</h4>

Whether lookup queries on the external database are allowed.

Lookup can be very slow and expensive as the database may not enforce primary keys.

<h4 id="atoti_directquery_databricks.ConnectionConfig.max_sub_queries">
  *max\_sub\_queries*
</h4>

Maximum number of sub queries performed when splitting a query into multi-step queries.

<h4 id="atoti_directquery_databricks.ConnectionConfig.password">
  *password*
</h4>

The password to connect to the database.

Passing it in this separate attribute prevents it from being logged alongside the connection string.

If `None`, a password is expected to be present in [`url`](#atoti_directquery_databricks.ConnectionConfig.url).

<h4 id="atoti_directquery_databricks.ConnectionConfig.query_timeout">
  *query\_timeout*
</h4>

Timeout for queries performed on the external database outside feeding phases.
