Saltearse al contenido

Conectar un data warehouse de Snowflake

Esta guía le acompaña al conectar una cuenta de Snowflake a Saiku Cloud. Diez minutos si está cómodo en la consola de Snowflake; treinta si también necesita configurar autenticación con par de claves RSA (recomendado para cuentas de servicio).

Impacto en niveles: todos los niveles de Saiku Cloud admiten BYOC con Snowflake. Los clientes con forma Snowflake suelen aterrizar en [Team] o [Business] (pod dedicado del motor) pero [Starter] también funciona.

Driver: Saiku Cloud incluye el driver JDBC oficial de Snowflake (Apache 2.0). El driver pesa ~100 MB porque el protocolo de transporte de Snowflake es nativo de Apache Arrow; el empaquetado de Arrow no es negociable.

Lo que necesitará

  • Una cuenta de Snowflake (cuentas de prueba en signup.snowflake.com — 30 días gratis, 400 $ en créditos).
  • Acceso de administrador para crear un rol + usuario, O las credenciales de un rol de solo lectura existente.
  • El identificador de cuenta de Snowflake — <orgname>-<accountname> o la forma legacy <accountname>.<region>.<cloud>.

Paso 1 — Permitir nuestra IP de egreso (si su cuenta tiene política de red habilitada)

Todas las consultas de Saiku Cloud a su data warehouse provienen de 87.99.153.244.

Las cuentas de Snowflake creadas en 2024+ tienen network policy habilitada por defecto — una lista de permitidos de IPs autorizadas para autenticarse. Si su cuenta no tiene política, salte este paso; Snowflake acepta conexiones desde cualquier IP por defecto.

Para añadir la 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 tiene una política de red existente con otras IPs, añada 87.99.153.244 a la lista existente en lugar de reemplazarla.

Paso 2 — Cree un rol y un usuario de solo lectura

El modelo de roles de Snowflake: un usuario tiene un rol por defecto; el rol tiene grants. Saiku Cloud necesita SELECT en las tablas que va a leer.

-- 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;

Ajuste ANALYTICS / PUBLIC / COMPUTE_WH para que coincidan con su cuenta.

Autenticación con par de claves RSA (recomendada para producción)

Para cuentas de servicio, la autenticación con contraseña está siendo deprecada en algunas regiones de Snowflake. El reemplazo es par de claves RSA:

Ventana de terminal
# Generate a 2048-bit RSA private key
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

Suba la clave pública al usuario:

ALTER USER saiku_read SET RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFA...';

En la URL JDBC, apunte a la ruta del archivo de clave privada (el contenedor del motor necesita acceso de lectura — para el motor compartido de Saiku Cloud, pegue el contenido de la clave en línea mediante private_key_file_pwd).

Paso 3 — Construya la URL JDBC

La forma:

jdbc:snowflake://<account>.snowflakecomputing.com/?db=<DATABASE>&warehouse=<WAREHOUSE>&role=<ROLE>

Concreto:

jdbc:snowflake://abc12345.us-east-1.aws.snowflakecomputing.com/?db=ANALYTICS&warehouse=COMPUTE_WH&role=SAIKU_READER

O con el identificador más nuevo <orgname>-<accountname>:

jdbc:snowflake://yourorg-yourdb.snowflakecomputing.com/?db=ANALYTICS&warehouse=COMPUTE_WH&role=SAIKU_READER

Parámetros clave:

  • db= — el nombre de la base de datos. Requerido (si no, Snowflake enruta las consultas al por defecto del usuario, que normalmente es incorrecto).
  • warehouse= — el warehouse de cómputo. Requerido.
  • role= — el rol a asumir. Coincida con lo que otorgó en el Paso 2.
  • TLS está siempre activo con Snowflake — no hay parámetro SSL que definir.

Paso 4 — Conecte mediante el asistente de Saiku Cloud

  1. Inicie sesión en https://cloud.saiku.bi/.

  2. Vaya a Conexiones en la barra lateral izquierda.

  3. En 1. Elegir tipo de data warehouse, haga clic en el tile Snowflake.

  4. Rellene:

    • URL JDBC — la URL del Paso 3.
    • Usernamesaiku_read (o el usuario de su cuenta de servicio).
    • Password — la contraseña del Paso 2.
  5. Haga clic en Probar conexión.

Espere un banner verde de resultado: ✓ Connection successful más la versión de Snowflake detectada. La primera conexión de Snowflake tarda 5–15 segundos (auth + arranque del warehouse si estaba pausado); las pruebas siguientes son más rápidas.

Paso 5 — Guarde la conexión

Misma forma que cualquier otro dialecto — vuelva a introducir la contraseña, asígnele una etiqueta, guarde.

Solución de problemas

✗ Connection failed (HOST_UNREACHABLE) o (TIMEOUT)

  • Identificador de cuenta incorrecto — la parte antes de .snowflakecomputing.com es el identificador entero. abc12345.us-east-1.aws es un identificador; abc12345 solo no resolverá. La documentación de Snowflake confunde aquí; copie el identificador de la página de detalles de cuenta de la consola de Snowflake.
  • Network policy — si su cuenta tiene una política de red y la IP de Saiku Cloud no está en la lista de permitidos, Snowflake hace timeout silenciosamente. Añada 87.99.153.244 según el Paso 1.

✗ Connection failed (AUTH_FAILED)

Error 390100 / 390101 / 28000 de Snowflake.

  • Mayúsculas/minúsculas del nombre de usuario — los nombres de usuario de Snowflake se almacenan por defecto en MAYÚSCULAS. Escriba saiku_read y se almacena como SAIKU_READ. La capa JDBC no es sensible a mayúsculas/minúsculas en la búsqueda, así que esto normalmente no muerde — pero si envolvió el nombre de usuario en comillas dobles al crear el usuario, las mayúsculas/minúsculas se conservan + deben coincidir exactamente.
  • MFA — si MFA está habilitada en el usuario, la auth con contraseña fallará. O deshabilite MFA para el usuario de servicio o use auth con par de claves RSA (sección RSA del Paso 2).
  • El rol no existe — si role= en la URL nombra un rol que el usuario no puede asumir, Snowflake devuelve auth-failed en lugar de un error más específico. Verifíquelo con SHOW GRANTS TO USER saiku_read; en la consola.

✗ Connection failed (DATABASE_NOT_FOUND)

La base de datos en la URL no existe O el rol no tiene USAGE sobre ella. GRANT USAGE ON DATABASE ANALYTICS TO ROLE saiku_reader; arregla lo segundo; lo primero necesita que se corrija el nombre de la base de datos.

La conexión funciona pero los cubos no se renderizan

USAGE en la base de datos no es suficiente — Saiku también necesita USAGE en el schema y SELECT en las tablas. La cadena completa de grants está en el Paso 2. Un error común es otorgar USAGE de base de datos pero olvidar USAGE de schema.

Cualquier otra cosa

Haga una captura de pantalla del asistente con el banner rojo de resultado visible (línea Kind: ... en particular) y envíela a support@saiku.bi.

Para clientes Enterprise, el endpoint AWS PrivateLink de Snowflake puede reemplazar la ruta de red pública por completo. La URL JDBC cambia a una forma <account>.privatelink.snowflakecomputing.com; la lista de permitidos de IP se vuelve irrelevante. Contacte con su equipo de cuenta para aprovisionar el peering.

Pruebe con FoodMart

¿Quiere probar Saiku Cloud con este dialecto antes de conectar sus propios datos? Descargue el dataset de muestra FoodMart empaquetado para Snowflake:

Dataset de muestra FoodMart para Snowflake