Zum Inhalt springen

Ein Snowflake-Warehouse verbinden

Diese Anleitung führt Sie durch das Verbinden eines Snowflake-Accounts mit Saiku Cloud. Zehn Minuten, wenn Sie mit der Snowflake-Konsole vertraut sind; dreißig, wenn Sie auch RSA-Schlüsselpaar-Auth einrichten müssen (empfohlen für Service-Accounts).

Plan-Auswirkung: Jeder Saiku-Cloud-Plan unterstützt Snowflake-BYOC. Snowflake-geprägte Kunden landen meist auf [Team] oder [Business] (dediziertes Engine-Pod), aber [Starter] funktioniert ebenfalls.

Treiber: Saiku Cloud liefert Snowflakes offiziellen JDBC-Treiber (Apache 2.0). Der Treiber ist ~100 MB groß, weil das Wire-Protokoll von Snowflake Apache-Arrow-nativ ist; die Arrow-Bündelung ist nicht verhandelbar.

Was Sie brauchen

  • Einen Snowflake-Account (Trial-Accounts unter signup.snowflake.com — 30 Tage kostenlos, $400 Guthaben).
  • Admin-Zugriff, um eine Rolle + einen Benutzer zu erstellen, ODER die Anmeldedaten einer bestehenden Read-only-Rolle.
  • Den Snowflake-Account-Identifier<orgname>-<accountname> oder die alte Form <accountname>.<region>.<cloud>.

Schritt 1 — Unsere Egress-IP auf die Allowlist setzen (falls Ihr Account Network-Policy aktiviert hat)

Die Queries von Saiku Cloud an Ihr Warehouse stammen alle von 87.99.153.244.

Snowflake-Accounts, die ab 2024 erstellt wurden, haben standardmäßig Network Policy aktiviert — eine Allowlist von IPs, die sich authentifizieren dürfen. Wenn Ihr Account keine Policy hat, überspringen Sie diesen Schritt; Snowflake akzeptiert standardmäßig Verbindungen von beliebigen IPs.

So fügen Sie die IP von Saiku Cloud hinzu:

-- Als ACCOUNTADMIN:
CREATE NETWORK POLICY saiku_cloud_allow
ALLOWED_IP_LIST = ('87.99.153.244');
-- Auf Ihren Service-Benutzer anwenden (oder auf den Account, je nach Form):
ALTER USER saiku_read SET NETWORK_POLICY = saiku_cloud_allow;

Wenn Sie eine bestehende Network Policy mit anderen IPs darin haben, fügen Sie 87.99.153.244 zur bestehenden Liste hinzu, statt sie zu ersetzen.

Schritt 2 — Eine Read-only-Rolle + einen Benutzer erstellen

Snowflakes Rollenmodell: Ein Benutzer hat eine Standardrolle; die Rolle hat Grants. Saiku Cloud benötigt SELECT auf die Tabellen, die es liest.

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

Passen Sie ANALYTICS / PUBLIC / COMPUTE_WH an Ihren Account an.

RSA-Schlüsselpaar-Auth (für Produktion empfohlen)

Für Service-Accounts wird die Passwort-Auth in einigen Snowflake-Regionen abgekündigt. Der Ersatz ist RSA-Schlüsselpaar:

Terminal-Fenster
# Einen 2048-Bit-RSA-Privatschlüssel generieren
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

Laden Sie den öffentlichen Schlüssel zum Benutzer hoch:

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

Verweisen Sie in der JDBC-URL auf den Pfad der Privatschlüssel-Datei (der Engine-Container benötigt Lesezugriff — für die Shared Engine von Saiku Cloud fügen Sie den Schlüsselinhalt inline über private_key_file_pwd ein).

Schritt 3 — Die JDBC-URL bauen

Die Form:

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

Konkret:

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

Oder mit dem neueren <orgname>-<accountname>-Identifier:

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

Schlüsselparameter:

  • db= — der Datenbankname. Erforderlich (sonst routet Snowflake Queries an den Default des Benutzers, der meist falsch ist).
  • warehouse= — das Compute-Warehouse. Erforderlich.
  • role= — die anzunehmende Rolle. Muss zu dem passen, was Sie in Schritt 2 gewährt haben.
  • TLS ist bei Snowflake immer an — kein SSL-Parameter zu setzen.

