Aller au contenu

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 USAGE sur le warehouse, la base et le schéma, plus SELECT sur 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 OPERATE sur 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 role
CREATE 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 access
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 existing and future tables
GRANT 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 role
CREATE 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

ChampOù le trouver
Account identifierInterface 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
WarehouseSnowsight → Admin → Warehouses — copiez le nom du warehouse
DatabaseSnowsight → Data → Databases — copiez le nom de la base
RoleLe rôle créé ci-dessus (par exemple DATARELIX_READER)
SchemaLe schéma auquel vous avez accordé l’accès (par exemple PUBLIC)
UsernameL’utilisateur créé ci-dessus
PasswordLe 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égionExempleRemarques
AWS US West (Oregon)xy12345Pas de segment de région — exception héritée.
AWS, toute autre régionxy12345.us-east-2.awsRégion + .aws.
Azure, toute régionxy12345.east-us-2.azureRégion + .azure.
GCP, toute régionxy12345.us-central1.gcpRé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_WAREHOUSE
Database: YOUR_DATABASE
Role: DATARELIX_READER
Schema: PUBLIC
Username: datarelix_reader
Password: ••••••••

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.
  • PaginationLIMIT n OFFSET m.
  • Filtres de fenêtre — utilisez QUALIFY, l’équivalent de HAVING pour les fonctions de fenêtrage.
  • HorodatagesTIMESTAMP_NTZ (sans fuseau), TIMESTAMP_LTZ (local), TIMESTAMP_TZ.
  • Données semi-structuréesVARIANT, OBJECT et ARRAY, avec LATERAL FLATTEN pour l’aplatissement.
  • Noms en trois partiesDATABASE.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/UNION par question. Les CTE comportant plusieurs références de tables dans une même clause WITH sont acceptées.
  • Schémas système bloqués — les requêtes sur INFORMATION_SCHEMA ne sont autorisées que pendant la découverte ; ACCOUNT_USAGE est 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ômeCause probableSolution
390100: Incorrect username or passwordIdentifiants incorrectsTestez d’abord depuis l’interface web Snowflake.
Warehouse 'X' does not exist or not authorizedRôle sans USAGE sur le warehouseGRANT USAGE ON WAREHOUSE X TO ROLE Y.
Warehouse is suspendedRôle sans OPERATEGRANT OPERATE ON WAREHOUSE X TO ROLE Y.
Object does not exist à la découverteRôle sans USAGE sur la base ou le schémaGRANT USAGE ON DATABASE/SCHEMA au rôle.
IP ... is not allowed to access SnowflakeLa stratégie réseau du compte bloque l’IP de sortieAjoutez les IP de sortie de Datarelix à la liste d’autorisation de la stratégie réseau du compte ou de l’utilisateur.
Statement timeout reachedLa requête a dépassé le délai de la sessionAffinez la question, ajoutez un LIMIT, ou contactez le support pour relever le délai.
La découverte ne renvoie aucune tableLe rôle n’a pas SELECT sur les objets du schémaGRANT SELECT ON ALL TABLES IN SCHEMA X TO ROLE Y + GRANT SELECT ON FUTURE TABLES IN SCHEMA X TO ROLE Y.