Podłączanie hurtowni BigQuery
Ten przewodnik prowadzi Cię przez podłączanie zbioru Google BigQuery do Saiku Cloud. Piętnaście minut, jeśli masz już konto serwisowe; trzydzieści, jeśli musisz też je utworzyć w IAM.
Wpływ na poziom: każdy poziom Saiku Cloud obsługuje BigQuery BYOC.
Sterownik: Saiku Cloud dostarcza oficjalny sterownik JDBC BigQuery od Google (Apache 2.0, ~56 MB shaded). Auth jest przez klucz JSON konta serwisowego — nie ma ścieżki auth opartej o hasło.
Czego będziesz potrzebować
- Projektu Google Cloud z włączonym BigQuery.
- Zbioru wewnątrz tego projektu, gdzie żyją Twoje dane analityczne.
- Uprawnień IAM Owner lub równoważnych, by utworzyć konto serwisowe.
Krok 1 — Dostęp sieciowy (dobra wiadomość)
API BigQuery to usługa zarządzana przez Google, osiągalna z dowolnego hosta podłączonego do internetu. Allowlist firewalla nie wymagany. Egress IP Saiku Cloud (87.99.153.244) jest jednym z wielu, które uderzą w API BigQuery; krawędź Google obsługuje routing transparentnie.
Skocz do Kroku 2.
Krok 2 — Utwórz konto serwisowe tylko do odczytu
Saiku Cloud potrzebuje BigQuery Data Viewer (do SELECT) + BigQuery Job User (do wykonywania zapytań).
W konsoli Google Cloud:
-
IAM i Admin → Konta serwisowe → Utwórz konto serwisowe.
-
Nazwa:
saiku-read. Opis:Saiku Cloud read-only access. -
Nadaj role:
- BigQuery Data Viewer — zakresuj do konkretnych zbiorów, jeśli chcesz ściślejszego dostępu (Data Viewer w zakresie projektu czyta wszystkie zbiory; w zakresie zbioru czyta tylko ten jeden).
- BigQuery Job User — musi być w zakresie projektu (BigQuery nie obsługuje Job User zakresowanego do zbioru).
-
Wejdź w utworzone konto serwisowe → Klucze → Dodaj klucz → Utwórz nowy klucz → JSON. Przeglądarka pobiera plik
<project>-<id>.json. -
To jest poświadczenie — zapisz w menedżerze haseł. Zawiera klucz prywatny.
Krok 3 — Zbuduj JDBC URL
Kształt (rozdzielony średnikiem, NIE querystring):
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=<PROJECT>;OAuthType=0;OAuthServiceAcctEmail=<SA_EMAIL>;OAuthPvtKey=<INLINE_PEM>;DefaultDataset=<DATASET>Konkretny przykład z 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=analyticsMapa parametrów:
https://www.googleapis.com/bigquery/v2:443— endpoint API. Zawsze taki dla publicznej usługi BigQuery. Endpointy Private Service Connect mają inny kształt (zobacz Enterprise: sieć prywatna).ProjectId=— Twój identyfikator projektu Google Cloud (alfanumeryczny z URL-a konsoli, nie nazwa projektu).OAuthType=0— auth kluczem konta serwisowego. Inne wartości:1(OAuth użytkownika — nie wspierane w Saiku),3(Application Default Credentials — działa tylko, jeśli silnik ma dostęp do ADC, co generalnie nie jest prawdą w hostowanym wdrożeniu Saiku Cloud).OAuthServiceAcctEmail=— email konta serwisowego, skopiowany z Kroku 2 podpunkt 4. Format:<saname>@<project>.iam.gserviceaccount.com.OAuthPvtKeyPath=LUBOAuthPvtKey=— jedno albo drugie.OAuthPvtKeyPath=/path/to/key.json— sterownik czyta plik w czasie wykonania. Nie działa na hostowanym Saiku Cloud, bo nie możesz wrzucać plików na filesystem kontenera silnika.OAuthPvtKey=<inline PEM>— dosłowna zawartość-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----z polaprivate_keyw JSON-ie klucza, z dosłownymi\nmiędzy liniami. Tego używaj dla hostowanego w chmurze.
DefaultDataset=— zbiór BigQuery (drugi segmentproject.dataset.table). Pozwala schemom odwoływać się do niekwalifikowanych nazw tabel typu<Table name='sales'/>zamiast w pełni kwalifikować każde odwołanie. Wymagane dla schem BYOC do załadowania przez Mondrian Saiku Cloud (API metadanych sterownika rozwiązuje niekwalifikowane tabele tylko, gdy to jest ustawione).
Strona autorstwa kostek: właściwości schema/catalog dla introspekcji metadanych
Gdy wgrywasz przez Saiku Cloud XML schemy Mondrian odwołujący się do niekwalifikowanych tabel BigQuery (np. <Table name='salary'/>, a nie <Table name='salary' schema='analytics'/>), Saiku Cloud potrzebuje też wiedzieć o zbiorze i projekcie do introspekcji metadanych JDBC. Te są przekazywane jako właściwości connect-stringu na poziomie wrappera Mondrian, oprócz URL-a powyżej:
JdbcSchema=<dataset>— ta sama wartość coDefaultDataset=w URL-u.JdbcCatalog=<project>— ta sama wartość coProjectId=w URL-u.
Kreator połączeń Saiku Cloud auto-wyprowadza je z parametrów ProjectId= + DefaultDataset= URL-a, gdy zapisujesz połączenie, więc większość klientów ich nigdy nie widzi. Wspomniane tutaj, bo kształt .sds silnika na dysku je zawiera i pojawiają się w dziennikach audytu:
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-prodTe dwa wymogi są szczegółowo udokumentowane w notatkach BigQuery-Mondrian z katalogiem trybów awarii.
Wyciąganie klucza prywatnego z JSON-a
JSON pobrany w Kroku 2 wygląda tak:
{ "type": "service_account", "project_id": "...", "private_key_id": "...", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQ...\n-----END PRIVATE KEY-----\n", "client_email": "...", ...}Wyciągnij wartość private_key, zdejmij otaczające cudzysłowy i to ląduje w OAuthPvtKey= (escapy \n są dosłowne — zachowaj jako stringi backslash-n, NIE jako prawdziwe nowe linie).
Krok 4 — Podłącz przez kreator Saiku Cloud
-
Zaloguj się na
https://cloud.saiku.bi/. -
Idź do Połączenia na lewym pasku bocznym.
-
Pod 1. Wybierz typ hurtowni kliknij kafelek BigQuery.
-
Uzupełnij:
- JDBC URL — URL z Kroku 3.
- Username — cokolwiek (np.
bigquery). Sterownik ignoruje to pole; auth jest w URL-u. - Password — cokolwiek niepuste (np.
unused-key-in-url). Też ignorowane.
-
Kliknij Testuj połączenie.
Spodziewaj się zielonego bannera wyniku: ✓ Connection successful plus wykryta wersja BigQuery (coś jak BigQuery 2.0). Pierwsze połączenie do BigQuery zajmuje 5–10 sekund (wymiana tokenu + listowanie zbiorów).
Krok 5 — Zapisz połączenie
Ten sam kształt co każdy inny dialekt — wpisz ponownie hasło-placeholder, nadaj etykietę, zapisz.
Rozwiązywanie problemów
✗ Connection failed (AUTH_FAILED)
- Formatowanie
OAuthPvtKey— najczęstsza przyczyna. PEM musi zawierać dosłowne\nmiędzy liniami (NIE prawdziwe nowe linie). Sprawdź dwukrotnie: wartość powinna zaczynać się-----BEGIN PRIVATE KEY-----\nMIIE...(backslash-n, nie nowa linia). - Konto serwisowe nie ma BigQuery Job User w zakresie projektu — nawet z Data Viewer na zbiorze BigQuery odrzuca zapytania z kont bez Job User na poziomie projektu.
- Konto serwisowe wyłączone lub usunięte — sprawdź konsolę IAM.
✗ Connection failed (DATABASE_NOT_FOUND)
ProjectId= jest źle albo konto serwisowe nie ma żadnych widocznych zbiorów w tym projekcie. Zweryfikuj, że id projektu pasuje do tego, co pokazane w URL-u konsoli Google Cloud.
✗ Connection failed (HOST_UNREACHABLE) lub (TIMEOUT)
API BigQuery rzadko jest nieosiągalne; sprawdź stronę statusu GCP. Jeśli GCP jest zdrowe, segment URL-a https://www.googleapis.com/bigquery/v2:443 jest prawdopodobnie błędnie wpisany — musi być dokładny.
✗ Connection failed with "OAuthType=1 requires interactive OAuth"
Ustawiłeś OAuthType=1 (user OAuth) zamiast OAuthType=0 (konto serwisowe). Przełącz na OAuthType=0 i dostarcz klucz konta serwisowego.
Kostka renderuje się, ale bez danych
Konto serwisowe ma BigQuery Job User (więc zapytania się powodzą), ale nie ma BigQuery Data Viewer na zbiorze (więc zapytania zwracają puste wyniki). Dodaj Data Viewer w zakresie zbioru.
Cokolwiek innego
Zrób zrzut ekranu kreatora z widocznym czerwonym bannerem wyniku (linia Kind: ... w szczególności) i wyślij na support@saiku.bi.
Enterprise: sieć prywatna {#enterprise-private-network}
Dla klientów Enterprise BigQuery obsługuje Private Service Connect — ruch API BigQuery Twojego tenanta zostaje w sieci prywatnej. Endpoint URL-a JDBC zmienia się z https://www.googleapis.com/bigquery/v2:443 na Twój endpoint PSC. Skontaktuj się z zespołem konta, by zaprowidować peering.
Spróbuj z FoodMart
Chcesz przetestować Saiku Cloud z tym dialektem przed podłączeniem własnych danych? Pobierz przykładowy zbiór FoodMart spakowany dla BigQuery: