Skip to main content

final class atoti_directquery_databricks.ConnectionConfig

Config to connect to a Databricks database.

Example

array_aggregation_precision : Literal[‘exact’, ‘float’] = ‘exact’

The precision array columns are aggregated with. Databricks aggregates arrays with its vector_sum function, which only accepts ARRAY<FLOAT>. Aggregating an array of any other numeric type therefore requires casting each of its elements to FLOAT first:
  • "exact": such an aggregation raises an error rather than silently returning inaccurate values.
  • "float": such an aggregation is performed, at the cost of accuracy: a DOUBLE element keeps roughly 7 significant digits instead of 15, and an INT or BIGINT element above 2**24 is rounded.
Only the type of the aggregated column matters, not the type of the resulting measure: the result of an ARRAY<FLOAT> aggregation is widened back without losing anything.

array_long_agg_function_name : str | None = None

The name (if different from the default) of the UDAF performing atoti.agg.long() on native arrays.

Deprecated

Deprecated since version 0.9.14: Spark UDAFs API is not recommended by Databricks, use array conversion instead.

array_short_agg_function_name : str | None = None

The name (if different from the default) of the UDAF performing atoti.agg.short() on native arrays.

Deprecated

Deprecated since version 0.9.14: Spark UDAFs API is not recommended by Databricks, use array conversion instead.

array_sum_agg_function_name : str | None = None

The name (if different from the default) of the UDAF performing atoti.agg.sum() on native arrays.

Deprecated

Deprecated since version 0.9.14: Spark UDAFs API is not recommended by Databricks, use array conversion instead.

array_sum_product_agg_function_name : str | None = None

The name (if different from the default) of the UDAF performing atoti.agg.sum_product() on native arrays.

Deprecated

Deprecated since version 0.9.14: Spark UDAFs API is not recommended by Databricks, use array conversion instead.

auto_multi_column_array_conversion : AutoMultiColumnArrayConversion | None = None

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

column_clustered_queries : ‘all’ | ‘feeding’ = ‘feeding’

Control which queries will use clustering columns.

feeding_query_timeout : Duration = datetime.timedelta(seconds=3600)

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

feeding_url : str | None = None

When not None, this JDBC connection string will be used instead of url for the feeding phases.

lookup_mode : ‘allow’ | ‘warn’ | ‘deny’ = ‘warn’

Whether lookup queries on the external database are allowed. Lookup can be very slow and expensive as the database may not enforce primary keys.

max_sub_queries : Annotated[int, Field(gt=0)] = 500

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

password : RedactedStr | None = None

The password to connect to the database. Passing it in this separate attribute keeps it out of the connection string, and a repr() shows <redacted> in place of it. The connection string reaches Atoti’s logs; this attribute does not. A property named in redacted_properties for the same purpose takes precedence over this attribute. If None, a password is expected to be present in url.

query_timeout : Duration = datetime.timedelta(seconds=300)

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

redacted_properties : FrozenMapping[str, RedactedStr]

The driver properties whose values must not be logged. A property carrying or locating a secret, such as a password, the passphrase of a private key or an OAuth client secret, goes here rather than in url. Atoti keeps these values out of its logs, and a repr() shows each name with <redacted> in place of its value, so the properties that are set can be seen without the secrets they carry. A connection string offers neither assurance. Every other property, including the one selecting the authentication method, belongs in url. The accepted names are the ones this database’s own driver documents. A driver enumerating the properties it accepts rejects a name it does not know rather than ignoring it. A property named here takes precedence over password, which remains the way to pass a password without naming the driver’s own property for it.
The driver decides what it writes to its own logs. This attribute keeps a secret out of Atoti’s logs, not out of every log.

time_travel : Literal[False, ‘lax’, ‘strict’] = ‘strict’

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.

url : str

The JDBC connection string.