Ein BigQuery-Warehouse verbinden
Diese Anleitung führt Sie durch das Verbinden eines Google-BigQuery-Datensatzes mit Saiku Cloud. Fünfzehn Minuten, wenn Sie bereits einen Service Account haben; dreißig, wenn Sie auch einen in IAM erstellen müssen.
Plan-Auswirkung: Jeder Saiku-Cloud-Plan unterstützt BigQuery-BYOC.
Treiber: Saiku Cloud liefert Googles offiziellen BigQuery-JDBC-Treiber (Apache 2.0, ~56 MB shaded). Die Auth läuft über einen Service-Account-JSON-Key — es gibt keinen passwortbasierten Auth-Pfad.
Was Sie brauchen
- Ein Google-Cloud-Projekt mit aktiviertem BigQuery.
- Einen Datensatz innerhalb dieses Projekts, in dem Ihre Analytics-Daten liegen.
- IAM-Owner oder gleichwertige Berechtigung, um einen Service Account zu erstellen.
Schritt 1 — Netzwerkzugriff (gute Nachricht)
Die API von BigQuery ist ein von Google verwalteter Service, der
von jedem mit dem Internet verbundenen Host erreichbar ist. Keine
Firewall-Allowlist erforderlich. Die Egress-IP von Saiku Cloud
(87.99.153.244) ist eine von vielen, die die BigQuery-API treffen
werden; Googles Edge übernimmt das Routing transparent.
Weiter zu Schritt 2.
Schritt 2 — Einen Read-only-Service-Account erstellen
Saiku Cloud benötigt BigQuery Data Viewer (für SELECT) +
BigQuery Job User (für Query-Ausführung).
In der Google-Cloud-Konsole:
-
IAM & Admin → Service Accounts → Service Account erstellen.
-
Name:
saiku-read. Beschreibung:Saiku Cloud read-only access. -
Rollen gewähren:
- BigQuery Data Viewer — scopen Sie ihn auf bestimmte Datensätze, wenn Sie strengeren Zugriff möchten (Data Viewer auf Projekt-Scope liest alle Datensätze; auf Dataset-Scope liest nur diesen einen).
- BigQuery Job User — muss auf Projekt-Scope liegen (BigQuery unterstützt keinen Dataset-scoped Job User).
-
Klicken Sie in den erstellten Service Account → Keys → Key hinzufügen → Neuen Key erstellen → JSON. Der Browser lädt eine
<project>-<id>.json-Datei herunter. -
Dies ist das Credential — speichern Sie es in Ihrem Passwort-Manager. Es enthält den privaten Schlüssel.
Schritt 3 — Die JDBC-URL bauen
Die Form (semikolon-getrennt, NICHT Querystring):
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=<PROJECT>;OAuthType=0;OAuthServiceAcctEmail=<SA_EMAIL>;OAuthPvtKey=<INLINE_PEM>;DefaultDataset=<DATASET>Konkretes Beispiel mit Inline-PEM:
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=analyticsParameter-Map:
https://www.googleapis.com/bigquery/v2:443— der API-Endpunkt. Immer dieser für den öffentlichen BigQuery-Service. Private-Service-Connect-Endpunkte haben eine andere Form (siehe Enterprise: privates Netzwerk).ProjectId=— Ihre Google-Cloud-Projekt-ID (die alphanumerische aus der Konsolen-URL, nicht der Projektname).OAuthType=0— Service-Account-Key-Auth. Andere Werte:1(User-OAuth — nicht in Saiku unterstützt),3(Application Default Credentials — funktioniert nur, wenn die Engine Zugriff auf ADC hat, was im cloud-gehosteten Saiku-Cloud-Deployment generell nicht zutrifft).OAuthServiceAcctEmail=— die E-Mail des Service Accounts, kopiert aus Schritt 2.4. Format:<saname>@<project>.iam.gserviceaccount.com.OAuthPvtKeyPath=ODEROAuthPvtKey=— eins von beiden.OAuthPvtKeyPath=/path/to/key.json— der Treiber liest die Datei zur Laufzeit. Funktioniert auf dem cloud-gehosteten Saiku Cloud nicht, weil Sie keine Dateien auf dem Dateisystem des Engine-Containers ablegen können.OAuthPvtKey=<inline PEM>— der wörtliche-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY------Inhalt aus demprivate_key-Feld des JSON-Keys, mit wörtlichem\nzwischen Zeilen. Verwenden Sie dies für Cloud-gehostet.
DefaultDataset=— der BigQuery-Datensatz (der zweite Abschnitt vonproject.dataset.table). Erlaubt es Schemas, auf unqualifizierte Tabellennamen zu verweisen wie<Table name='sales'/>, statt jeden Verweis voll zu qualifizieren. Erforderlich, damit BYOC-Schemas durch Saiku Clouds Mondrian laden (die Metadaten-API des Treibers löst unqualifizierte Tabellen nur auf, wenn dies gesetzt ist).
Cube-Authoring-Seite: Schema-/Catalog-Properties für Metadaten-Introspection
Wenn Sie eine Mondrian-Schema-XML über Saiku Cloud hochladen, die
unqualifizierte BigQuery-Tabellen referenziert (z. B.
<Table name='salary'/> nicht <Table name='salary' schema='analytics'/>),
muss Saiku Cloud auch den Datensatz und das Projekt für die
JDBC-Metadaten-Introspection kennen. Diese werden als
Connect-String-Properties auf der Mondrian-Wrapper-Ebene zusätzlich
zur obigen URL übergeben:
JdbcSchema=<dataset>— derselbe Wert wieDefaultDataset=in der URL.JdbcCatalog=<project>— derselbe Wert wieProjectId=in der URL.
Der Connection-Wizard von Saiku Cloud leitet diese automatisch aus
den ProjectId=- und DefaultDataset=-Parametern der URL ab, wenn
Sie die Verbindung speichern, sodass die meisten Kunden sie nie
sehen. Hier erwähnt, weil die .sds-Form der Engine auf der Platte
sie enthält und sie in Audit-Logs auftauchen:
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-prodDiese beiden Anforderungen sind detailliert in den BigQuery-Mondrian-Notizen mit dem Fehlerkatalog dokumentiert.
Extraktion des privaten Schlüssels aus dem JSON
Das in Schritt 2 heruntergeladene JSON sieht so aus:
{ "type": "service_account", "project_id": "...", "private_key_id": "...", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQ...\n-----END PRIVATE KEY-----\n", "client_email": "...", ...}Ziehen Sie den private_key-Wert heraus, entfernen Sie die
umschließenden Anführungszeichen, und das ist, was in OAuthPvtKey=
geht (die \n-Escapes sind wörtlich — behalten Sie sie als
Backslash-n-Strings, NICHT als tatsächliche Zeilenumbrüche).
Schritt 4 — Verbinden über den Saiku-Cloud-Wizard
-
Melden Sie sich bei
https://cloud.saiku.bi/an. -
Navigieren Sie zu Verbindungen in der linken Seitenleiste.
-
Klicken Sie unter 1. Warehouse-Typ wählen auf das BigQuery-Kachel.
-
Füllen Sie aus:
- JDBC-URL — die URL aus Schritt 3.
- Benutzername — beliebig (z. B.
bigquery). Der Treiber ignoriert dieses Feld; die Auth ist in der URL. - Passwort — beliebig, nicht leer (z. B.
unused-key-in-url). Wird ebenfalls ignoriert.
-
Klicken Sie auf Verbindung testen.
Erwarten Sie einen grünen Ergebnis-Banner:
✓ Connection successful plus die erkannte BigQuery-Version (etwa
BigQuery 2.0). Die erste BigQuery-Verbindung dauert 5–10 Sekunden
(Token-Austausch + Dataset-Auflistung).
Schritt 5 — Die Verbindung speichern
Gleiche Form wie bei jedem anderen Dialekt — geben Sie das Platzhalter-Passwort erneut ein, geben Sie ihr ein Label, speichern Sie.
Fehlerbehebung
✗ Connection failed (AUTH_FAILED)
OAuthPvtKey-Formatierung — häufigste Ursache. Das PEM muss wörtliche\nzwischen Zeilen enthalten (NICHT echte Zeilenumbrüche). Doppelt prüfen: Der Wert sollte mit-----BEGIN PRIVATE KEY-----\nMIIE...beginnen (Backslash-n, kein Zeilenumbruch).- Service Account hat kein BigQuery Job User auf Projekt-Scope — selbst mit Data Viewer auf dem Dataset lehnt BigQuery Queries von Accounts ohne projektweiten Job User ab.
- Service Account deaktiviert oder gelöscht — prüfen Sie die IAM-Konsole.
✗ Connection failed (DATABASE_NOT_FOUND)
ProjectId= ist falsch, oder der Service Account hat keine
sichtbaren Datensätze in diesem Projekt. Verifizieren Sie, dass die
Projekt-ID dem entspricht, was in der Konsolen-URL von Google Cloud
angezeigt wird.
✗ Connection failed (HOST_UNREACHABLE) oder (TIMEOUT)
Die BigQuery-API ist selten unerreichbar; prüfen Sie die
GCP-Statusseite. Wenn GCP
gesund ist, ist das URL-Segment
https://www.googleapis.com/bigquery/v2:443 wahrscheinlich
falsch getippt — es muss exakt sein.
✗ Connection failed with "OAuthType=1 requires interactive OAuth"
Sie haben OAuthType=1 (User-OAuth) statt OAuthType=0
(Service-Account) gesetzt. Wechseln Sie zu OAuthType=0 und stellen
Sie einen Service-Account-Key bereit.
Cube rendert, aber ohne Daten
Der Service Account hat BigQuery Job User (also gelingen Queries),
aber kein BigQuery Data Viewer auf dem Dataset (also liefern
Queries leere Ergebnisse). Fügen Sie Data Viewer auf Dataset-Scope
hinzu.
Alles andere
Machen Sie einen Screenshot des Wizards mit sichtbarem rotem
Ergebnis-Banner (Kind: ...-Zeile insbesondere) und senden Sie ihn
an support@saiku.bi.
Enterprise: privates Netzwerk {#enterprise-privates-netzwerk}
Für Enterprise-Kunden unterstützt BigQuery
Private Service Connect
— der BigQuery-API-Traffic Ihres Tenants bleibt innerhalb eines
privaten Netzwerks. Der JDBC-URL-Endpunkt ändert sich von
https://www.googleapis.com/bigquery/v2:443 zu Ihrem PSC-Endpunkt.
Kontaktieren Sie Ihr Account-Team, um das Peering bereitzustellen.
Mit FoodMart ausprobieren
Möchten Sie Saiku Cloud mit diesem Dialekt testen, bevor Sie Ihre eigenen Daten verbinden? Laden Sie den FoodMart-Sample-Datensatz, gepackt für BigQuery, herunter: