Snowflake

Siga estas etapas para conectar o Looker ao Snowflake:

  1. Criar um usuário do Looker no Snowflake e provisionar o acesso.
  2. Configure uma conexão de banco de dados no Looker.

Como criar um usuário do Looker no Snowflake

Recomendamos os seguintes comandos para criar o usuário do Looker. Execute cada linha individualmente.

Se quiser, adicione a palavra-chave ON FUTURE para manter as instruções GRANT em objetos recém-criados. É recomendável executá-lo para tabelas em todos os esquemas que o Looker usará, para que você não precise executar novamente instruções GRANT à medida que novas tabelas são criadas.

-- change role to ACCOUNTADMIN
use role ACCOUNTADMIN;

-- create role for looker
create role if not exists looker_role;
grant role looker_role to role SYSADMIN;
    -- Note that we are not making the looker_role a SYSADMIN,
    -- but rather granting users with the SYSADMIN role to modify the looker_role

-- create a user for looker
create user if not exists looker_user
password = '<enter password here>';
grant role looker_role to user looker_user;
alter user looker_user
set default_role = looker_role
default_warehouse = 'looker_wh';

-- change role
use role SYSADMIN;

-- create a warehouse for looker (optional)
create warehouse if not exists looker_wh

-- set the size based on your dataset
warehouse_size = medium
warehouse_type = standard
auto_suspend = 1800
auto_resume = true
initially_suspended = true;
grant all privileges
on warehouse looker_wh
to role looker_role;

-- grant read only database access (repeat for all database/schemas)
grant usage on database <database> to role looker_role;
grant usage on schema <database>.<schema> to role looker_role;

-- rerun the following any time a table is added to the schema
grant select on all tables in schema <database>.<schema> to role looker_role;
-- or
grant select on future tables in schema <database>.<schema> to role looker_role;

-- create schema for looker to write back to
use database <database>;
create schema if not exists looker_scratch;
use role ACCOUNTADMIN;
grant ownership on schema looker_scratch to role SYSADMIN revoke current grants;
grant all on schema looker_scratch to role looker_role;

Se você colar os comandos acima como um lote no painel de conexão do Snowflake, marque a caixa All Query para garantir que todas as linhas sejam executadas. Por padrão, o Snowflake executa apenas as linhas selecionadas:

Como adicionar a conexão

Use a interface do Looker para configurar a conexão do banco de dados: na seção Administrador do Looker, selecione Conexões e, em seguida, clique em Adicionar conexão. Consulte a página de documentação Como conectar o Looker ao seu banco de dados para mais informações.

Digite as informações de conexão nos campos obrigatórios:

  • Name: dê um nome à conexão. É assim que o modelo LookML fará referência à conexão.
  • Dialeto: selecione Floque de neve.
  • Host: digite o nome do host do floco de neve. Ela será semelhante a <account_name>.snowflakecomputing.com. Consulte Exemplos de nomes de conta de floco de neve por região para garantir o uso do valor certo para sua implantação.
  • Porta: o padrão é 443.
  • Banco de dados: insira o banco de dados padrão a ser usado. Ele diferencia maiúsculas de minúsculas.
  • Nome de usuário e senha: insira o nome de usuário e a senha do usuário que se conectará ao Looker.
  • Esquema: insira o esquema padrão.
  • Tabelas derivadas permanentes: marque esta caixa para ativar tabelas derivadas permanentes (PDTs, na sigla em inglês). Isso revela outros campos de PDT e a coluna Substituição de PDT.
  • Banco de dados temporário: se os PDTs estiverem ativados, defina esse campo como um esquema em que o usuário tenha privilégios totais para criar, excluir, renomear e alterar tabelas.
  • Conexões máximas: este é o tamanho opcional do pool de conexões. Use o valor padrão ou saiba mais sobre essa configuração na seção Conexões máximas da página de documentação Como conectar o Looker ao seu banco de dados.
  • Estimativa de custo: ativa estimativas de custo para consultas de exploração, estimativa de custo para consultas do SQL Runner e estimativas de economia de computação para consultas de reconhecimento agregado na conexão.
  • Fuso horário do banco de dados: o fuso horário que o banco de dados do Snowflake usa para armazenar datas e horas. O padrão é UTC. Isso é opcional.
  • Fuso horário da consulta: o fuso horário em que você quer exibir as consultas. Por exemplo, Leste dos EUA (América – Nova York). Isso é opcional.
  • Outros parâmetros: adicione mais parâmetros JDBC do operador Snowflake JDBC.

    • Adicione warehouse=<YOUR WAREHOUSE NAME>.
    • Além disso, por padrão, o Looker definirá os seguintes parâmetros do Snowflake em cada sessão:

      • TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ
      • JDBC_TREAT_DECIMAL_AS_INT=FALSE
      • TIMESTAMP_INPUT_FORMAT=AUTO
      • AUTOCOMMIT=TRUE

      Para substituir cada um deles, defina um valor alternativo no campo Parâmetros adicionais, por exemplo: &AUTOCOMMIT=FALSE

Clique em Testar estas configurações para verificar se a conexão com o Snowflake é bem-sucedida. Consulte a página de documentação Como testar a conectividade do banco de dados para ver informações de solução de problemas.

Clique em Adicionar conexão para salvar a conexão.

Como designar depósitos de floco de neve por grupo ou por usuário

É possível usar os atributos de usuário do Looker para atribuir depósitos separados do Snowflake a usuários ou grupos individuais do Looker. Isso é útil, por exemplo, se você tiver usuários que exigem diferentes níveis de capacidade de computação. É possível atribuir um armazenamento com recursos de computação maiores aos usuários que precisam dele, e atribuir um armazenamento com recursos menores a usuários com necessidades menores.

Para designar depósitos por grupo ou usuário:

  1. Adicione grupos ou usuários ao Looker.
  2. Defina um atributo do usuário para armazenar os nomes dos depósitos de floco de neve:

  3. No atributo de usuário que você acabou de definir, atribua os valores do nome do depósito aos grupos ou aos usuários:

  4. No campo Additional Params na página Connection Settings, adicione o seguinte, substituindo snowflake_warehouse pelo nome do atributo do usuário que você definiu:

  warehouse={{ _user_attributes['snowflake_warehouse'] }}

Exemplo:

  1. Para testar as configurações de conexão individuais, sudo como um usuário a quem você atribuiu um valor de nome de depósito.

Veja instruções mais detalhadas sobre esse procedimento no blog Red Pill Analytics (em inglês).

Recurso de suspensão automática do Snowflake

Os data warehouses em floco de neve têm um recurso de suspensão automática ativado por padrão. Após um período especificado, o data warehouse será suspenso automaticamente. Se o data warehouse estiver suspenso, todas as consultas produzirão um erro. Esse erro não é visível por meio de painéis (nenhum dado é normalmente exibido), mas é visível ao consultar com a página "Explorar".

A Snowflake também tem um recurso de retomada automático que retomará o depósito quando ele for consultado. No entanto, retomar o armazenamento pode levar até cinco minutos, o que pode demorar até cinco minutos para retornar às consultas. Esses recursos podem ser configurados na guia Warehouses:

Compatibilidade com PDT

Para ter suporte à tabela derivada permanente, crie uma conta de usuário do Snowflake para PDTs que tenha acesso de gravação ao banco de dados e o esquema padrão. Na página Configurações de conexão do Looker, marque a caixa Tabelas derivadas permanentes. Em seguida, na coluna PDT Overrides, digite o nome de usuário e a senha do usuário PDT. Consulte a página de documentação Como conectar o Looker ao seu banco de dados para mais informações.

As PDTs não são compatíveis com conexões Snowflakes que usam OAuth.

Para conexões do Snowflake, o Looker define o valor do parâmetro AUTOCOMMIT como TRUE, que é o valor padrão do Snowflake. O AUTOCOMMIT é necessário para comandos SQL que o Looker executa para manter o sistema de registro PDT.

Configurar o OAuth para conexões do Snowflake

O Looker oferece suporte ao OAuth para conexões do Snowflake, o que significa que cada usuário do Looker se autentica no Snowflake e autoriza o Looker a executar consultas no banco de dados com sua própria conta de usuário do Snowflake.

Com o OAuth, os administradores de bancos de dados podem:

  • Auditar quais usuários do Looker estão executando consultas no banco de dados
  • Aplicar controles de acesso com base em papéis usando as permissões do Snowflake
  • Use tokens OAuth para todos os processos e ações que acessam o Snowflake, em vez de incorporar IDs e senhas do Snowflake em vários lugares.
  • Revogar a autorização de um determinado usuário pelo Snowflake

Nas conexões do Snowflake que usam OAuth, os usuários precisam fazer login periodicamente quando os tokens OAuth expirarem. A duração da validade dos tokens OAuth do Snowflake é definida pelo próprio Snowflake.

Observe o seguinte para o Snowflake com o OAuth:

  • Se um usuário permitir que o token do Snowflake expire, as programações ou alertas dele serão afetados. Para se proteger, o Looker envia um e-mail de notificação ao proprietário de cada programação e de cada alerta antes que o token OAuth ativo do Snowflake atual expire. O Looker vai enviar esses e-mails de notificação 14 dias, 7 dias e 1 dia antes da expiração do token. O usuário pode acessar a página do usuário do Looker para reautorizar o Looker no banco de dados e evitar interrupções nos cronogramas e alertas. Veja mais detalhes na página de documentação Como personalizar as configurações da conta de usuário.
  • Como as conexões do Floco de neve que usam OAuth são "por usuário", as políticas de armazenamento em cache também são por usuário, e não apenas por consulta. Portanto, em vez de usar resultados em cache sempre que a mesma consulta for executada no período de armazenamento em cache, o Looker usará os resultados em cache somente se o mesmo usuário tiver executado a mesma consulta no período de armazenamento em cache. Para mais informações sobre armazenamento em cache, consulte a página da documentação Como armazenar em cache as consultas e recriar PDTs com grupos de dados.
  • Ao usar o OAuth, não é possível alternar para diferentes papéis na conta de usuário do Snowflake. Conforme descrito na documentação do Snowflake, o Snowflake usa a função padrão da conta do usuário do Snowflake, a menos que seja o papel ACCOUNTADMIN ou SECURITYADMIN. Como esses papéis são bloqueados para o OAuth, o Snowflake usará o papel PUBLIC. Consulte a documentação do Snowflake para saber mais.
  • As tabelas derivadas permanentes (PDTs, na sigla em inglês) não são compatíveis com conexões de floco de neve com OAuth.
  • Os administradores, quando fizerem sudo como outro usuário, utilizarão o token de acesso OAuth desse usuário. Se o token de acesso do usuário expirar, o administrador não poderá ter um novo token criado em nome do usuário que fez o sudo. O usuário precisará fazer login no Snowflake e autorizar novamente o Looker. Consulte a página de documentação Usuários para ver informações sobre como usar o comando sudo.

