Connexion d'un entrepôt Snowflake
Ce guide vous accompagne dans la connexion d’un compte Snowflake à Saiku Cloud. Dix minutes si vous êtes à l’aise dans la console Snowflake ; trente si vous devez également configurer l’auth par paire de clés RSA (recommandée pour les comptes de service).
Impact niveau : chaque niveau Saiku Cloud prend en charge BYOC Snowflake. Les clients orientés Snowflake atterrissent généralement sur [Team] ou [Business] (pod de moteur dédié) mais [Starter] fonctionne aussi.
Pilote : Saiku Cloud embarque le pilote JDBC officiel Snowflake (Apache 2.0). Le pilote pèse ~100 Mo car le protocole wire de Snowflake est natif Apache Arrow ; le bundling d’Arrow n’est pas négociable.
Ce dont vous aurez besoin
- Un compte Snowflake (comptes d’essai sur signup.snowflake.com — 30 jours gratuits, 400 $ de crédits).
- Un accès admin pour créer un rôle + un utilisateur, OU les identifiants d’un rôle existant en lecture seule.
- L’identifiant de compte Snowflake —
<orgname>-<accountname>ou l’ancienne forme<accountname>.<region>.<cloud>.
Étape 1 — Autoriser notre IP de sortie (si la network policy de votre compte est activée)
Les requêtes de Saiku Cloud vers votre entrepôt proviennent toutes de 87.99.153.244.
Les comptes Snowflake créés depuis 2024 ont la network policy activée par défaut — une allowlist d’IP autorisées à s’authentifier. Si votre compte n’a pas de politique, sautez cette étape ; Snowflake accepte les connexions depuis n’importe quelle IP par défaut.
Pour ajouter l’IP de Saiku Cloud :
-- As ACCOUNTADMIN:CREATE NETWORK POLICY saiku_cloud_allow ALLOWED_IP_LIST = ('87.99.153.244');
-- Apply to your service user (or to the account, depending on shape):ALTER USER saiku_read SET NETWORK_POLICY = saiku_cloud_allow;Si vous avez une network policy existante avec d’autres IP, ajoutez 87.99.153.244 à la liste existante plutôt que de la remplacer.
Étape 2 — Créer un rôle + un utilisateur en lecture seule
Modèle de rôle Snowflake : un utilisateur a un rôle par défaut ; le rôle a des grants. Saiku Cloud a besoin de SELECT sur les tables qu’il lira.
-- As ACCOUNTADMIN:CREATE ROLE saiku_reader;GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE saiku_reader;GRANT USAGE ON DATABASE ANALYTICS TO ROLE saiku_reader;GRANT USAGE ON SCHEMA ANALYTICS.PUBLIC TO ROLE saiku_reader;GRANT SELECT ON ALL TABLES IN SCHEMA ANALYTICS.PUBLIC TO ROLE saiku_reader;GRANT SELECT ON FUTURE TABLES IN SCHEMA ANALYTICS.PUBLIC TO ROLE saiku_reader;
CREATE USER saiku_read PASSWORD = 'pick-something-strong' DEFAULT_ROLE = saiku_reader DEFAULT_WAREHOUSE = COMPUTE_WH;
GRANT ROLE saiku_reader TO USER saiku_read;Adaptez ANALYTICS / PUBLIC / COMPUTE_WH à votre compte.
Auth par paire de clés RSA (recommandée pour la production)
Pour les comptes de service, l’auth par mot de passe est en cours d’obsolescence dans certaines régions Snowflake. Le remplacement est la paire de clés RSA :
# Generate a 2048-bit RSA private keyopenssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocryptopenssl rsa -in rsa_key.p8 -pubout -out rsa_key.pubTéléversez la clé publique vers l’utilisateur :
ALTER USER saiku_read SET RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFA...';Dans l’URL JDBC, pointez vers le chemin du fichier de clé privée (le conteneur du moteur a besoin de l’accès en lecture — pour le moteur partagé de Saiku Cloud, collez le contenu de la clé inline via private_key_file_pwd).
Étape 3 — Construire l’URL JDBC
La forme :
jdbc:snowflake://<account>.snowflakecomputing.com/?db=<DATABASE>&warehouse=<WAREHOUSE>&role=<ROLE>Concret :
jdbc:snowflake://abc12345.us-east-1.aws.snowflakecomputing.com/?db=ANALYTICS&warehouse=COMPUTE_WH&role=SAIKU_READEROu avec le nouvel identifiant <orgname>-<accountname> :
jdbc:snowflake://yourorg-yourdb.snowflakecomputing.com/?db=ANALYTICS&warehouse=COMPUTE_WH&role=SAIKU_READERParamètres clés :
db=— le nom de la base. Requis (sinon Snowflake route les requêtes vers le défaut de l’utilisateur, qui est généralement erroné).warehouse=— le warehouse de compute. Requis.role=— le rôle à endosser. Doit correspondre à ce que vous avez accordé à l’étape 2.- TLS est toujours activé avec Snowflake — pas de paramètre SSL à définir.
Étape 4 — Connectez-vous via l’assistant Saiku Cloud
-
Connectez-vous à
https://cloud.saiku.bi/. -
Naviguez vers Connexions dans la barre latérale gauche.
-
Sous 1. Choisir le type d’entrepôt, cliquez sur la tuile Snowflake.
-
Renseignez :
- URL JDBC — l’URL de l’étape 3.
- Nom d’utilisateur —
saiku_read(ou votre nom d’utilisateur de compte de service). - Mot de passe — le mot de passe de l’étape 2.
-
Cliquez sur Tester la connexion.
Attendez-vous à une bannière de résultat verte : ✓ Connection successful plus la version Snowflake détectée. La première connexion Snowflake prend 5 à 15 secondes (auth + démarrage du warehouse s’il était en pause) ; les tests suivants sont plus rapides.
Étape 5 — Enregistrer la connexion
Même forme que tout autre dialecte — ressaisissez le mot de passe, donnez-lui un libellé, enregistrez.
Dépannage
✗ Connection failed (HOST_UNREACHABLE) ou (TIMEOUT)
- Mauvais identifiant de compte — la partie avant
.snowflakecomputing.comest l’identifiant entier.abc12345.us-east-1.awsest un identifiant ;abc12345seul ne résoudra pas. La doc Snowflake est confuse ici ; copiez l’identifiant depuis la page de détails du compte de la console Snowflake. - Network policy — si votre compte a une network policy et que l’IP de Saiku Cloud n’est pas dans l’allowlist, Snowflake timeout silencieusement la connexion. Ajoutez
87.99.153.244selon l’étape 1.
✗ Connection failed (AUTH_FAILED)
Erreur Snowflake 390100 / 390101 / 28000.
- Casse du nom d’utilisateur — les noms d’utilisateur Snowflake passent par défaut en UPPERCASE dans le stockage. Tapez
saiku_readet il est stocké commeSAIKU_READ. La couche JDBC est insensible à la casse à la recherche, donc cela ne mord généralement pas — mais si vous avez encadré le nom d’utilisateur de guillemets doubles lors de la création de l’utilisateur, la casse est préservée + doit correspondre exactement. - MFA — si MFA est activé sur l’utilisateur, l’auth par mot de passe échouera. Soit désactivez MFA pour l’utilisateur de service, soit utilisez l’auth par paire de clés RSA (section RSA de l’étape 2).
- Le rôle n’existe pas — si
role=dans l’URL nomme un rôle que l’utilisateur ne peut pas endosser, Snowflake renvoie auth-failed plutôt qu’une erreur plus spécifique. Vérifiez avecSHOW GRANTS TO USER saiku_read;dans la console.
✗ Connection failed (DATABASE_NOT_FOUND)
La base dans l’URL n’existe pas OU le rôle n’a pas USAGE dessus. GRANT USAGE ON DATABASE ANALYTICS TO ROLE saiku_reader; corrige ce dernier ; le premier nécessite la correction du nom de base.
La connexion fonctionne mais les cubes ne s’affichent pas
USAGE sur la base n’est pas suffisant — Saiku a aussi besoin d’USAGE sur le schéma et de SELECT sur les tables. La chaîne complète de grants est dans l’étape 2. Une erreur fréquente est d’accorder l’USAGE sur la base mais d’oublier l’USAGE sur le schéma.
Toute autre chose
Faites une capture d’écran de l’assistant avec la bannière de résultat rouge visible (en particulier la ligne Kind: ...) et envoyez-la à support@saiku.bi.
Enterprise : PrivateLink
Pour les clients Enterprise, l’endpoint AWS PrivateLink de Snowflake peut remplacer entièrement le chemin réseau public. L’URL JDBC change en une forme <account>.privatelink.snowflakecomputing.com ; l’allowlist d’IP devient sans objet. Contactez votre équipe de compte pour provisionner le peering.
Essayer avec FoodMart
Vous voulez tester Saiku Cloud avec ce dialecte avant de connecter vos propres données ? Téléchargez le jeu de données d’exemple FoodMart packagé pour Snowflake :