atoti_directquery_snowflake.SnowflakeConnectionInfo#

class atoti_directquery_snowflake.SnowflakeConnectionInfo#

Information needed to connect to a Snowflake database.

__init__(url, /, *, array_agg_wrapper_function_name=None, auto_multi_column_array_conversion=None, feeding_warehouse_name=None, lookup_mode='warn', max_sub_queries=500, password=None, query_timeout=datetime.timedelta(seconds=3600), time_travel=True)#

Create a Snowflake connection info.

Parameters:
  • url (str) – The JDBC connection string. See https://docs.snowflake.com/en/user-guide/jdbc-configure.html#jdbc-driver-connection-string for more information.

  • array_agg_wrapper_function_name (str | None) – The name of the User Defined Function to use to wrap the aggregations on arrays to improve performance. This function must be defined in Snowflake and accessible to the role running the queries.

  • auto_multi_column_array_conversion (AutoMultiColumnArrayConversion | None) – When not None, multi column array conversion will be performed automatically.

  • feeding_warehouse_name (str | None) – The name of the warehouse to use for the initial feeding. If None, the main warehouse will be used.

  • lookup_mode (Literal['allow', 'warn', 'deny']) – 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 (int) – Maximum number of subqueries performed when splitting a query into multi-steps queries.

  • password (str | None) –

    The password to connect to the database.

    Passing it in this separate parameter allows to avoid having it logged alongside the connection string.

    If None, a password is expected to be present in the passed url.

  • query_timeout (timedelta) – Timeout for queries performed on the external database.

  • time_travel (bool) – Whether to use time travel in queries.

Example

>>> import os
>>> from atoti_directquery_snowflake import SnowflakeConnectionInfo
>>> connection_info = SnowflakeConnectionInfo(
...     "jdbc:snowflake://"
...     + os.environ["SNOWFLAKE_ACCOUNT_IDENTIFIER"]
...     + ".snowflakecomputing.com/?user="
...     + os.environ["SNOWFLAKE_USERNAME"],
...     password=os.environ["SNOWFLAKE_PASSWORD"],
... )
>>> external_database = session.connect_to_external_database(connection_info)