Como configurar um banco de dados do Snowflake para OAuth com o Looker

Para criar uma conexão do Snowflake com o Looker usando o OAuth, você precisa configurar a integração do OAuth no Snowflake. Isso requer uma conta de usuário do Snowflake com a permissão ACCOUNTADMIN.

  1. Execute o seguinte comando no Snowflake:
  CREATE SECURITY INTEGRATION LOOKER
    TYPE = OAUTH
    ENABLED = TRUE
    OAUTH_CLIENT = LOOKER
    OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';

Em que <looker_hostname> é o nome do host da sua instância do Looker.

  1. Para encontrar o ID e a chave secreta do cliente OAuth, execute o seguinte comando:
  SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');

A resposta terá um OAUTH_CLIENT_ID e uma OAUTH_CLIENT_SECRET, que serão usados mais adiante neste procedimento.

  1. No Looker, crie uma nova conexão com o armazenamento do Snowflake, conforme descrito na página de documentação Como conectar o Looker ao seu banco de dados. Ao criar a nova conexão, marque a caixa de seleção Use OAuth. Ao selecionar Usar OAuth, você verá os campos ID do cliente OAuth e Chave secreta do cliente OAuth:

  2. Cole os valores OAUTH_CLIENT_ID e OAUTH_CLIENT_SECRET da etapa 2.

  3. Conclua o restante do procedimento para conectar o Looker ao seu banco de dados.

Depois de configurar a conexão do Looker ao seu banco de dados, você pode testar a própria conexão seguindo um destes procedimentos:

  • Clique no botão Testar estas configurações na parte inferior da página Configurações de conexão, conforme descrito na página de documentação Como conectar o Looker ao seu banco de dados.
  • Clique no botão Testar ao lado da listagem de conexão na página Conexões, conforme descrito na página de documentação Conexões.

Além disso, é possível testar a conexão e implantá-la em um modelo fazendo o seguinte:

  1. No Looker, acesse o Modo de desenvolvimento.
  2. Navegue até os arquivos do projeto de um projeto do Looker que usa sua conexão do Snowflake.
  3. Abra um arquivo de modelo, substitua o valor connection do modelo pelo nome da nova conexão de floco de neve e salve o arquivo do modelo.
  4. Abra um dos Explorars ou painéis do modelo e execute uma consulta. Quando você tenta executar uma consulta, o Looker solicita que você faça login no Snowflake.
  5. Siga as instruções de login do Snowflake e digite suas credenciais do Snowflake.

Depois de fazer login no Snowflake, o Looker retornará à consulta. Se a consulta for executada corretamente, confirme o novo valor de conexão e implante as alterações na produção.

Fazendo login no Snowflake para executar consultas

Depois que a conexão do Snowflake estiver configurada para o OAuth, os usuários precisarão fazer login no Snowflake antes de executar as consultas. Isso inclui consultas de "explores", "painéis", "Aparências" e "SQL Runner". Veja um exemplo de exploração que usa uma conexão de floco de neve em que o usuário precisa fazer login:

Os usuários também podem fazer login no Snowflake na seção OAuth Connection Credentials na página Account.

Para fazer login na sua conta do Snowflake pelo Looker, faça o seguinte:

  1. Selecione Conta no menu do usuário.
  2. Role para baixo até a seção Credenciais de conexão OAuth e clique no botão Fazer login para escolher o banco de dados da Snowflake desejado.
  3. Insira suas credenciais do Snowflake na interface do Snowflake' e clique em Log In.
  4. Clique em Permitir para que o Looker tenha acesso à sua conta do Snowflake.

Depois de fazer login no Snowflake com o Looker, é possível sair ou autorizar novamente suas credenciais a qualquer momento na página Conta, conforme descrito em Como personalizar sua conta de usuário.

Suporte a recursos

Para que o Looker ofereça suporte a alguns recursos, seu dialeto do banco de dados também precisa aceitá-los.

Na versão mais recente do Looker, o Snowflake é compatível com os seguintes recursos do Looker:

Próximas etapas

Depois de conectar seu banco de dados ao Looker, configure as opções de login dos usuários.