Connecter Snowflake
Datarelix se connecte à Snowflake via un service de requêtes en lecture seule. Toutes les requêtes sont validées et exécutées à l’intérieur de ce service — le modèle ne voit pas les identifiants et n’exécute pas de SQL brut sur votre base.
Prérequis
- Un compte Snowflake.
- Un rôle en lecture seule disposant de
USAGEsur le warehouse, la base et le schéma, plusSELECTsur les objets que vous voulez analyser — voir Snowflake access control. - Un warehouse que le rôle peut utiliser. Un warehouse XS suffit généralement. Le warehouse doit pouvoir être relancé — Snowflake suspend automatiquement les warehouses inactifs ; le rôle a besoin du privilège
OPERATEsur le warehouse pour le relancer, sinon la première requête échoue avec « Warehouse is suspended. » - Un utilisateur Snowflake capable d’endosser ce rôle.
- Une accessibilité réseau. Si le compte a une stratégie réseau, ajoutez les IP de sortie de Datarelix à sa liste d’autorisation, sinon les connexions sont refusées. Les comptes verrouillés sur AWS/Azure PrivateLink (une URL en
*.privatelink.snowflakecomputing.com) n’acceptent les connexions que via le point de terminaison privé et ne sont pas joignables depuis le service hébergé.
Modes d’authentification
Username & password
Un nom d’utilisateur et un mot de passe Snowflake authentifient la connexion. Le mot de passe est stocké chiffré. Voie recommandée pour les comptes de service.
L’authentification par paire de clés et OAuth est prévue pour une version ultérieure.
Configuration — créer un rôle et un utilisateur en lecture seule
Connectez-vous en tant que accountadmin ou securityadmin, puis exécutez :
-- Create the roleCREATE ROLE datarelix_reader;
-- Grant warehouse access (resume + use)GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE datarelix_reader;GRANT OPERATE ON WAREHOUSE your_warehouse TO ROLE datarelix_reader;
-- Grant database and schema accessGRANT USAGE ON DATABASE your_database TO ROLE datarelix_reader;GRANT USAGE ON SCHEMA your_database.your_schema TO ROLE datarelix_reader;
-- Grant SELECT on existing and future tablesGRANT SELECT ON ALL TABLES IN SCHEMA your_database.your_schema TO ROLE datarelix_reader;GRANT SELECT ON FUTURE TABLES IN SCHEMA your_database.your_schema TO ROLE datarelix_reader;
-- Create the user and assign the roleCREATE USER datarelix_reader PASSWORD = 'choose-a-strong-password' DEFAULT_ROLE = datarelix_reader DEFAULT_WAREHOUSE = your_warehouse;GRANT ROLE datarelix_reader TO USER datarelix_reader;Le GRANT SELECT ON FUTURE TABLES garantit que les tables ajoutées après la création de la connexion restent visibles, sans nouvelle attribution manuelle.
Où trouver vos identifiants
| Champ | Où le trouver |
|---|---|
| Account identifier | Interface Snowsight → Admin → Accounts → copiez la valeur de la colonne Account (forme orgname-account_name préférée), ou lisez-la dans l’URL web de Snowflake |
| Warehouse | Snowsight → Admin → Warehouses — copiez le nom du warehouse |
| Database | Snowsight → Data → Databases — copiez le nom de la base |
| Role | Le rôle créé ci-dessus (par exemple DATARELIX_READER) |
| Schema | Le schéma auquel vous avez accordé l’accès (par exemple PUBLIC) |
| Username | L’utilisateur créé ci-dessus |
| Password | Le mot de passe défini dans CREATE USER |
Trouver l’identifiant de compte
Snowflake accepte deux formats d’identifiant de compte. La forme moderne, recommandée, est orgname-account_name (par exemple myorg-prod1) ; la forme héritée est <locator>[.<region>][.<cloud>] :
| Cloud / région | Exemple | Remarques |
|---|---|---|
| AWS US West (Oregon) | xy12345 | Pas de segment de région — exception héritée. |
| AWS, toute autre région | xy12345.us-east-2.aws | Région + .aws. |
| Azure, toute région | xy12345.east-us-2.azure | Région + .azure. |
| GCP, toute région | xy12345.us-central1.gcp | Région + .gcp. |
Les deux formes fonctionnent dans le formulaire de connexion. Trouvez la vôtre sous Admin → Accounts dans Snowsight, ou depuis l’URL web de Snowflake (<locator>.<region>.snowflakecomputing.com).
Ce qu’il faut saisir
Account identifier: myorg-prod1 (or legacy: xy12345.us-east-1.aws)Warehouse: YOUR_WAREHOUSEDatabase: YOUR_DATABASERole: DATARELIX_READERSchema: PUBLICUsername: datarelix_readerPassword: ••••••••Sémantique de la portée
Le champ Schema (schéma) définit le schéma autorisé de la connexion. Datarelix n’inspecte et n’interroge que ce schéma. S’il est laissé vide, la connexion utilise PUBLIC par défaut.
Pour analyser plusieurs schémas dans la même base, créez une connexion par schéma.
Découverte
Entièrement prise en charge. Le module d’introspection lit <database>.information_schema pour faire remonter les tables, les colonnes, les clés primaires et les clés étrangères déclarées.
Les clés étrangères sont purement déclaratives. Snowflake n’applique pas les contraintes FK sur les tables standard : ce sont des métadonnées informatives. La découverte renvoie un graphe de relations vide si votre entrepôt de données a été créé sans FK déclarées ; c’est attendu, ce n’est pas un échec de la découverte.
Le SQL Snowflake en bref
Du SQL standard, avec quelques spécificités Snowflake que Datarelix connaît :
- Identifiants — les identifiants non quotés passent en majuscules. Mettez des guillemets doubles autour des noms sensibles à la casse.
- Pagination —
LIMIT n OFFSET m. - Filtres de fenêtre — utilisez
QUALIFY, l’équivalent deHAVINGpour les fonctions de fenêtrage. - Horodatages —
TIMESTAMP_NTZ(sans fuseau),TIMESTAMP_LTZ(local),TIMESTAMP_TZ. - Données semi-structurées —
VARIANT,OBJECTetARRAY, avecLATERAL FLATTENpour l’aplatissement. - Noms en trois parties —
DATABASE.SCHEMA.TABLE.
Limites
- Lecture seule — le validateur rejette les instructions d’écriture et les instructions DDL, à la fois sur l’arbre syntaxique et sur les mots-clés du texte.
- Requêtes multi-instructions bloquées — un seul
SELECT/WITH/UNIONpar question. Les CTE comportant plusieurs références de tables dans une même clauseWITHsont acceptées. - Schémas système bloqués — les requêtes sur
INFORMATION_SCHEMAne sont autorisées que pendant la découverte ;ACCOUNT_USAGEest toujours bloqué. - Délai d’expiration des instructions — défini par session (30 s par défaut). Ajustez-le si votre warehouse a régulièrement besoin de requêtes analytiques plus longues.
- Limite de lignes — plafond côté serveur de 5 000 lignes par défaut.
Dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
390100: Incorrect username or password | Identifiants incorrects | Testez d’abord depuis l’interface web Snowflake. |
Warehouse 'X' does not exist or not authorized | Rôle sans USAGE sur le warehouse | GRANT USAGE ON WAREHOUSE X TO ROLE Y. |
Warehouse is suspended | Rôle sans OPERATE | GRANT OPERATE ON WAREHOUSE X TO ROLE Y. |
Object does not exist à la découverte | Rôle sans USAGE sur la base ou le schéma | GRANT USAGE ON DATABASE/SCHEMA au rôle. |
IP ... is not allowed to access Snowflake | La stratégie réseau du compte bloque l’IP de sortie | Ajoutez les IP de sortie de Datarelix à la liste d’autorisation de la stratégie réseau du compte ou de l’utilisateur. |
Statement timeout reached | La requête a dépassé le délai de la session | Affinez la question, ajoutez un LIMIT, ou contactez le support pour relever le délai. |
| La découverte ne renvoie aucune table | Le rôle n’a pas SELECT sur les objets du schéma | GRANT SELECT ON ALL TABLES IN SCHEMA X TO ROLE Y + GRANT SELECT ON FUTURE TABLES IN SCHEMA X TO ROLE Y. |