Snowflake

Note

Source ingénierie : api/documentation/client/reference/connectors/snowflake.md

Entrepôt cloud Snowflake via SQLAlchemy — lecture/écriture de tables pandas.

Identité

Propriété

Valeur

type

database

subType

snowflake

ConnectorFactory

oui

Module

factonics_utils.connect.snowflake.connector.SnowflakeConnector

Credentials

Champ

Requis

Description

account

oui

Identifiant compte

user

oui

Utilisateur SQL

password

cond.

Mot de passe (auth classique)

authenticator

non

Défaut snowflake ; oauth pour OAuth

token

cond.

Requis si OAuth

private_key_file

cond.

Clé privée PEM

private_key_file_pwd

non

Passphrase clé

role, database, schema, warehouse

non

Paramètres URL SQLAlchemy

login_timeout, network_timeout, socket_timeout

non

Timeouts (int)

session_parameters

non

JSON (ex. QUERY_TAG)

application

non

Nom application Snowflake

Avertissement

Le schéma Voluptuous minimal n’exige que account, user, password. L’implémentation accepte OAuth, clé privée et timeouts — cette fiche fait foi.

end_scope

warehouse, database, schema, table — tous requis. Identifiants validés : ^[A-Za-z_][A-Za-z0-9_$]*$.

Méthodes

  • extract_data : USE WAREHOUSE/DATABASE/SCHEMA puis SELECT * LIMIT n (défaut 10 000, max 1 000 000). Colonnes uppercase.

  • load_data : to_sql via pd_writer ; p_if_exists : append | replace | fail.

  • get_data : non utilisé.

Authentification

Mode

Paramètres

Contraintes

User/password

account, user, password

authenticator=snowflake (défaut)

Clé privée

private_key_file, private_key_file_pwd?

Alternative au password

OAuth

authenticator=oauth, token

Token obligatoire

MFA

authenticator=username_password_mfa

Password ou clé privée

Exemple pipeline

from factonics_utils.connect import ConnectorFactory

credentials = {
    "account": "my-org-my-account",
    "user": "service_user",
    "password": "secret",
    "role": "ANALYST",
    "session_parameters": {"QUERY_TAG": "factonics-job-123"},
}
end_scope = {
    "warehouse": "COMPUTE_WH",
    "database": "MY_DB",
    "schema": "PUBLIC",
    "table": "MY_TABLE",
}
connector = ConnectorFactory().get_connector("snowflake", credentials)
df = connector.extract_data(end_scope, p_limit=1000)
connector.load_data(end_scope, df, p_if_exists="append")
connector.disconnect()

Flux plateforme

  1. POST /connectors avec subType=snowflake.

  2. POST /connectors/credentials/file — JSON vers S3/Azure.

  3. Worker : ConnectorFactory("snowflake", ...).

  4. Dashboards : connexion_idconnexionId.

Troubleshooting

Symptôme

Piste

Auth MFA

username_password_mfa + password ou clé

Timeout

login_timeout, network_timeout, socket_timeout

Warehouse suspendu

Droits rôle + USE WAREHOUSE

Segfault SSL worker

urllib3>=2 avec OpenSSL 3 (CHANGELOG api)

Casse colonnes

Uppercase forcé à extract/load

Voir aussi