Snowflake

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

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

Chiffrement du trafic réseau

Il est recommandé de chiffrer le trafic réseau entre l'application Looker et votre base de données. Pour ce faire, consultez les options détaillées sur la page de documentation Sécurisation de l'accès à la base de données.

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 les instructions GRANT sur les objets nouvellement créés. Nous vous recommandons d'exécuter cette opération pour les tables de tous les schémas que Looker utilisera afin de ne pas avoir à réexécuter les instructions GRANT à mesure que de nouvelles tables seront 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 en 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.

Console Snowflake avec la case &quot;Toutes les requêtes&quot; cochée.

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.
  • Dialecte: sélectionnez Snowflake.
  • Hôte: saisissez le nom d'hôte Snowflake. Il se présente comme suit : <account_name>.snowflakecomputing.com. Consultez Exemples de noms de compte Snowflake par région pour vous assurer d'utiliser la valeur appropriée pour votre déploiement.
  • Port: la valeur par défaut est 443.
  • Database (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.
  • Authentication (Authentification) : sélectionnez Database Account (Compte de base de données) ou OAuth :
    • Utilisez Compte de base de données pour spécifier le nom d'utilisateur et le mot de passe du compte utilisateur Snowflake qui sera utilisé pour se connecter à Looker.
    • Utilisez OAuth si vous souhaitez configurer OAuth pour la connexion.
  • Activer les tables dérivées persistantes: utilisez cet interrupteur pour activer les tables dérivées persistantes (PDT). L'activation des tables PDT affiche des champs PDT supplémentaires et la section Remplacements pour les tables PDT pour la connexion.

  • Base de données temporaire: si les PDT sont activés, définissez ce champ sur un schéma dans lequel l'utilisateur dispose de droits d'accès complets pour créer, supprimer, renommer et modifier des tables.

  • Connexions maximales par nœud: vous pouvez conserver la valeur par défaut pour ce paramètre. Pour en savoir plus sur ce paramètre, consultez la section Connexions maximales par nœud de la page de documentation Connecter Looker à votre base de données.

  • Estimation des coûts: permet d'activer les estimations des coûts pour les requêtes d'exploration, les estimations des coûts pour les requêtes SQL Runner et les estimations des économies de calcul pour les requêtes de sensibilisation agrégées sur la connexion.

  • Fuseau horaire de la base de données: fuseau horaire utilisé par votre base de données Snowflake pour stocker les dates et les heures. La valeur par défaut est UTC. Cette opération est facultative.

  • Fuseau horaire de la requête: fuseau horaire dans lequel vous souhaitez que vos requêtes s'affichent. Par exemple, États-Unis (Est) (Amérique – 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 valeur alternative dans le champ Paramètres JDBC supplémentaires, par exemple: &AUTOCOMMIT=FALSE

Pour vérifier que la connexion est établie, cliquez sur Test. Pour obtenir des informations sur le dépannage, consultez la page de documentation Tester 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 vous avez des utilisateurs qui ont besoin de différents niveaux de puissance de calcul. Vous pouvez attribuer un entrepôt avec des ressources de calcul plus importantes uniquement aux utilisateurs qui en ont besoin, et un entrepôt avec des ressources moins importantes aux utilisateurs ayant des besoins moindres.

Pour désigner des entrepôts par groupe ou par utilisateur, procédez comme suit:

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

    Page &quot;Attributs utilisateur&quot; de Looker, affichant l&#39;attribut utilisateur de l&#39;entrepôt Snowflake.

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

    Page &quot;Attributs utilisateur&quot; dans Looker, affichant l&#39;attribut utilisateur de l&#39;entrepôt Snowflake avec des valeurs attribuées à un groupe.

  4. Dans le champ Paramètres JDBC supplémentaires de la page Paramètres de connexion, ajoutez ce qui suit, en remplaçant snowflake_warehouse par le nom de l'attribut utilisateur que vous avez défini:

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

    Exemple :

    Page &quot;Connection Settings&quot; (Paramètres de connexion) de Looker, affichant le champ &quot;Additional JDBC parameters&quot; (Paramètres JDBC supplémentaires) avec le paramètre d&#39;attribut utilisateur de l&#39;entrepôt.

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

Pour obtenir des instructions plus détaillées sur cette procédure, consultez le blog Red Pill Analytics.

Fonctionnalité de mise en veille automatique de Snowflake

Les entrepôts Snowflake disposent d'une fonctionnalité de suspension automatique activée par défaut. Au bout d'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 dans les tableaux de bord (aucune donnée n'est normalement affichée), mais elle l'est lorsque vous effectuez une requête à l'aide de la page "Explorer".

Snowflake dispose également d'une fonctionnalité de reprise automatique qui redémarre l'entrepôt lorsqu'il est interrogé. Toutefois, la reprise de l'entrepôt peut prendre jusqu'à cinq minutes, ce qui entraîne l'arrêt de la réponse des requêtes pendant cinq minutes avant leur retour. Vous ne pouvez pas configurer ces fonctionnalités dans Looker. Activez ces fonctionnalités dans l'onglet Entrepôts de l'interface utilisateur Snowflake.

Onglet &quot;Entrepôts&quot; de l&#39;interface utilisateur Snowflake, avec les cases à cocher &quot;Autosuspend&quot; (Suspendre automatiquement) et &quot;Autoresume&quot; (Redémarrer automatiquement)

Compatibilité avec les PDT

Pour utiliser les tables dérivées persistantes, créez un compte utilisateur Snowflake pour les PDT disposant d'un accès en écriture à votre base de données et au schéma temporaire que Looker utilisera pour créer des PDT. Sur la page Paramètres des connexions de Looker, dans la section Tables dérivées persistantes (PDT), activez l'option Activer les PDT. Ensuite, dans le champ Base de données temporaire, saisissez le nom du schéma temporaire que Looker utilisera pour créer des PDT. Ensuite, dans la section Forcer le PDT, saisissez le nom d'utilisateur et le mot de passe de l'utilisateur du PDT. Pour en savoir plus, consultez la page de documentation Connecter Looker à votre base de données.

Les tables PDT ne sont pas prises en charge pour 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'enregistrement des tables PDT.

Configurer OAuth pour les connexions Snowflake

Looker prend en charge OAuth pour les connexions Snowflake. Ainsi, chaque utilisateur Looker peut s'authentifier dans la base de données et autoriser Looker à exécuter des requêtes sur la base de données avec son propre compte utilisateur OAuth.

OAuth permet aux administrateurs de base de données d'effectuer les tâches suivantes:

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

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 dans Snowflake elle-même.

Notez les points suivants concernant les connexions OAuth au niveau de la base de données:

  • Si un utilisateur laisse expirer son jeton OAuth, toutes les planifications ou alertes Looker qu'il possède seront affectées. Pour éviter cela, Looker envoie une notification par e-mail au propriétaire de chaque calendrier et de chaque alerte avant l'expiration du jeton OAuth actif actuel. Looker enverra ces e-mails de notification 14, 7 et 1 jour avant l'expiration du jeton. L'utilisateur peut accéder à sa page utilisateur Looker pour réautoriser Looker à accéder à la base de données et éviter toute interruption de ses planifications et alertes. Pour en savoir plus, consultez la page de documentation Personnaliser les paramètres des comptes utilisateur.
  • Étant donné que les connexions de base de données qui utilisent OAuth fonctionnent "par utilisateur", la mise en cache des politiques fonctionne de la même manière, et pas seulement par requête. Autrement dit, au lieu d'utiliser des résultats mis en cache lorsque la même requête est exécutée au cours de la période de mise en cache, Looker utilise les résultats mis en cache uniquement si le même utilisateur a exécuté la même requête au cours de la période de mise en cache. Pour en savoir plus sur la mise en cache, consultez la page de documentation Mettre en cache des requêtes.

  • Lorsque vous utilisez OAuth, vous ne pouvez pas passer à différents rôles dans le compte utilisateur Snowflake. Comme décrit dans la documentation Snowflake, Snowflake utilise le rôle par défaut du compte de l'utilisateur Snowflake, sauf si le rôle par défaut est ACCOUNTADMIN ou SECURITYADMIN. Étant donné que ces rôles sont bloqués pour OAuth, Snowflake utilisera le rôle PUBLIC à la place. Pour en savoir plus, consultez la documentation Snowflake.

  • Les tables dérivées persistantes (PDT) ne sont pas compatibles avec les connexions Snowflake avec OAuth.

  • Lorsqu'un administrateur Looker exécute une commande sudo en tant qu'utilisateur, il utilise le jeton d'accès OAuth de cet utilisateur. Si le jeton d'accès de l'utilisateur a expiré, l'administrateur ne peut pas créer de nouveau jeton pour le compte de l'utilisateur faisant l'objet de la commande sudo. 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. Pour ce faire, vous devez disposer d'un compte utilisateur Snowflake disposant de l'autorisation ACCOUNTADMIN.

  1. Exécutez la commande suivante dans Snowflake, où <looker_hostname> correspond à l'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. Obtenez l'ID client et le secret OAuth en exécutant la commande suivante:

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    La réponse contient un OAUTH_CLIENT_ID et un OAUTH_CLIENT_SECRET dont vous aurez besoin plus tard dans cette procédure.

  3. Dans Looker, créez une connexion à votre entrepôt Snowflake, comme décrit dans la section Créer la connexion Looker à votre base de données de cette page. 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 Secret client OAuth.

  4. Collez les valeurs OAUTH_CLIENT_ID et OAUTH_CLIENT_SECRET que vous avez obtenues dans votre base de données plus tôt dans cette procédure.

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

Une fois la connexion Looker à votre base de données configurée, vous pouvez tester la connexion elle-même en procédant comme suit:

  • Sélectionnez le bouton Test en bas de la page Paramètres des connexions, comme décrit sur la page de documentation 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, passez en mode Développement.
  2. Accédez aux fichiers de projet d'un projet Looker qui utilise votre connexion Snowflake.
  3. Ouvrez un fichier de modèle et 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 tableaux de bord ou l'une des explorations 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 instructions de connexion à Snowflake et saisissez vos identifiants Snowflake.

Une fois connecté à Snowflake, Looker vous redirige vers 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 sont invités à se connecter à Snowflake avant d'exécuter des requêtes. Cela inclut les requêtes provenant d'explorations, de tableaux de bord, de présentations et de SQL Runner.

Interface utilisateur de Looker, affichant l&#39;invite de connexion OAuth.

Les utilisateurs peuvent également se connecter à Snowflake depuis la section Identifiants de connexion OAuth de la page Compte.

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

Page &quot;Compte&quot; de Looker, affichant la section &quot;Identifiants de connexion OAuth&quot;.

  1. Cliquez sur le menu des utilisateurs Looker.
  2. Sélectionnez Compte.
  3. Sur la page Compte, accédez à la section Identifiants de connexion OAuth, puis sélectionnez le bouton Se connecter pour la base de données Snowflake appropriée.

Si vous sélectionnez Se connecter, une boîte de dialogue de connexion Snowflake s'affiche. Saisissez vos identifiants Snowflake, sélectionnez Se connecter, puis Autoriser pour accorder à Looker l'accès à votre compte Snowflake.

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

Compatibilité des caractéristiques

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

Snowflake est compatible avec les fonctionnalités suivantes à partir de Looker 24.20:

Caractéristique Compatibilité
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
Exécuteur SQL : afficher les processus
Non
Table de description de SQL Runner
Oui
Indexes de l'exécuteur SQL
Non
SQL Runner Select 10
Oui
Nombre d'exécuteurs SQL
Oui
Explication SQL
Oui
Identifiants Oauth
Oui
Commentaires sur le contexte
Oui
Regroupement de connexions
Oui
Résumés HLL
Oui
Reconnaissance d'agrégats.
Oui
Augmentation de tables PDT
Oui
Millisecondes
Oui
Microsecondes
Oui
Vues matérialisées
Non
Nombre approximatif d'éléments distincts
Non

Étapes suivantes

Après avoir connecté votre base de données à Looker, configurez des options de connexion pour vos utilisateurs.