Conectar um data warehouse Snowflake
Este guia mostra como conectar uma conta Snowflake ao Saiku Cloud. Dez minutos se você se sente confortável no console do Snowflake; trinta se também precisar configurar auth por par de chaves RSA (recomendado para service accounts).
Impacto no tier: todos os tiers do Saiku Cloud suportam BYOC do Snowflake. Clientes no formato Snowflake geralmente caem no [Team] ou [Business] (pod de engine dedicado), mas o [Starter] funciona também.
Driver: o Saiku Cloud traz o driver JDBC oficial do Snowflake (Apache 2.0). O driver tem ~100 MB porque o protocolo de transporte do Snowflake é Apache Arrow-nativo; o empacotamento do Arrow é não negociável.
O que você vai precisar
- Uma conta Snowflake (contas trial em signup.snowflake.com — 30 dias grátis, $400 em créditos).
- Acesso admin para criar uma role + usuário, OU as credenciais de uma role somente leitura existente.
- O identificador de conta do Snowflake —
<orgname>-<accountname>ou o formato legado<accountname>.<region>.<cloud>.
Passo 1 — Allowlist do nosso IP de egress (se a sua conta tem network policy habilitada)
Todas as consultas do Saiku Cloud para o seu data warehouse saem de 87.99.153.244.
Contas Snowflake criadas em 2024+ têm network policy habilitada por default — uma allowlist de IPs autorizados a autenticar. Se a sua conta não tem uma policy, pule este passo; o Snowflake aceita conexões de qualquer IP por default.
Para adicionar o IP do Saiku Cloud:
-- As ACCOUNTADMIN:CREATE NETWORK POLICY saiku_cloud_allow ALLOWED_IP_LIST = ('87.99.153.244');
-- Apply to your service user (or to the account, depending on shape):ALTER USER saiku_read SET NETWORK_POLICY = saiku_cloud_allow;Se você já tem uma network policy existente com outros IPs, adicione 87.99.153.244 à lista existente em vez de substituí-la.
Passo 2 — Crie uma role + usuário somente leitura
Modelo de role do Snowflake: um usuário tem uma role default; a role tem grants. O Saiku Cloud precisa de SELECT nas tabelas que vai ler.
-- As 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;Ajuste ANALYTICS / PUBLIC / COMPUTE_WH para a sua conta.
Auth por par de chaves RSA (recomendado para produção)
Para service accounts, a auth por senha está sendo descontinuada em algumas regiões do Snowflake. O substituto é par de chaves RSA:
# Generate a 2048-bit RSA private keyopenssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocryptopenssl rsa -in rsa_key.p8 -pubout -out rsa_key.pubEnvie a chave pública para o usuário:
ALTER USER saiku_read SET RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFA...';Na URL JDBC, aponte para o caminho do arquivo de chave privada (o container do engine precisa de acesso de leitura — para o engine compartilhado do Saiku Cloud, cole o conteúdo da chave inline via private_key_file_pwd).
Passo 3 — Monte a URL JDBC
O formato:
jdbc:snowflake://<account>.snowflakecomputing.com/?db=<DATABASE>&warehouse=<WAREHOUSE>&role=<ROLE>Concreto:
jdbc:snowflake://abc12345.us-east-1.aws.snowflakecomputing.com/?db=ANALYTICS&warehouse=COMPUTE_WH&role=SAIKU_READEROu com o identificador mais novo <orgname>-<accountname>:
jdbc:snowflake://yourorg-yourdb.snowflakecomputing.com/?db=ANALYTICS&warehouse=COMPUTE_WH&role=SAIKU_READERParâmetros chave:
db=— o nome do banco. Obrigatório (senão o Snowflake roteia as queries para o default do usuário, que geralmente é errado).warehouse=— o warehouse de compute. Obrigatório.role=— a role a ser assumida. Bata com o que você concedeu no passo 2.- TLS está sempre ativo no Snowflake — sem parâmetro SSL para definir.
Passo 4 — Conecte pelo wizard do Saiku Cloud
-
Faça login em
https://cloud.saiku.bi/. -
Vá em Conexões na barra lateral esquerda.
-
Em 1. Escolha o tipo de data warehouse, clique no tile Snowflake.
-
Preencha:
- URL JDBC — a URL do passo 3.
- Usuário —
saiku_read(ou o seu usuário de service account). - Senha — a senha do passo 2.
-
Clique em Testar conexão.
Espere um banner verde de resultado: ✓ Connection successful mais a versão detectada do Snowflake. A primeira conexão do Snowflake leva 5–15 segundos (auth + warehouse-spinup se estava pausado); testes seguintes são mais rápidos.
Passo 5 — Salve a conexão
Mesmo formato dos outros dialetos — digite a senha de novo, dê um rótulo, salve.
Solução de problemas
✗ Connection failed (HOST_UNREACHABLE) ou (TIMEOUT)
- Identificador de conta errado — a parte antes de
.snowflakecomputing.comé o identificador inteiro.abc12345.us-east-1.awsé um identificador;abc12345sozinho não resolve. Os docs do Snowflake são confusos aqui; copie o identificador da página de detalhes da conta no console do Snowflake. - Network policy — se a sua conta tem network policy e o IP do Saiku Cloud não está na allowlist, o Snowflake silenciosamente dá timeout na conexão. Adicione
87.99.153.244conforme o passo 1.
✗ Connection failed (AUTH_FAILED)
Erro Snowflake 390100 / 390101 / 28000.
- Case do usuário — usuários do Snowflake são armazenados em UPPERCASE por default. Digite
saiku_reade ele é armazenado comoSAIKU_READ. A camada JDBC é case-insensitive na consulta, então isso geralmente não morde — mas se você envolveu o usuário em aspas duplas ao criar, o case é preservado + precisa bater exatamente. - MFA — se MFA está habilitado no usuário, auth por senha vai falhar. Ou desabilite MFA para o usuário de serviço ou use auth por par de chaves RSA (seção RSA do passo 2).
- Role não existe — se
role=na URL nomeia uma role que o usuário não pode assumir, o Snowflake retorna auth-failed em vez de um erro mais específico. Verifique comSHOW GRANTS TO USER saiku_read;no console.
✗ Connection failed (DATABASE_NOT_FOUND)
O banco na URL não existe OU a role não tem USAGE nele. GRANT USAGE ON DATABASE ANALYTICS TO ROLE saiku_reader; corrige o último; o primeiro precisa do nome do banco corrigido.
A conexão funciona mas os cubos não renderizam
USAGE no banco não basta — o Saiku também precisa de USAGE no schema e SELECT nas tabelas. A cadeia completa de grants está no passo 2. Um erro comum é conceder USAGE no banco mas esquecer USAGE no schema.
Qualquer outra coisa
Tire um screenshot do wizard com o banner vermelho de resultado visível (especificamente a linha Kind: ...) e mande para support@saiku.bi.
Enterprise: PrivateLink
Para clientes Enterprise, o endpoint AWS PrivateLink do Snowflake pode substituir o caminho de rede pública inteiramente. A URL JDBC muda para um formato <account>.privatelink.snowflakecomputing.com; a allowlist de IP se torna irrelevante. Entre em contato com seu account team para provisionar o peering.
Teste com FoodMart
Quer testar o Saiku Cloud com esse dialeto antes de conectar seus próprios dados? Baixe o dataset de exemplo FoodMart empacotado para Snowflake: