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 dimensionné pour le rapport. Avec
AUTO_RESUMEactivé,USAGEpermet la reprise déclenchée par une requête ;OPERATEconcerne notamment la reprise manuelle. Privilèges du warehouse. - 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
Le connecteur actuel accepte uniquement le nom d’utilisateur et le mot de passe. Snowflake renforce l’authentification et supprime notamment les mots de passe pour les utilisateurs de service. Confirmez la politique et la date d’application de votre compte avec son responsable. Les comptes exigeant MFA ou une identité de service sans mot de passe sont incompatibles. Paire de clés et OAuth ne sont pas disponibles ici. Exigences Snowflake
Ne créez pas de compte de service par mot de passe et n’affaiblissez pas la politique pour adapter le compte au connecteur. Contactez Datarelix si une autre méthode est requise.
Responsable de la base : accorder l’accès à une identité existante approuvée
Utilisez un rôle autorisé à gérer ces droits. Remplacez les objets d’exemple par les tables ou vues nécessaires :
CREATE ROLE datarelix_reader;GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE datarelix_reader;GRANT USAGE ON DATABASE your_database TO ROLE datarelix_reader;GRANT USAGE ON SCHEMA your_database.your_schema TO ROLE datarelix_reader;GRANT SELECT ON TABLE your_database.your_schema.orders TO ROLE datarelix_reader;GRANT ROLE datarelix_reader TO USER approved_existing_user;Accordez séparément l’accès aux vues utiles. En option, GRANT SELECT ON FUTURE TABLES IN SCHEMA your_database.your_schema TO ROLE datarelix_reader; rend automatiquement lisibles les tables créées ensuite : cela réduit la maintenance et élargit l’accès futur, ne concerne que les nouvelles tables (les vues demandent leur propre droit futur) et ne remplace pas les droits sur les objets existants. Examinez aussi les rôles hérités. Référence GRANT Snowflake
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 existant approuvé |
| Password | Le secret approuvé, seulement si la politique du compte l’autorise |
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 indique le schéma par défaut. Les schémas explicitement autorisés définissent le périmètre des requêtes ; vérifiez les droits sur chacun. Sans schéma fourni, la valeur par défaut est PUBLIC.
Vérifiez la liste des schémas autorisés avant une question qui en utilise plusieurs.
Découverte
Entièrement prise en charge. La découverte lit <database>.information_schema pour lister les tables, colonnes, clés primaires et 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 — Datarelix rejette les instructions d’écriture et DDL avant leur exécution.
- 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 — les résultats sont plafonnés à 5 000 lignes.
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 | Reprise automatique désactivée ou usage refusé | Vérifiez USAGE et AUTO_RESUME ; demandez une reprise à un opérateur si elle doit être manuelle. |
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 | Délai dépassé | Réduisez la période ou la charge ; un LIMIT seul ne réduit pas nécessairement le calcul. Contactez l’assistance si nécessaire. |
| La découverte ne renvoie aucune table | Le rôle n’a pas SELECT sur les objets existants du schéma | GRANT SELECT ON ALL TABLES IN SCHEMA X TO ROLE Y, ou sur les tables et vues précises. Un droit sur les tables futures ne couvre que les tables créées ensuite : c’est un choix distinct et facultatif. |
Facturation du calcul
Les frais Snowflake sont distincts de votre forfait Datarelix. Examinez taille, suspension automatique et minimum facturé au démarrage avec le responsable. Des actualisations répétées peuvent déclencher du calcul supplémentaire. Recommandations Snowflake