Snowflake

Pour connecter Looker à Snowflake, procédez comme suit:

  1. Créez un utilisateur Looker sur Snowflake et provisionnez l'accès.
  2. Configurez une connexion de base de données dans Looker.

Créer un utilisateur Looker sur Snowflake

Nous vous recommandons d'utiliser les commandes suivantes pour créer l'utilisateur Looker. Veillez à exécuter chaque ligne individuellement.

Vous pouvez également ajouter le mot clé ON FUTURE pour conserver des instructions GRANT sur les objets nouvellement créés. Nous vous recommandons de l'exécuter pour les tables de tous les schémas que Looker utilisera. Vous n'avez donc pas besoin d'exécuter à nouveau les instructions GRANT lorsque de nouvelles tables sont créées.

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

Si vous collez les commandes précédentes sous forme de lot dans le panneau de connexion Snowflake, cochez la case Toutes les requêtes pour vous assurer que toutes les lignes sont exécutées. Par défaut, Snowflake n'exécute que les lignes sélectionnées.

Créer la connexion Looker à votre base de données

Dans la section Administration de Looker, sélectionnez Connexions, puis cliquez sur Ajouter une connexion.

Saisissez les informations de connexion. La majorité des paramètres sont communs à la plupart des dialectes de base de données. Pour en savoir plus, consultez la page de documentation Connecter Looker à votre base de données. Certains des paramètres sont décrits ci-dessous:

  • Nom: attribuez un nom à la connexion. C'est ainsi que le modèle LookML référencera la connexion.
  • Dialect: sélectionnez Snowflake.
  • Host (Hôte) : saisissez le nom d'hôte Snowflake. Il ressemblera à <account_name>.snowflakecomputing.com. Vérifiez les exemples de noms de comptes Snowflake par région pour vous assurer que vous utilisez la valeur appropriée pour votre déploiement.
  • Port: la valeur par défaut est 443.
  • Base de données: saisissez la base de données par défaut à utiliser. Ce champ est sensible à la casse.
  • Schéma: saisissez le schéma par défaut.
  • Authentification: sélectionnez Compte de base de données ou OAuth :
    • Dans le champ Compte de base de données, spécifiez le nom d'utilisateur et le mot de passe du compte utilisateur Snowflake à utiliser pour se connecter à Looker.
    • Utilisez OAuth si vous souhaitez configurer OAuth pour la connexion.
  • Activer les tables dérivées persistantes: utilisez ce bouton pour activer les tables dérivées persistantes. L'activation des tables dérivées persistantes affiche les champs supplémentaires des PDT ainsi que la section Remplacements pour les tables dérivées persistantes de la connexion.
  • Base de données temporaire: si les tables dérivées persistantes sont activées, définissez ce champ sur un schéma où l'utilisateur dispose de tous les droits nécessaires pour créer, supprimer, renommer et modifier des tables.
  • Nombre maximal de connexions par nœud: laissez ce paramètre sur la valeur par défaut. Pour en savoir plus sur ce paramètre, consultez la section Nombre maximal de connexions par nœud de la page de documentation Connecter Looker à votre base de données.
  • Estimation du coût: active les estimations du coût pour les requêtes Explorer, les estimations du coût pour les requêtes SQL Runner et les estimations des économies de calculs pour les requêtes de notoriété agrégées sur la connexion.
  • Database Time Zone (Fuseau horaire de la base de données) : fuseau horaire utilisé par votre base de données Snowflake pour stocker des dates et des heures. La valeur par défaut est UTC. Cette opération est facultative.
  • Requête de fuseau horaire: fuseau horaire dans lequel vos requêtes s'affichent. Exemple : US Eastern (America – New York). Cette opération est facultative.
  • Paramètres JDBC supplémentaires: ajoutez des paramètres JDBC supplémentaires à partir du pilote JDBC Snowflake.

    • Ajoutez warehouse=<YOUR WAREHOUSE NAME>.
    • De plus, par défaut, Looker définit les paramètres Snowflake suivants sur chaque session:

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

      Vous pouvez remplacer chacun de ces paramètres en définissant une autre valeur dans le champ Autres paramètres JDBC, par exemple: &AUTOCOMMIT=FALSE

Pour vérifier que la connexion a réussi, cliquez sur Tester. Pour en savoir plus sur le dépannage, consultez la page de test de la connectivité de la base de données.

Pour enregistrer ces paramètres, cliquez sur Connecter.

désigner des entrepôts Snowflake par groupe ou par utilisateur ;

Vous pouvez utiliser les attributs utilisateur Looker pour attribuer des entrepôts Snowflake distincts à des utilisateurs ou des groupes Looker individuels. Cela peut être utile, par exemple, si vos utilisateurs ont besoin de différents niveaux de puissance de calcul. Vous pouvez attribuer un entrepôt avec des ressources de calcul plus importantes aux seuls utilisateurs qui en ont besoin, tout en affectant un entrepôt avec moins de ressources aux utilisateurs dont les besoins sont moins importants.

Pour désigner des entrepôts par groupe ou par utilisateur:

  1. Ajoutez les groupes ou les utilisateurs dans Looker.
  2. Définissez un attribut utilisateur dans Looker, dans lequel les noms des entrepôts Snowflake seront stockés. Vous pouvez attribuer n'importe quel nom à cet attribut, par exemple snowflake_wh.

  3. Dans l'attribut utilisateur que vous venez de définir, attribuez les valeurs des noms d'entrepôt aux groupes ou aux utilisateurs.

  4. Dans le champ Autres paramètres JDBC de la page Paramètres de connexion, ajoutez le code suivant en remplaçant snowflake_warehouse par le nom de l'attribut utilisateur que vous avez défini:

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

    Exemple :

  5. Pour tester les paramètres de connexion individuels, vous pouvez sudo en tant qu'utilisateur auquel vous avez attribué une valeur de nom d'entrepôt.

Vous trouverez des instructions plus détaillées sur cette procédure sur le blog de Red Pill Analytics.

Fonctionnalité de suspension automatique de Snowflake

Les entrepôts Snowflake sont dotés d'une fonctionnalité de suspension automatique activée par défaut. Après une période spécifiée, l'entrepôt sera automatiquement suspendu. Si l'entrepôt est suspendu, toutes les requêtes génèrent une erreur. Cette erreur n'est pas visible sur les tableaux de bord (aucune donnée n'est normalement affichée), mais elle est visible lors des requêtes sur la page Explorer.

Snowflake intègre également une fonctionnalité de reprise automatique qui reprend l'entrepôt lorsqu'il est interrogé. Toutefois, la réactivation de l'entrepôt peut prendre jusqu'à cinq minutes, ce qui entraîne le blocage des requêtes pendant cinq minutes avant le retour. Ces fonctionnalités ne peuvent pas être configurées dans Looker. Activez ces fonctionnalités dans l'onglet Gares de l'interface utilisateur Snowflake.

Compatibilité avec les PDT

Pour la prise en charge des tables dérivées persistantes, créez un compte utilisateur Snowflake pour les tables dérivées persistantes ayant un accès en écriture à votre base de données et au schéma par défaut. Sur la page Paramètres de connexion de Looker, activez l'option Activer les tables dérivées persistantes. Dans la section PDT Overrides (Forçages de la PDT), saisissez le nom d'utilisateur et le mot de passe de l'utilisateur de la PDT. Pour en savoir plus, consultez la page Connecter Looker à votre base de données.

Les tables dérivées persistantes ne sont pas compatibles avec les connexions Snowflake utilisant OAuth.

Pour les connexions Snowflake, Looker définit la valeur du paramètre AUTOCOMMIT sur TRUE (valeur par défaut de Snowflake). AUTOCOMMIT est nécessaire pour les commandes SQL exécutées par Looker afin de gérer son système d'inscription PDT.

Configurer OAuth pour les connexions Snowflake

Looker est compatible avec le protocole OAuth pour les connexions Snowflake : chaque utilisateur Looker s'authentifie auprès de Snowflake et autorise Looker à exécuter des requêtes sur la base de données avec son propre compte utilisateur Snowflake.

OAuth permet aux administrateurs de bases de données de :

  • faire un audit des utilisateurs Looker qui exécutent des requêtes par rapport à la base de données ;
  • Appliquer des contrôles d'accès basés sur les rôles à l'aide des autorisations Snowflake
  • Utilisez des jetons OAuth pour tous les processus et actions ayant accès à Snowflake, au lieu d'intégrer des ID Snowflake et des mots de passe à plusieurs endroits.
  • Révoquer l'autorisation d'un utilisateur donné via Snowflake

Avec les connexions Snowflake qui utilisent OAuth, les utilisateurs doivent se reconnecter régulièrement lorsque leurs jetons OAuth expirent. La durée de validité des jetons OAuth Snowflake est définie par Snowflake lui-même.

Notez les points suivants pour Snowflake avec OAuth:

  • Si un utilisateur autorise l'expiration de son jeton Snowflake, les calendriers ou alertes qu'il possède seront affectés. Pour éviter cela, Looker enverra un e-mail de notification au propriétaire de chaque programmation et de chaque alerte avant l'expiration du jeton OAuth Snowflake actif. Looker enverra ces e-mails de notification 14 jours, 7 jours et 1 jour avant l'expiration du jeton. L'utilisateur peut accéder à sa page utilisateur Looker pour autoriser à nouveau Looker à la base de données, et éviter ainsi toute interruption de ses planifications et alertes. Pour en savoir plus, consultez la page de personnalisation des paramètres de compte utilisateur.
  • Étant donné que les connexions Snowflake qui utilisent OAuth sont "par utilisateur", les règles de mise en cache s'appliquent également par utilisateur, et pas seulement par requête. Cela signifie qu'au lieu d'utiliser les résultats mis en cache chaque fois que la même requête est exécutée au cours de la période de mise en cache, Looker n'utilisera les résultats mis en cache que si le même utilisateur a exécuté la même requête pendant la période de mise en cache. Pour en savoir plus sur la mise en cache, consultez la page de documentation Requêtes de mise en cache.
  • Lorsque vous utilisez OAuth, vous ne pouvez pas changer de rôle dans le compte utilisateur Snowflake. Comme décrit dans la documentation sur Snowflake, Snowflake utilise le rôle par défaut du compte de l'utilisateur Snowflake, sauf si ce rôle est par défaut ACCOUNTADMIN ou SAFEADMIN. Ces rôles étant bloqués pour OAuth, Snowflake utilisera plutôt le rôle PUBLIC. Pour en savoir plus, consultez la documentation de Snowflake.
  • Les tables dérivées persistantes (PDT) ne sont pas compatibles avec les connexions Snowflake avec OAuth.
  • Lorsqu'ils utilisent sudo en tant qu'autre utilisateur, les administrateurs utilisent le jeton d'accès OAuth de cet utilisateur. Si le jeton d'accès de l'utilisateur a expiré, l'administrateur ne pourra plus créer de jeton au nom de l'utilisateur sudo. L'utilisateur devra se connecter à Snowflake et autoriser à nouveau Looker. Pour en savoir plus sur l'utilisation de la commande sudo, consultez la page de documentation Utilisateurs.

Configurer une base de données Snowflake pour OAuth avec Looker

Pour créer une connexion Snowflake à Looker à l'aide d'OAuth, vous devez configurer l'intégration OAuth dans Snowflake. Vous devez disposer d'un compte utilisateur Snowflake avec l'autorisation ACCOUNTADMIN.

  1. Exécutez la commande suivante dans Snowflake, où <looker_hostname> est le nom d'hôte de votre instance Looker:

      CREATE SECURITY INTEGRATION LOOKER
        TYPE = OAUTH
        ENABLED = TRUE
        OAUTH_CLIENT = LOOKER
        OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
    
  2. Exécutez la commande suivante pour obtenir l'ID client et le code secret OAuth:

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    La réponse aura un OAUTH_CLIENT_ID et un OAUTH_CLIENT_SECRET dont vous aurez besoin ultérieurement dans cette procédure.

  3. Dans Looker, créez une connexion à votre entrepôt Snowflake, comme décrit dans la page Connecter Looker à votre base de données. Lorsque vous créez la connexion, sélectionnez l'option OAuth dans le champ Authentification. Lorsque vous sélectionnez l'option OAuth, Looker affiche les champs ID client OAuth et Code secret du client OAuth.

  4. Collez les valeurs OAUTH_CLIENT_ID et OAUTH_CLIENT_SECRET que vous avez obtenues de votre base de données précédemment dans cette procédure.

  5. Suivez le reste de la procédure pour connecter Looker à votre base de données.

Une fois que vous avez configuré la connexion de Looker à votre base de données, vous pouvez tester la connexion elle-même en effectuant l'une des opérations suivantes:

  • Sélectionnez le bouton Tester au bas de la page Paramètres de connexion, comme décrit dans la page Connecter Looker à votre base de données.
  • Sélectionnez le bouton Tester à côté de la liste de la connexion sur la page d'administration Connexions, comme décrit sur la page de documentation Connexions.

Vous pouvez également tester la connexion et la déployer sur un modèle en procédant comme suit:

  1. Dans Looker, accédez au mode Développement.
  2. Accédez aux fichiers du projet d'un projet Looker qui utilise votre connexion Snowflake.
  3. Ouvrez un fichier de modèle, remplacez la valeur connection du modèle par le nom de la nouvelle connexion Snowflake, puis enregistrez le fichier de modèle.
  4. Ouvrez l'un des explorations ou tableaux de bord du modèle, puis exécutez une requête. Lorsque vous essayez d'exécuter une requête, Looker vous invite à vous connecter à Snowflake.
  5. Suivez les invites de connexion à Snowflake et saisissez vos identifiants Snowflake.

Une fois connecté à Snowflake, Looker affiche votre requête. Si votre requête s'exécute correctement, vous pouvez valider la nouvelle valeur de connexion et déployer vos modifications en production.

Se connecter à Snowflake pour exécuter des requêtes

Une fois la connexion Snowflake configurée pour OAuth, les utilisateurs seront invités à se connecter à Snowflake avant d'exécuter des requêtes. Cela inclut les requêtes de l'outil Explorers, les tableaux de bord, les styles et l'exécuteur SQL.

Les utilisateurs peuvent également se connecter à Snowflake depuis la section OAuth Connection Credentials (Identifiants de connexion OAuth) de la page Account (Compte).

Pour vous connecter à votre compte Snowflake à l'aide de Looker:

  1. Cliquez sur le menu utilisateur Looker.
  2. Sélectionnez Compte.
  3. Faites défiler la page Account (Compte) jusqu'à la section OAuth Connection Credentials (Identifiants de connexion OAuth), puis cliquez sur le bouton Log In (Se connecter) pour la base de données Snowflake souhaitée.

Une fenêtre pop-up de connexion Snowflake s'affiche. Saisissez vos identifiants Snowflake et sélectionnez Log in (Se connecter), puis Allow (Autoriser) pour autoriser Looker à accéder à votre compte Snowflake.

Une fois connecté à Snowflake via Looker, vous pouvez vous déconnecter ou autoriser à nouveau vos identifiants à tout moment via la page Compte, comme décrit dans la page Personnaliser votre compte utilisateur.

Prise en charge de fonctionnalités

Pour que Looker prenne en charge certaines fonctionnalités, votre dialecte de base de données doit également les prendre en charge.

À partir de Looker 23.8, Snowflake est compatible avec les fonctionnalités suivantes:

Caractéristique Compatible ?
Niveau d'assistance
Compatible
Looker (Google Cloud Core)
Oui
Agrégations symétriques
Oui
Tables dérivées
Oui
Tables dérivées SQL persistantes
Oui
Tables dérivées natives persistantes
Oui
Vues stables
Oui
Arrêt des requêtes
Oui
Pivots basés sur SQL
Oui
Fuseaux horaires
Oui
SSL
Oui
Sous-totaux
Oui
Paramètres JDBC supplémentaires
Oui
Sensible à la casse
Oui
Type d'emplacement
Oui
Type de liste
Oui
Centile
Oui
Centile distinct
Non
Processus d'affichage de l'exécuteur SQL
Non
Table "Décrire" de l'exécuteur SQL
Oui
Index d'émissions SQL Runner
Non
Exécuteur SQL 10
Oui
Nombre d'exécuteurs SQL
Oui
SQL Explain
Oui
Identifiants OAuth
Oui
Commentaires contextuels
Oui
Pooling de connexions
Oui
croquis HLL
Oui
Reconnaissance d'agrégats.
Oui
Augmentation de tables PDT
Oui
Millisecondes
Oui
Microsecondes
Oui
Vues matérialisées
Non
Nombre approximatif distinct
Non

Étapes suivantes

Une fois votre base de données connectée à Looker, configurez les options de connexion pour vos utilisateurs.