Tutoriel : Installation du connecteur d’ingestion de données Snowflake ServiceNow®

Introduction

Utilisez ce tutoriel pour configurer et comprendre Snowflake Connector for ServiceNow® à l’aide de l’assistant Snowsight, sélectionner des tables, ingérer des données et exécuter un exemple de requête.

Ce tutoriel ne prétend pas être exhaustif. Voir À propos de Snowflake Connector for ServiceNow®V2 pour l’ensemble des fonctionnalités et des limitations.

Note

Ce tutoriel suppose que vous n’ayez pas de compte ServiceNow® ; il vous guide donc tout au long des étapes de création d’un compte de développeur. Si vous avez un compte Servicenow®, n’hésitez pas à l’essayer, à condition que Snowflake Connector for ServiceNow® soit soumis aux Conditions d’utilisation du connecteur.

Conditions préalables

Avant de démarrer ce tutoriel, assurez-vous d’avoir rempli les conditions suivantes :

  • Droits ORGADMIN d’accepter les Conditions de service du Marketplace Snowflake.

  • Droits ACCOUNTADMIN sur le compte Snowflake dans lequel vous souhaitez installer le connecteur.

Ce que vous apprendrez

Dans ce tutoriel, vous découvrirez :

  • Comment configurer Snowflake Connector for ServiceNow®.

  • Comment ingérer des données ServiceNow® dans Snowflake.

  • Comment arrêter le connecteur pour éviter des coûts inutiles dans un environnement de développement.

Ce dont vous aurez besoin

Ce que vous créerez

Un flux de données d’ingestion de ServiceNow® vers Snowflake.

La configuration de l’instance de développeur ServiceNow®

Si vous ne souhaitez pas tester ce connecteur sur votre compte ServiceNow®, vous pouvez utiliser une instance de développeur. Cette section explique comment configurer une instance de développeur.

  1. Accédez au site Internet des développeurs ServiceNow® et créez un utilisateur développeur.

  2. Connectez-vous au site Internet des développeurs à l’aide de l’utilisateur que vous venez de créer et sélectionnez Create an Instance.

  3. Sélectionnez un type d’instance. Vous recevrez un e-mail contenant l’URL de votre instance ainsi que votre nom d’utilisateur et votre mot de passe.

Le déploiement est généralement assez rapide, de l’ordre de cinq minutes. Mais, en attendant, passons à l’étape suivante et configurons Snowflake !

Créer et configurer le compte Snowflake

Créer un compte Snowflake

Si vous n’avez pas de compte Snowflake, vous pouvez obtenir un essai gratuit auprès de snowflake.com. Sélectionnez Start for Free et suivez les instructions.

Accepter les conditions d’utilisation

  1. Connectez-vous à votre compte Snowflake via l’interface Web Snowsight et passez au rôle ORGADMIN.

  2. Sélectionnez Admin » Billing & Terms.

  3. Dans la section Snowflake Marketplace, passez en revue les conditions d’utilisation du consommateur.

  4. Si vous acceptez les conditions, sélectionnez Accept Terms & Conditions.

Configurer un entrepôt virtuel

Les connecteurs nécessitent un entrepôt virtuel. Pour créer l’entrepôt requis, procédez comme suit :

Passez au rôle ACCOUNTADMIN.

  1. Accédez à Admin -> Warehouses et sélectionnez + Warehouse.

  2. Spécifiez CONNECTOR_UI_WH comme nom d’entrepôt, la taille XS, et laissez toutes les autres valeurs par défaut.

  3. Sélectionnez Create Warehouse.

Installer le connecteur ServiceNow®

Le connecteur est fourni par l’intermédiaire du Marketplace Snowflake et est disponible pour tous les clients de Snowflake. Une fois sélectionné, il est installé sur votre compte sous forme d””application avec plusieurs vues et procédures stockées.

  1. Dans le menu de gauche, sélectionnez Data Products, puis Marketplace.

  2. Dans la fenêtre de recherche, saisissez ServiceNow et sélectionnez la vignette.

  3. Passez en revue les besoins commerciaux et les exemples d’utilisation.

  4. Sélectionnez Get.

  5. Sélectionnez l’entrepôt précédemment créé, CONNECTOR_UI_WH.

  6. Sélectionnez Options.

  7. Pour les besoins de ce tutoriel, acceptez le nom par défaut de la base de données d’installation, Snowflake_Connector_for_ServiceNow. Ne sélectionnez aucun rôle supplémentaire.

  8. Sélectionnez Get. Snowflake Connector for ServiceNow apparaît, indiquant que le connecteur est maintenant prêt à être utilisé.

  9. Sélectionnez Done. Les options de gestion seront spécifiées dans la section suivante.

Ensuite, vérifiez que le connecteur a été installé. Depuis Snowsight, accédez à Data Products -> Apps. Vous devriez voir une nouvelle application installée portant le nom Snowflake_Connector_for_ServiceNow.

Naviguez jusqu’au schéma public dans Data -> Databases et examinez les nouvelles vues et procédures disponibles.

Remplissez toutes les conditions préalables requises.

Lancez Snowflake Connector for ServiceNow® à partir de Data Products -> Apps -> Snowflake Connector for ServiceNow. Une liste de tâches à accomplir avant que le connecteur puisse démarrer l’ingestion de données apparaît. Lisez attentivement les descriptions suivantes et terminez chacune d’entre elles.

L’une des dernières étapes vous demande de créer un registre d’applications si vous souhaitez activer l’authentification OAuth2. Les étapes suivantes porteront sur ce point.

Pour la section suivante, nous vous proposons d’ouvrir deux onglets de navigateur afin de pouvoir copier certaines données de Snowflake dans ServiceNow® :

  • Depuis Snowflake, utilisez le connecteur pour générer l’URL de redirection qui sera collée dans le registre d’applications.

  • Dans ServiceNow®, vous aurez besoin du registre d’applications pour fournir l’ID et le secret de client, que vous collerez ensuite dans Snowflake.

Dans Snowflake

  1. Copiez l’URL de redirection. Vous en aurez besoin à la section suivante.

  2. Ouvrez un nouvel onglet dans votre navigateur (sans fermer le précédent) et suivez les étapes à la section suivante.

Dans ServiceNow®

  1. Connectez-vous à votre instance de développeur ServiceNow®.

  2. Sur la page d’accueil, sélectionnez All et recherchez Application Registry.

  3. Sélectionnez New dans le coin supérieur droit de la fenêtre.

  4. Sélectionnez Create an OAuth API endpoint for external clients.

  5. Donnez un nom au point de terminaison, par exemple, Snowflake_connector. Laissez le secret de client vide, car la valeur sera automatiquement renseignée ultérieurement dans la procédure.

  6. Collez l’URL de redirection générée côté Snowflake.

  7. Sélectionnez Submit. La fenêtre se ferme.

  8. Sélectionnez le registre que vous venez de créer pour le rouvrir. Notez que l”ID de client et le secret de client sont générés automatiquement.

    Ne fermez pas l’onglet de navigateur ServiceNow® et conservez l”ID de client et le secret de client en lieu sûr, car vous en aurez besoin ultérieurement.

    Revenez à l’onglet de configuration de Snowflake.

Configuration du connecteur

  1. Sélectionnez Start configuration. Cet écran Configurer apparaît. Par défaut, les champs sont définis sur les noms des objets créés lors de la configuration du connecteur. Vous pouvez également utiliser des objets existants. L’entrepôt virtuel sélectionné sera utilisé par le connecteur pour l’ingestion de données en arrière-plan.

  2. Voir Configuration du Snowflake Connector for ServiceNow®V2 pour plus d’informations.

  3. Sélectionnez Configure.

Notez que le processus de configuration peut prendre quelques minutes.

Note

Cette étape a permis de créer un entrepôt de grande taille dont la suspension automatique est fixée à dix minutes. Si vous sélectionnez une actualisation toutes les heures, l’entrepôt de grande taille (8 crédits/heure) se réveillera pendant au moins 10 minutes toutes les heures. Pour les besoins de ce tutoriel, cela n’est pas nécessaire. Accédez à Admin -> Warehouses -> SERVICENOW_WAREHOUSE -> … > Edit, remplacez cet entrepôt par un entrepôt XSMALL et définissez le délai d’expiration automatique sur une minute. Dans un cas d’utilisation réel, il est souvent nécessaire de disposer d’un entrepôt de grande taille.

Note

Vous devez attacher un moniteur de ressources à SERVICENOW_WAREHOUSE. Pour attacher un moniteur de ressources, accédez à Admin » Resource Monitors et sélectionnez Resource Monitor, puis créez un moniteur de ressources pour l’entrepôt.

Configurer le « handshake » OAuth2 de Snowflake vers ServiceNow®

  1. Sélectionnez OAuth2 comme méthode d’authentification.

  2. Renseignez les détails de l’instance ServiceNow®. Il s’agit de la première partie de l’URL ServiceNow® de votre compte ServiceNow®, sans le protocole https://* et la partie service-now.com de fin.

  3. Collez le Client id et le Client secret de ServiceNow® dans l’assistant Snowflake.

  4. Sélectionnez Connect. Votre compte ServiceNow® apparaît et demande à se connecter à Snowflake.

  5. Sélectionnez Allow. La connexion est établie entre les deux systèmes.

Pour vérifier la connexion, sélectionnez les trois points […] et View Details. En haut de la fenêtre contextuelle, vous verrez la date ServiceNow authentifiée.

Note

Si vous rencontrez des problèmes, il se peut que ce soit parce que le secret de client n’a pas été copié. Déverrouillez le champ de mot de passe et copiez-collez le texte.

Configurer la synchronisation des suppressions

Si vous souhaitez que non seulement les insertions et les mises à jour, mais aussi les suppressions soient synchronisées avec Snowflake, vous devez indiquer le nom de la table de journal. Par défaut, ServiceNow® utilise la table sys_audit_delete pour stocker les informations relatives aux enregistrements supprimés ; n’hésitez donc pas à indiquer ce nom. Si les suppressions ne vous intéressent pas, vous pouvez laisser ce champ vide.

Sélectionnez Validate pour vérifier si le connecteur est capable de se connecter au système source et s’il a accès à toutes les tables requises. Le processus peut prendre quelques minutes. Une fois terminé, sélectionnez Define data to sync pour sélectionner des tables pour l’ingestion.

Sélectionner des tables ServiceNow®

Note

Notez les points suivants :

  • Le connecteur ne peut uniquement ingérer que des tables comportant des colonnes sys_id.

  • Les vues ServiceNow® ne sont pas prises en charge. Au lieu d’ingérer ces vues, vous devriez synchroniser toutes les tables pour la vue sous-jacente et joindre les tables synchronisées dans Snowflake.

  • Les mises à jour incrémentielles ne se produisent que pour les tables comportant des colonnes sys_updated_on ou sys_created_on.

  • Pour les tables qui n’ont pas de colonnes sys_updated_on ou sys_created_on , le connecteur utilise le mode truncate and load. Dans ce mode, la table est toujours ingérée en utilisant l’approche du chargement initial, et les nouvelles données ingérées remplacent les anciennes.

  1. Dans la fenêtre Snowflake Connector for ServiceNow, dans la barre supérieure, sélectionnez Data Sync.

  2. Pour pouvoir exécuter notre requête test ultérieurement, nous devons ingérer quelques tables. Dans la fenêtre de recherche, ouvrez incident, cochez la case correspondante et sélectionnez un temps de synchronisation de 30 minutes.

  3. Pour sélectionner d’autres tables, effacez la recherche, indiquez le nom de table et cochez la case. Faites-le au moins pour la table task.

Note

Conseil : videz les champs de recherche, puis sélectionnez le titre Status pour trier et afficher toutes les tables que vous avez sélectionnées.

  1. Sélectionnez Start Sync. La fenêtre de sélection se ferme et vous recevez le message Syncing Data de la fenêtre principale du connecteur. Outre les tables que vous sélectionnez, trois tables système seront également chargées. Celles-ci sont nécessaires pour créer les vues sur les données brutes : sys_dictionary, sys_db_object et sys_glide_object.

Vous recevez un message indiquant que l’opération s’est effectuée correctement. Il apparaît lorsqu’au moins une table a été entièrement ingérée.

Note

N’arrêtez pas l’ingestion prématurément. Veillez à ce que les vues soient d’abord créées dans la base de données de destination.

Surveillance du connecteur

Ouvrez une feuille de calcul pour examiner le statut du connecteur. Voici quelques exemples de requêtes SQL que vous pouvez exécuter pour obtenir des informations sur la surveillance :

// Return general information about all ingestions
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats;
// Search for information about particular table ingestions
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats WHERE table_name = '<table_name>';
// Examine connector configuration
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_configuration;
// Calculate ingested data volume
SELECT
    table_name,
    sum(ingested_rows) AS row_count
FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats
GROUP BY table_name
ORDER BY table_name;
// General connector statistics
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_overview;
Copy

Configuration de l’accès aux données ingérées

Le connecteur expose le rôle d’application DATA_READER. Ce rôle dispose d’un accès en lecture sur toutes les données ingérées dans le schéma de destination. Il est automatiquement accordé au rôle fourni à l’étape Configurer du processus d’installation. Sur la capture d’écran présentée précédemment dans ce guide, il porte le nom SERVICE_NOW_RESOURCES_PROVIDER. Vous pouvez accorder un rôle d’application ou un rôle de compte supplémentaire, si nécessaire.

Interroger les données

Examinez les tables que le connecteur a créées sous le schéma de destination de la base de données de destination. Pour chaque table de ServiceNow® configurée pour la synchronisation, le connecteur crée la table et les vues suivantes :

  • Une table portant le même nom qui contient les données sous forme brute, où chaque enregistrement est contenu dans une seule colonne VARIANT.

  • Une vue nommée table_name__view qui contient les données sous forme aplatie, la vue contenant une colonne pour chaque colonne de la table d’origine et une ligne pour chaque enregistrement présent dans la table d’origine.

Note

Après le démarrage du connecteur, la création des vues peut prendre un certain temps. La création des vues repose sur les données des tables ServiceNow® sys_db_object, sys_dictionary et sys_glide_object. Le connecteur charge les métadonnées de ces tables ServiceNow® après que vous avez activé la synchronisation d’une table. Le chargement de ces métadonnées par le connecteur peut prendre un certain temps. N’arrêtez pas l’entrepôt pendant la création des vues.

  • Vue nommée table_name__view_with_deleted qui contient les mêmes données que table_name__view ainsi que les lignes des enregistrements qui ont été supprimés dans ServiceNow®.

  • Table table_name__event_log qui contient l’historique des modifications récupérées par le connecteur auprès de ServiceNow®.

Pour lancer des requêtes à partir de données brutes, voir Accès aux données brutes. Pour interroger les vues (recommandé), voir Accès aux données aplaties.

Requête visant à identifier le nombre d’incidents déclenchés par mois et par priorité

Voici une requête test permettant d’identifier le nombre d’incidents déclenchés par mois et par priorité. D’autres exemples de requête sont fournis sur la page Snowflake Connector for ServiceNow® dans le Marketplace.

USE ROLE SERVICE_NOW_RESOURCES_PROVIDER;
USE DATABASE SERVICENOW_DEST_DB;
USE SCHEMA DEST_SCHEMA;
WITH T1 AS (
    SELECT
    DISTINCT
        T.NUMBER AS TICKET_NUMBER,
        T.SHORT_DESCRIPTION,
        T.DESCRIPTION,
        T.PRIORITY,
        T.SYS_CREATED_ON AS CREATED_ON,
        T.SYS_UPDATED_ON AS UPDATED_ON,
        T.CLOSED_AT
    FROM TASK__VIEW T
    LEFT JOIN INCIDENT__VIEW I
        ON I.SYS_ID = T.SYS_ID -- ADDITIONAL INCIDENT DETAIL
   WHERE I.SYS_ID IS NOT NULL -- THIS CONDITION HELPS KEEP JUST THE INCIDENT TICKETS
)
SELECT
 YEAR(CREATED_ON) AS YEAR_CREATED,
 MONTH(CREATED_ON) AS MONTH_CREATED,
 PRIORITY,
 COUNT(DISTINCT TICKET_NUMBER) AS NUM_INCIDENTS
FROM T1
GROUP BY
    YEAR_CREATED,
    MONTH_CREATED,
    PRIORITY
ORDER BY
    YEAR_CREATED,
    MONTH_CREATED,
    PRIORITY
;
Copy

Octroi de l’accès au connecteur

Le connecteur expose deux rôles d’application en plus de celui utilisé pour accéder aux données de la base de données de destination :

  • Le rôle VIEWER, qui dispose d’un accès en lecture seule sur la configuration et l’état du connecteur

  • Le rôle ADMIN, qui peut modifier la configuration du connecteur et activer/désactiver l’ingestion

Pour surveiller les erreurs, effectuer des statistiques et examiner les statistiques du connecteur et les tables activées, vous pouvez configurer un rôle de surveillance ServiceNow® qui autorise l’accès aux vues et aux procédures en lecture seule dans la base de données du connecteur.

Par exemple, exécutez ce qui suit dans une feuille de calcul (et utilisez ensuite le rôle) :

USE ROLE accountadmin;
CREATE ROLE IF NOT EXISTS servicenow_monitor_role;
GRANT APPLICATION ROLE SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.viewer TO ROLE servicenow_monitor_role;
GRANT USAGE ON WAREHOUSE SERVICENOW_WAREHOUSE TO ROLE servicenow_monitor_role;
Copy

Arrêter l’ingestion

Au cours de ce tutoriel, nous nous contentons d’ingérer les données ; il est donc logique d’arrêter l’ingestion après ce chargement initial. Cependant, dans un environnement de production, vous n’arrêterez pas le connecteur.

Note

Si vous n’arrêtez pas le connecteur, il réveillera l’entrepôt virtuel à l’intervalle de temps spécifié et consommera des crédits.

  1. Dans Snowsight, sélectionnez la vignette Snowflake Connector for ServiceNow.

  2. Dans la fenêtre Snowflake Connector for ServiceNow, sélectionnez Pause Connector.

Désinstaller le connecteur (mais pas les données)

Si vous avez terminé le tutoriel ou si, pour une raison quelconque, vous n’avez plus besoin du connecteur, vous pouvez facilement le désinstaller via le Marketplace Snowflake.

  1. Sélectionnez Produits de données, puis Applications.

  2. Sélectionnez l’icône des trois points dans l’élément de la liste représentant l’application du connecteur.

  3. Sélectionnez Désinstaller.

  4. Décidez si vous souhaitez supprimer les objets appartenant à l’application (tables et vues avec des données ingérées dans le schéma de destination) ou en transférer la propriété à un autre rôle.

  5. Sélectionnez Désinstaller.

Conclusion et ressources

Félicitations ! Vous avez correctement installé et configuré Snowflake Connector for ServiceNow®, ingéré des données et exécuté une requête pour recueillir des informations sur les incidents et la priorité.

Ce que vous avez appris

  • Comment configurer Snowflake Connector for ServiceNow®.

  • Comment ingérer des données ServiceNow® dans Snowflake.

  • Comment arrêter le connecteur pour éviter des coûts inutiles dans un environnement de développement.