Schritt 4 — Verbinden über den Saiku-Cloud-Wizard

  1. Melden Sie sich bei https://cloud.saiku.bi/ an.

  2. Navigieren Sie zu Verbindungen in der linken Seitenleiste.

  3. Klicken Sie unter 1. Warehouse-Typ wählen auf das Snowflake-Kachel.

  4. Füllen Sie aus:

    • JDBC-URL — die URL aus Schritt 3.
    • Benutzernamesaiku_read (oder Ihr Service-Account-Benutzername).
    • Passwort — das Passwort aus Schritt 2.
  5. Klicken Sie auf Verbindung testen.

Erwarten Sie einen grünen Ergebnis-Banner: ✓ Connection successful plus die erkannte Snowflake-Version. Die erste Snowflake-Verbindung dauert 5–15 Sekunden (Auth + Warehouse-Start, falls es pausiert war); nachfolgende Tests sind schneller.

Schritt 5 — Die Verbindung speichern

Gleiche Form wie bei jedem anderen Dialekt — geben Sie das Passwort erneut ein, geben Sie ihr ein Label, speichern Sie.

Fehlerbehebung

✗ Connection failed (HOST_UNREACHABLE) oder (TIMEOUT)

  • Falscher Account-Identifier — der Teil vor .snowflakecomputing.com ist der gesamte Identifier. abc12345.us-east-1.aws ist ein Identifier; abc12345 allein löst nicht auf. Snowflakes Dokumentation ist hier verwirrend; kopieren Sie den Identifier von der Account-Details-Seite der Snowflake-Konsole.
  • Network Policy — wenn Ihr Account eine Network Policy hat und die IP von Saiku Cloud nicht auf der Allowlist steht, lässt Snowflake die Verbindung still ablaufen. Fügen Sie 87.99.153.244 gemäß Schritt 1 hinzu.

✗ Connection failed (AUTH_FAILED)

Snowflake-Fehler 390100 / 390101 / 28000.

  • Case des Benutzernamens — Snowflake-Benutzernamen sind im Speicher standardmäßig UPPERCASE. Tippen Sie saiku_read, und er wird als SAIKU_READ gespeichert. Die JDBC-Schicht ist beim Nachschlagen case-insensitiv, sodass dies meist nicht beißt — aber wenn Sie den Benutzernamen beim Erstellen in doppelte Anführungszeichen gesetzt haben, wird der Case bewahrt + muss exakt passen.
  • MFA — wenn MFA für den Benutzer aktiviert ist, schlägt die Passwort-Auth fehl. Entweder MFA für den Service-Benutzer deaktivieren oder RSA-Schlüsselpaar-Auth verwenden (RSA-Abschnitt in Schritt 2).
  • Rolle existiert nicht — wenn role= in der URL eine Rolle benennt, die der Benutzer nicht annehmen kann, gibt Snowflake Auth-Failed zurück statt eines spezifischeren Fehlers. Verifizieren Sie mit SHOW GRANTS TO USER saiku_read; in der Konsole.

✗ Connection failed (DATABASE_NOT_FOUND)

Die Datenbank in der URL existiert nicht ODER die Rolle hat kein USAGE darauf. GRANT USAGE ON DATABASE ANALYTICS TO ROLE saiku_reader; behebt letzteres; ersteres erfordert den korrigierten Datenbanknamen.

Verbindung funktioniert, aber Cubes rendern nicht

USAGE auf der Datenbank reicht nicht — Saiku braucht auch USAGE auf dem Schema und SELECT auf den Tabellen. Die vollständige Grant-Kette steht in Schritt 2. Ein häufiger Fehler ist, Database USAGE zu gewähren, aber Schema USAGE zu vergessen.

Alles andere

Machen Sie einen Screenshot des Wizards mit sichtbarem rotem Ergebnis-Banner (Kind: ...-Zeile insbesondere) und senden Sie ihn an support@saiku.bi.

Für Enterprise-Kunden kann Snowflakes AWS-PrivateLink-Endpunkt den öffentlichen Netzwerkpfad vollständig ersetzen. Die JDBC-URL ändert sich zu einer <account>.privatelink.snowflakecomputing.com-Form; die IP-Allowlist wird irrelevant. 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 Snowflake, herunter:

FoodMart-Sample-Datensatz für Snowflake