Conectar un data warehouse de BigQuery
Esta guía le acompaña al conectar un dataset de Google BigQuery a Saiku Cloud. Quince minutos si ya tiene una cuenta de servicio; treinta si también necesita crear una en IAM.
Impacto en niveles: todos los niveles de Saiku Cloud admiten BYOC con BigQuery.
Driver: Saiku Cloud incluye el driver JDBC oficial de BigQuery de Google (Apache 2.0, ~56 MB con dependencias incrustadas). La autenticación es mediante una clave JSON de cuenta de servicio — no hay ruta de autenticación basada en contraseña.
Lo que necesitará
- Un proyecto de Google Cloud con BigQuery habilitado.
- Un dataset dentro de ese proyecto donde viven sus datos analíticos.
- Permiso IAM de propietario o equivalente para crear una cuenta de servicio.
Paso 1 — Acceso de red (buenas noticias)
La API de BigQuery es un servicio gestionado por Google accesible desde cualquier host conectado a internet. No se requiere lista de permitidos en el firewall. La IP de egreso de Saiku Cloud (87.99.153.244) es una de las muchas que llegarán a la API de BigQuery; el edge de Google gestiona el enrutado de forma transparente.
Salte al Paso 2.
Paso 2 — Cree una cuenta de servicio de solo lectura
Saiku Cloud necesita BigQuery Data Viewer (para SELECT) + BigQuery Job User (para la ejecución de consultas).
En la consola de Google Cloud:
-
IAM y Administración → Cuentas de servicio → Crear cuenta de servicio.
-
Nombre:
saiku-read. Descripción:Saiku Cloud read-only access. -
Otorgue los roles:
- BigQuery Data Viewer — limítelo a datasets específicos si quiere un acceso más estricto (Data Viewer a nivel de proyecto lee todos los datasets; a nivel de dataset lee solo ese).
- BigQuery Job User — debe estar a nivel de proyecto (BigQuery no admite Job User limitado a dataset).
-
Haga clic en la cuenta de servicio creada → Claves → Añadir clave → Crear nueva clave → JSON. El navegador descarga un archivo
<proyecto>-<id>.json. -
Esa es la credencial — guárdela en su gestor de contraseñas. Contiene la clave privada.
Paso 3 — Construya la URL JDBC
La forma (separada por punto y coma, NO querystring):
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=<PROJECT>;OAuthType=0;OAuthServiceAcctEmail=<SA_EMAIL>;OAuthPvtKey=<INLINE_PEM>;DefaultDataset=<DATASET>Ejemplo concreto con PEM en línea:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=my-analytics-prod;OAuthType=0;OAuthServiceAcctEmail=saiku-read@my-analytics-prod.iam.gserviceaccount.com;OAuthPvtKey=-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEF...-----END PRIVATE KEY-----;DefaultDataset=analyticsMapa de parámetros:
https://www.googleapis.com/bigquery/v2:443— el endpoint de la API. Siempre este para el servicio público de BigQuery. Los endpoints de Private Service Connect tienen una forma diferente (consulte Enterprise: red privada).ProjectId=— el id de su proyecto de Google Cloud (el alfanumérico de la URL de la consola, no el nombre del proyecto).OAuthType=0— autenticación con clave de cuenta de servicio. Otros valores:1(OAuth de usuario — no soportado en Saiku),3(Application Default Credentials — solo funciona si el motor tiene acceso a ADC, lo que generalmente no es cierto en el despliegue alojado en la nube de Saiku Cloud).OAuthServiceAcctEmail=— el email de la cuenta de servicio, copiado del Paso 2 paso 4. Formato:<saname>@<proyecto>.iam.gserviceaccount.com.OAuthPvtKeyPath=OOAuthPvtKey=— uno u otro.OAuthPvtKeyPath=/path/to/key.json— el driver lee el archivo en tiempo de ejecución. No funciona en Saiku Cloud alojado en la nube porque no puede dejar archivos en el sistema de archivos del contenedor del motor.OAuthPvtKey=<PEM en línea>— el contenido literal-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----del campoprivate_keyde la clave JSON, con\nliterales entre líneas. Use esto para alojamiento en la nube.
DefaultDataset=— el dataset de BigQuery (el segundo segmento deproyecto.dataset.tabla). Permite que los schemas referencien nombres de tabla sin calificar como<Table name='sales'/>en lugar de cualificar completamente cada referencia. Requerido para que los schemas BYOC carguen mediante el Mondrian de Saiku Cloud (la API de metadatos del driver solo resuelve tablas sin calificar cuando esto se establece).
Lado de creación de cubos: propiedades de schema/catalog para introspección de metadatos
Cuando sube un XML de schema de Mondrian a través de Saiku Cloud que referencia tablas de BigQuery sin calificar (por ejemplo, <Table name='salary'/> y no <Table name='salary' schema='analytics'/>), Saiku Cloud también necesita conocer el dataset y el proyecto para la introspección de metadatos JDBC. Estos se pasan como propiedades del connect-string a nivel del wrapper de Mondrian, además de la URL anterior:
JdbcSchema=<dataset>— el mismo valor queDefaultDataset=en la URL.JdbcCatalog=<proyecto>— el mismo valor queProjectId=en la URL.
El asistente de conexión de Saiku Cloud los deriva automáticamente de los parámetros ProjectId= + DefaultDataset= de la URL cuando guarda la conexión, así que la mayoría de los clientes nunca los ven. Se mencionan aquí porque la forma .sds del motor en disco los incluye, y aparecen en los audit logs:
jdbc:mondrian:Jdbc='jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=my-analytics-prod;OAuthType=0;OAuthServiceAcctEmail=...;OAuthPvtKey=...;DefaultDataset=analytics';Catalog=file:/var/lib/saiku/data/<your-schema>.xml;JdbcDrivers=com.google.cloud.bigquery.jdbc.BigQueryDriver;JdbcSchema=analytics;JdbcCatalog=my-analytics-prodEstos dos requisitos están documentados en detalle en las notas BigQuery-Mondrian con el catálogo de modos de fallo.
Extraer la clave privada del JSON
El JSON descargado en el Paso 2 se ve así:
{ "type": "service_account", "project_id": "...", "private_key_id": "...", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQ...\n-----END PRIVATE KEY-----\n", "client_email": "...", ...}Saque el valor de private_key, retire las comillas envolventes, y eso es lo que va en OAuthPvtKey= (los escapes \n son literales — manténgalos como cadenas backslash-n, NO como saltos de línea reales).
Paso 4 — Conecte mediante el asistente de Saiku Cloud
-
Inicie sesión en
https://cloud.saiku.bi/. -
Vaya a Conexiones en la barra lateral izquierda.
-
En 1. Elegir tipo de data warehouse, haga clic en el tile BigQuery.
-
Rellene:
- URL JDBC — la URL del Paso 3.
- Username — cualquier cosa (por ejemplo,
bigquery). El driver ignora este campo; la autenticación está en la URL. - Password — cualquier cosa no vacía (por ejemplo,
unused-key-in-url). También se ignora.
-
Haga clic en Probar conexión.
Espere un banner verde de resultado: ✓ Connection successful más la versión de BigQuery detectada (algo como BigQuery 2.0). La primera conexión de BigQuery tarda 5–10 segundos (intercambio de token + listado del dataset).
Paso 5 — Guarde la conexión
Misma forma que cualquier otro dialecto — vuelva a introducir la contraseña placeholder, asígnele una etiqueta, guarde.
Solución de problemas
✗ Connection failed (AUTH_FAILED)
- Formato de
OAuthPvtKey— causa más común. El PEM debe incluir\nliterales entre líneas (NO saltos de línea reales). Vuelva a comprobar: el valor debe empezar con-----BEGIN PRIVATE KEY-----\nMIIE...(backslash-n, no un salto de línea). - La cuenta de servicio no tiene BigQuery Job User a nivel de proyecto — incluso con Data Viewer en el dataset, BigQuery rechaza consultas de cuentas sin Job User a nivel de proyecto.
- Cuenta de servicio deshabilitada o eliminada — compruebe la consola de IAM.
✗ Connection failed (DATABASE_NOT_FOUND)
ProjectId= es incorrecto, o la cuenta de servicio no tiene datasets visibles en ese proyecto. Verifique que el id del proyecto coincide con lo que se muestra en la URL de la consola de Google Cloud.
✗ Connection failed (HOST_UNREACHABLE) o (TIMEOUT)
La API de BigQuery raramente es inalcanzable; compruebe la página de estado de GCP. Si GCP está sano, el segmento de URL https://www.googleapis.com/bigquery/v2:443 probablemente está mal escrito — debe ser exacto.
✗ Connection failed with "OAuthType=1 requires interactive OAuth"
Configuró OAuthType=1 (OAuth de usuario) en lugar de OAuthType=0 (cuenta de servicio). Cambie a OAuthType=0 y proporcione una clave de cuenta de servicio.
El cubo se renderiza pero sin datos
La cuenta de servicio tiene BigQuery Job User (así que las consultas tienen éxito) pero no BigQuery Data Viewer en el dataset (así que las consultas devuelven resultados vacíos). Añada Data Viewer a nivel del dataset.
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.
Enterprise: red privada {#enterprise-private-network}
Para clientes Enterprise, BigQuery admite Private Service Connect — el tráfico de la API de BigQuery de su tenant permanece dentro de una red privada. El endpoint de la URL JDBC cambia de https://www.googleapis.com/bigquery/v2:443 a su endpoint PSC. 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 BigQuery: