Przejdź do głównej zawartości

Podłączanie hurtowni Snowflake

Ten przewodnik prowadzi Cię przez podłączanie konta Snowflake do Saiku Cloud. Dziesięć minut, jeśli czujesz się komfortowo w konsoli Snowflake; trzydzieści, jeśli musisz też skonfigurować auth parą kluczy RSA (zalecane dla kont serwisowych).

Wpływ na poziom: każdy poziom Saiku Cloud obsługuje Snowflake BYOC. Klienci o kształcie Snowflake zwykle lądują na [Team] lub [Business] (dedykowany pod silnika), ale [Starter] też działa.

Sterownik: Saiku Cloud dostarcza oficjalny sterownik JDBC Snowflake (Apache 2.0). Sterownik ma ~100 MB, bo protokół wire Snowflake jest natywny dla Apache Arrow; bundlowanie Arrow jest nienegocjowalne.

Czego będziesz potrzebować

  • Konta Snowflake (próbne konta na signup.snowflake.com — 30 dni za darmo, $400 kredytów).
  • Dostępu admina, by utworzyć rolę + użytkownika, ALBO poświadczeń istniejącej roli tylko do odczytu.
  • Snowflake’owego identyfikatora konta<orgname>-<accountname> lub starszego kształtu <accountname>.<region>.<cloud>.

Krok 1 — Wpisz nasze egress IP do allowlisty (jeśli Twoje konto ma włączoną network policy)

Zapytania Saiku Cloud do Twojej hurtowni wszystkie pochodzą z 87.99.153.244.

Konta Snowflake utworzone w 2024+ mają network policy włączoną domyślnie — allowlistę IP dopuszczonych do uwierzytelnienia. Jeśli Twoje konto nie ma polityki, pomiń ten krok; Snowflake akceptuje połączenia z dowolnego IP domyślnie.

Aby dodać IP Saiku Cloud:

-- Jako ACCOUNTADMIN:
CREATE NETWORK POLICY saiku_cloud_allow
ALLOWED_IP_LIST = ('87.99.153.244');
-- Zastosuj do użytkownika serwisowego (lub do konta, w zależności od kształtu):
ALTER USER saiku_read SET NETWORK_POLICY = saiku_cloud_allow;

Jeśli masz istniejącą network policy z innymi IP, dodaj 87.99.153.244 do istniejącej listy, zamiast ją zastępować.

Krok 2 — Utwórz rolę i użytkownika tylko do odczytu

Model ról Snowflake: użytkownik ma rolę domyślną; rola ma granty. Saiku Cloud potrzebuje SELECT na tabelach, które będzie czytać.

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

Dostosuj ANALYTICS / PUBLIC / COMPUTE_WH do swojego konta.

Auth parą kluczy RSA (zalecane dla produkcji)

Dla kont serwisowych auth hasłem jest wycofywana w niektórych regionach Snowflake. Zastępcza jest para kluczy RSA:

Okno terminala
# Wygeneruj klucz prywatny RSA 2048-bit
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

Wgraj klucz publiczny do użytkownika:

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

W JDBC URL wskaż ścieżkę pliku klucza prywatnego (kontener silnika potrzebuje dostępu do odczytu — dla współdzielonego silnika Saiku Cloud wklej zawartość klucza inline przez private_key_file_pwd).

Krok 3 — Zbuduj JDBC URL

Kształt:

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

Konkretnie:

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

Albo z nowszym identyfikatorem <orgname>-<accountname>:

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

Kluczowe parametry:

  • db= — nazwa bazy danych. Wymagane (inaczej Snowflake rutuje zapytania do domyślnej użytkownika, która zwykle jest zła).
  • warehouse= — hurtownia obliczeniowa. Wymagane.
  • role= — rola do przyjęcia. Dopasuj do tego, co nadałeś w Kroku 2.
  • TLS jest zawsze włączone ze Snowflake — bez parametru SSL do ustawienia.

Krok 4 — Podłącz przez kreator Saiku Cloud

  1. Zaloguj się na https://cloud.saiku.bi/.

  2. Idź do Połączenia na lewym pasku bocznym.

  3. Pod 1. Wybierz typ hurtowni kliknij kafelek Snowflake.

  4. Uzupełnij:

    • JDBC URL — URL z Kroku 3.
    • Usernamesaiku_read (lub nazwa Twojego konta serwisowego).
    • Password — hasło z Kroku 2.
  5. Kliknij Testuj połączenie.

Spodziewaj się zielonego bannera wyniku: ✓ Connection successful plus wykryta wersja Snowflake. Pierwsze połączenie Snowflake zajmuje 5–15 sekund (auth + spinup hurtowni, jeśli była zapauzowana); kolejne testy są szybsze.

Krok 5 — Zapisz połączenie

Ten sam kształt co każdy inny dialekt — wpisz ponownie hasło, nadaj etykietę, zapisz.

Rozwiązywanie problemów

✗ Connection failed (HOST_UNREACHABLE) lub (TIMEOUT)

  • Zły identyfikator konta — część przed .snowflakecomputing.com to cały identyfikator. abc12345.us-east-1.aws to jeden identyfikator; abc12345 sam nie rozwiąże się. Dokumentacja Snowflake jest tutaj myląca; skopiuj identyfikator ze strony szczegółów konta w konsoli Snowflake.
  • Network policy — jeśli Twoje konto ma network policy, a IP Saiku Cloud nie ma na allowliście, Snowflake po cichu timeoutuje połączenie. Dodaj 87.99.153.244 zgodnie z Krokiem 1.

✗ Connection failed (AUTH_FAILED)

Błąd Snowflake 390100 / 390101 / 28000.

  • Wielkość liter nazwy użytkownika — nazwy użytkowników Snowflake domyślnie WIELKIE LITERY w magazynie. Wpisz saiku_read, a jest zapisane jako SAIKU_READ. Warstwa JDBC jest case-insensitive przy lookupie, więc to zwykle nie boli — ale jeśli otoczyłeś nazwę użytkownika podwójnymi cudzysłowami przy tworzeniu, wielkość liter jest zachowana + musi pasować dokładnie.
  • MFA — jeśli MFA jest włączone na użytkowniku, auth hasłem zawiedzie. Albo wyłącz MFA dla użytkownika serwisowego, albo użyj auth parą kluczy RSA (sekcja RSA w Kroku 2).
  • Rola nie istnieje — jeśli role= w URL-u nazywa rolę, której użytkownik nie może przyjąć, Snowflake zwraca auth-failed zamiast bardziej specyficznego błędu. Zweryfikuj SHOW GRANTS TO USER saiku_read; w konsoli.

✗ Connection failed (DATABASE_NOT_FOUND)

Baza w URL-u nie istnieje LUB rola nie ma USAGE na niej. GRANT USAGE ON DATABASE ANALYTICS TO ROLE saiku_reader; naprawia to drugie; pierwsze wymaga poprawienia nazwy bazy.

Połączenie działa, ale kostki się nie renderują

USAGE na bazie nie wystarczy — Saiku potrzebuje też USAGE na schemie i SELECT na tabelach. Pełny łańcuch grantów jest w Kroku 2. Częsty błąd to nadanie USAGE na bazie z zapomnieniem o USAGE na schemie.

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.

Dla klientów Enterprise endpoint Snowflake AWS PrivateLink może całkowicie zastąpić ścieżkę publicznej sieci. JDBC URL zmienia się na kształt <account>.privatelink.snowflakecomputing.com; allowlist IP staje się nieistotny. 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 Snowflake:

Przykładowy zbiór FoodMart dla Snowflake