Tutoriel : Exemple de connecteur Java Snowflake Native SDK for Connectors

Introduction

Bienvenue dans notre tutoriel sur un exemple de connecteur conçu à l’aide de Snowflake Native SDK for Connectors. Ce guide vous montrera comment concevoir, déployer, installer et configurer un exemple de connecteur.

L’application proposée à titre d’exemple permet d’ingérer les données de GitHub en se connectant à l’API GitHub pour extraire des informations sur les problèmes à partir des référentiels spécifiés.

Dans ce tutoriel, vous apprendrez à :

  • Concevoir un exemple de connecteur à partir de sources

  • Déployer un nouveau paquet d’application et une nouvelle version

  • Installer une nouvelle instance d’application

  • Configurer l’instance du connecteur pour ingérer des données

Conditions préalables

Avant de commencer, assurez-vous que vous remplissez les conditions suivantes :

  • Connaissance de base de Java

  • Connaissances de base de Snowflake Native Apps

  • Connaissance de base de l’UIStreamlit

  • Accès à un compte Snowflake avec un rôle ACCOUNTADMIN

  • Compte GitHub, qui permet de créer des applications GitHub

  • MacOS ou Linux pour créer le projet et exécuter les scripts de déploiement

Préparer votre environnement local

Avant de poursuivre, vous devez vous assurer que tous les logiciels nécessaires sont installés sur votre machine et cloner le référentiel du connecteur d’exemple.

Installation de Java

Snowflake Native SDK for Connectors exige la version 11 ou supérieure de Java LTS (Long-Term Support). Si la version minimale requise de Java n’est pas installée sur votre machine, vous devez installer soit Oracle Java, soit OpenJDK.

Oracle Java

La dernière version de LTS de JDK peut être téléchargée et utilisée gratuitement sous Oracle NFTC. Pour les instructions de téléchargement et d’installation, consultez la page Oracle.

OpenJDK

OpenJDK est une implémentation open-source de Java. Pour le téléchargement et les instructions d’installation, consultez openjdk.org et jdk.java.net.

Vous pouvez également utiliser une version tierce OpenJDK, telle que Eclipse Temurin ou Amazon Corretto.

Clonage du référentiel

Clonez le référentiel connectors-native-sdk sur votre machine.

Configuration de la CLI Snowflake

L’outil de la CLI Snowflake est une exigence pour concevoir, déployer et installer le connecteur. Si vous n’avez pas la CLI Snowflake sur votre machine - installez-la selon les instructions disponibles ici.

Une fois l’outil installé, vous devez configurer une connexion à Snowflake dans votre fichier de configuration.

Si aucune connexion n’est configurée, créez-en une nouvelle nommée native_sdk_connection. Vous trouverez un exemple de connexion dans le fichier deployment/snowflake.toml.

Si vous avez déjà configuré une connexion et que vous souhaitez l’utiliser avec le connecteur - utilisez son nom au lieu de native_sdk_connection chaque fois que cette connexion est utilisée dans ce tutoriel.

Structure du projet

Le projet Snowflake Native SDK for Connectors se compose de deux éléments principaux.

Connectors Native SDK Java

Le répertoire connectors-native-sdk-java contient tout le code Java de Snowflake Native SDK for Connectors, ainsi que des tests d’unité et d’intégration pour les composants SDK. En raison de la nature des Native Apps à l’intérieur de Snowflake, cela signifie non seulement du code Java, mais aussi du code SQL, qui est nécessaire pour créer une application fonctionnelle. Les définitions des objets de la base de données se trouvent dans le répertoire src/main/resources. Ces fichiers sont utilisés lors de la création d’une application pour personnaliser les objets qui seront disponibles dans l’application. Dans l’exemple du connecteur, nous utilisons le fichier all.sql, qui crée des objets pour toutes les fonctions disponibles. Ce fichier sera exécuté au cours du processus d’installation de l’instance d’application.

Connectors Native SDK Test Java

Le répertoire connectors-native-sdk-test-java contient le code source d’une bibliothèque d’aide utilisée dans les tests unitaires, par exemple des objets utilisés pour simuler des composants particuliers, des assertions personnalisées, etc. Ces fichiers ne font pas partie de l’application du connecteur.

Exemple de connecteur Java GitHub

L’exemple de connecteur proprement dit se trouve dans le répertoire examples/connectors-native-sdk-example-java-github-connector. Le répertoire app/ contient tous les fichiers nécessaires à l’exécution de la Native App :

  • Le répertoire app/streamlit/ contient les fichiers sources nécessaires à l’exécution de la version Streamlit UI du connecteur.

  • Le fichier setup.sql est exécuté lors de l’installation de l’application et est chargé de créer les objets nécessaires à la base de données. Ce fichier exécutera le fichier all.sql mentionné plus haut, ainsi que du code SQL personnalisé.

  • Le fichier manifest.yml est le manifeste de la Native App. Il est exigé pour créer un paquet d’application, puis l’instance d’application elle-même. Ce fichier spécifie les propriétés de l’application, ainsi que les autorisations nécessaires à l’application.

En outre, le répertoire examples/connectors-native-sdk-example-java-github-connector contient le sous-répertoire src/, qui contient la logique du connecteur personnalisé, telle que l’implémentation des classes requises et les personnalisations des composants par défaut de SDK.

Modèle du Connectors Native SDK

Un projet Java Gradle modèle qui utilise Snowflake Native SDK for Connectors comme dépendance pour vous aider à créer rapidement un nouveau connecteur. Pour en savoir plus, consultez Tutoriel : Modèle de connecteur Java Snowflake Native SDK for Connectors.

Conception, déploiement et installation

Les sections suivantes vous montreront comment créer, déployer et installer l’exemple de connecteur.

Créer le connecteur

La conception d’un connecteur créé à l’aide de Snowflake Native SDK for Connectors est un peu différente de celle d’une application Java classique. Il y a d’autres choses à faire que de concevoir les archives .jar à partir des sources. La conception de l’application comprend les étapes suivantes :

  1. Copier des composants internes personnalisés dans le répertoire de conception

  2. Copier des composants SDK dans le répertoire de conception

Copier des composants internes

Cette étape permet de créer le fichier .jar du connecteur et de le copier (avec les fichiers UI, manifest et setup) dans le répertoire sf_build.

Pour exécuter cette étape, exécutez la commande : ./gradlew copyInternalComponents.

Copier les composants SDK

Cette étape copie le fichier .jar SDK (ajouté en tant que dépendance au module Gradle du connecteur) dans le répertoire sf_build et extrait les fichiers .sql regroupés de l’archive .jar.

Ces fichiers .sql permettent de personnaliser les objets fournis qui seront créés lors de l’installation de l’application. Pour les premiers utilisateurs, la personnalisation n’est pas recommandée, car l’omission d’objets peut entraîner l’échec de certaines fonctionnalités si elle n’est pas effectuée correctement. L’application de l’exemple de connecteur utilise le fichier all.sql, qui crée tous les objets SDK recommandés.

Pour exécuter cette étape, exécutez la commande : ./gradlew copySdkComponents.

Déployer le connecteur

Pour déployer une Native App, un paquet d’application doit être créé dans Snowflake. Ensuite, tous les fichiers du répertoire sf_build doivent être téléchargés vers Snowflake.

Veuillez noter qu’à des fins de développement, la création de versions est facultative. Une instance d’application peut être créée directement à partir de fichiers en zone de préparation. Cette approche vous permet de voir les modifications apportées à la plupart des fichiers du connecteur sans avoir à recréer la version et l’instance de l’application.

Les opérations suivantes seront effectuées :

  1. Créer un nouveau paquet d’application, s’il n’existe pas déjà

  2. Créer un schéma et une zone de préparation des fichiers à l’intérieur du paquet

  3. Télécharger les fichiers du répertoire sf_build vers la zone de préparation (cette étape peut prendre un certain temps)

Pour déployer le connecteur, exécutez la commande : snow app deploy --connection=native_sdk_connection.

Pour plus d’informations sur la commande snow app deploy, consultez snow app deploy.

Le paquet d’application créé sera désormais visible dans l’onglet App packages, dans la catégorie Data products, dans le compte Snowflake UI de votre compte.

Vue des paquets d'applications

Installer le connecteur

L’installation de l’application est la dernière étape du processus. Il crée une application à partir du paquet d’application créé précédemment.

Pour installer le connecteur, exécutez la commande : snow app run --connection=native_sdk_connection.

Pour plus d’informations sur la commande snow app run, consultez snow app run.

L’application installée sera désormais visible dans l’onglet Installed apps, dans la catégorie Data products, dans le compte Snowflake UI de votre compte.

Vue des applications installées

Mettre à jour les fichiers des connecteurs

Si, à un moment donné, vous souhaitez modifier l’un des fichiers du connecteur, vous pouvez facilement télécharger les fichiers modifiés dans la zone de préparation du paquet d’application. La commande de téléchargement dépend des fichiers qui ont été mis à jour.

Avant d’exécuter les commandes de mise à jour, vous devez copier les nouveaux fichiers de votre connecteur dans le répertoire sf_build en exécutant la commande : ./gradlew copyInternalComponents

Fichiers UI .py ou fichiers .java du connecteur

Utilisez la commande snow app deploy --connection=native_sdk_connection, l’instance actuelle de l’application utilisera les nouveaux fichiers sans réinstallation.

Fichiers setup.sql ou manifest.yml

Utilisez la commande snow app run --connection=native_sdk_connection, l’instance de l’application en cours sera réinstallée après le téléchargement des nouveaux fichiers dans la zone de préparation.

Débit du connecteur

Avant de passer à la configuration du connecteur et à l’ingestion des données, il convient de jeter un coup d’œil rapide sur le fonctionnement du connecteur. Vous pouvez voir ci-dessous toutes les étapes qui seront réalisées dans les prochaines étapes de ce tutoriel. Le point de départ consistera à remplir les conditions préalables et à parcourir l’assistant.

La zone de préparation de l’assistant du connecteur guide les utilisateurs à travers toutes les configurations requises par le connecteur. La zone de préparation d’utilisation quotidienne permet à l’utilisateur de voir les statistiques, de configurer les référentiels pour l’ingestion et de mettre en pause/reprendre le connecteur.

Aperçu du débit du connecteur

Assistant de configuration

Après l’ouverture de l’application, la page de l’assistant UI s’ouvre. Le connecteur a besoin de certaines informations fournies par l’utilisateur avant de pouvoir commencer à ingérer des données. L’assistant vous guidera à travers toutes les étapes requises dans l’application elle-même, mais aussi sur l’ensemble du compte Snowflake et parfois même sur le système externe qui sera la source des données ingérées, dans ce cas GitHub. Une fois toutes ces étapes terminées - le connecteur sera prêt à commencer à ingérer les données.

Conditions préalables

La première étape de l’assistant concerne les conditions préalables. Cette étape vous fournira une liste des éléments à préparer avant de configurer le connecteur. Il n’est pas nécessaire de remplir les conditions préalables, mais il est recommandé de le faire pour faciliter la configuration ultérieure.

Dans le cas de l’exemple du connecteur GitHub, deux choses doivent être prises en compte avant d’aller plus loin :

  1. Préparation d’un compte GitHub

  2. Confirmation de l’accès aux référentiels GitHub que vous souhaitez ingérer

Conditions préalables

Configuration du connecteur

L’étape suivante de l’assistant est la configuration du connecteur. Cette étape permet à l’utilisateur de :

  • Garantir les privilèges de l’application, qui sont demandés à l’aide de l”autorisation Native Apps SDK

  • Choisir un entrepôt qui sera référencé lors de la planification des tâches d’ingestion

  • Choisir la base de données et le schéma de destination pour les données qui seront ingérées

Privilèges

L’opération de l’application nécessite deux autorisations au niveau du compte : CREATE DATABASE et EXECUTE TASK.

Le premier privilège est nécessaire pour créer une base de données de destination pour les données ingérées. Cette base de données doit être créée en dehors de l’application, de manière à ce que les données ingérées restent intactes en cas de désinstallation de l’application. Cependant, cet exemple ne prend pas en charge cette fonction, une nouvelle base de données est toujours créée.

Le second privilège est nécessaire pour planifier les tâches périodiques qui récupèrent les données sur GitHub et les enregistrent dans la base de données de destination.

Ces privilèges peuvent être accordés via l’onglet sécurité ou en appuyant sur le bouton Grant privileges dans l’écran de configuration du connecteur. Ce dernier fera apparaître une fenêtre contextuelle sur l’écran.

Privilèges

Référence de l’entrepôt

Le connecteur nécessite un entrepôt pour exécuter et planifier les tâches d’ingestion. L’application utilisera l’entrepôt par l’intermédiaire d’une référence. La référence de l’entrepôt est définie dans le fichier manifest.yml :

references:
  - WAREHOUSE_REFERENCE:
      label: "Warehouse used for ingestion"
      description: "Warehouse which will be used to schedule ingestion tasks"
      privileges: [USAGE]
      object_type: WAREHOUSE
      register_callback: PUBLIC.REGISTER_REFERENCE
Copy

La référence peut être définie en utilisant l’onglet sécurité, de la même manière que pour les privilèges ci-dessus, ou en appuyant sur le bouton Choose warehouse.

Référence de l'entrepôt

Base de données et schéma de destination

Comme indiqué précédemment, le connecteur a besoin d’une base de données pour stocker les données ingérées. Cette base de données sera créée, lors d’une étape ultérieure, avec le schéma spécifié par l’utilisateur. Le nom de la base de données est laissé à l’appréciation de l’utilisateur, à condition que la base de données fournie n’existe pas déjà.

L’écran de configuration du connecteur, une fois rempli, ressemble à celui-ci :

Écran de configuration du connecteur

Configuration de connexion

L’étape suivante de l’assistant est la configuration de la connexion. Cette étape permet à l’utilisateur d’établir la connexion avec une source de données externe. Nous vous recommandons d’utiliser l’authentification OAuth2 dans la mesure du possible, au lieu d’utiliser des jetons utilisateur/mot de passe ou des jetons en texte clair.

GitHub prend en charge actuellement deux modes d’authentification OAuth2 - applications OAuth et applications GitHub. Les applications OAuth sont un peu plus faciles à paramétrer et à utiliser, mais elles n’offrent pas le même niveau de granularité dans le contrôle des autorisations. Nous recommandons l’utilisation d’une application GitHub pour cet exemple, mais si vous souhaitez utiliser une application OAuth, le connecteur fonctionnera toujours comme prévu.

Configuration d’autorisation SDK

L’authentification OAuth2 nécessite la création d’une intégration de sécurité, d’un secret et d’une intégration d’accès externe dans le compte de l’utilisateur. Notre connecteur utilise l’autorisation Native Apps SDK pour requérir la création de ces objets.

Les références pour l’intégration de l’accès externe et le secret, qui sont nécessaires au connecteur, sont définies dans le fichier manifest.yml :

references:
  - GITHUB_EAI_REFERENCE:
      label: "GitHub API access integration"
      description: "External access integration that will enable connection to the GitHub API using OAuth2"
      privileges: [USAGE]
      object_type: "EXTERNAL ACCESS INTEGRATION"
      register_callback: PUBLIC.REGISTER_REFERENCE
      configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
  - GITHUB_SECRET_REFERENCE:
      label: "GitHub API secret"
      description: "Secret that will enable connection to the GitHub API using OAuth2"
      privileges: [READ]
      object_type: SECRET
      register_callback: PUBLIC.REGISTER_REFERENCE
      configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
Copy

En outre, une procédure spéciale doit être ajoutée dans le fichier setup.sql. Elle est référencée dans la propriété configuration_callback pour chacune des références présentées ci-dessus :

CREATE OR REPLACE PROCEDURE PUBLIC.GET_REFERENCE_CONFIG(ref_name STRING)
    RETURNS STRING
    LANGUAGE SQL
    AS
        BEGIN
            CASE (ref_name)
                WHEN 'GITHUB_EAI_REFERENCE' THEN
                    RETURN OBJECT_CONSTRUCT(
                        'type', 'CONFIGURATION',
                        'payload', OBJECT_CONSTRUCT(
                            'host_ports', ARRAY_CONSTRUCT('api.github.com'),
                            'allowed_secrets', 'LIST',
                            'secret_references', ARRAY_CONSTRUCT('GITHUB_SECRET_REFERENCE')
                        )
                    )::STRING;
                WHEN 'GITHUB_SECRET_REFERENCE' THEN
                    RETURN OBJECT_CONSTRUCT(
                        'type', 'CONFIGURATION',
                        'payload', OBJECT_CONSTRUCT(
                            'type', 'OAUTH2',
                            'security_integration', OBJECT_CONSTRUCT(
                                'oauth_scopes', ARRAY_CONSTRUCT('repo'),
                                'oauth_token_endpoint', 'https://github.com/login/oauth/access_token',
                                'oauth_authorization_endpoint', 'https://github.com/login/oauth/authorize'
                            )
                        )
                    )::STRING;
                ELSE
                    RETURN '';
            END CASE;
        END;
Copy

Pour la référence d’intégration de l’accès externe, la procédure prévoit :

  • host_ports - les noms d’hôte de la source de données externe à laquelle il sera accédé lors de l’ingestion

  • secret_references - tableau de noms de références aux secrets OAuth

  • allowed_secrets - LIST qui indique à l’autorisation SDK d’utiliser les secrets spécifiés dans le champ secret_references

Pour la référence du secret, la procédure prévoit :

  • type - OAUTH2 dans le cas de notre secret

  • security_integration - les propriétés de l’intégration de sécurité créée :

    • oauth_scopes - une liste des champs d’application OAuth requis par le connecteur (si vous utilisez une application GitHub - ce champ est facultatif)

    • oauth_token_endpoint - point de terminaison à partir duquel le jeton d’actualisation et d’accès sera acquis

    • oauth_authorization_endpoint - point de terminaison auquel la requête d’autorisation sera envoyée

Configuration de l’application GitHub

L’étape suivante consiste à configurer une application GitHub dans le compte de l’utilisateur. Cette application sera utilisée pour accorder un accès limité au compte, afin que les données puissent être ingérées.

La première étape consiste à appuyer sur le bouton Request access du connecteur UI.

Demander l'accès OAuth

Le premier écran vous permet de passer en revue les points de terminaison pour lesquels la connectivité externe sera autorisée.

Vérifier les points de terminaison EAI

Après avoir appuyé sur Next - vous verrez un deuxième écran. Sélectionnez OAuth2 pour créer une intégration et un secret, et copiez l’URL de redirection fournie - elle contiendra le nom de votre organisation et la région de votre compte.

URL de redirection OAuth

Allez ensuite sur la page des paramètres de votre compte GitHub, puis dans Developer settings > GitHub Apps et appuyez sur le bouton New GitHub App :

  1. Saisissez le nom et l’URL de la page d’accueil de votre application

  2. Collez l’URL de redirection que vous avez copiée dans le champ Callback URL

  3. Assurez-vous que l’option Expire user authorization tokens est sélectionnée

  4. Assurez-vous que l’adresse Request user authorization (OAuth) during installation n’est pas sélectionnée

  5. Si vous n’en avez pas besoin - désélectionnez l’option Active dans la section Webhook

  6. Sélectionnez les autorisations nécessaires au fonctionnement du connecteur :

    1. Repository permissions > Issues avec l’accès Read-only

    2. Repository permissions > Metadata avec l’accès Read-only

  7. Si l’application ne sera utilisée que par vous, avec cet exemple de connecteur - il est préférable de sélectionner Only on this account dans la section d’accès de l’installation

Une fois l’application créée, cliquez sur l’option Install app dans la barre latérale gauche et installez l’application dans votre compte. Vous pouvez choisir les référentiels auxquels l’application (et par extension le connecteur) pourra accéder. Sans cette installation, le connecteur ne pourra accéder qu’aux référentiels publics.

Configuration de l’intégration OAuth

Après l’installation, retournez à votre application GitHub et générez un nouveau secret client. Veillez à le copier immédiatement, car il ne s’affichera plus. Collez le secret du client dans la fenêtre contextuelle de configuration OAuth de votre connecteur. Enfin, copiez l’ID client (et non l’ID de l’application) de votre application et collez-le également dans la fenêtre contextuelle de configuration OAuth de votre connecteur.

Configuration d'OAuth

Après avoir appuyé sur Connect, une fenêtre GitHub s’ouvre, vous demandant l’autorisation d’utiliser l’application sur votre compte GitHub. Après autorisation - vous serez automatiquement redirigé vers le connecteur UI. Une fois l’autorisation réussie (cela peut prendre quelques secondes pour terminer et fermer la fenêtre contextuelle), la page sera remplie avec les IDs de l’intégration de l’accès externe et des références secrètes.

Écran de configuration de la connexion

En appuyant sur le bouton Connect, vous déclencherez la procédure TEST_CONNECTION à l’intérieur du connecteur. Cette procédure tente d’accéder au point de terminaison octocat de l”APIGitHub, afin de vérifier si la connectivité externe a été configurée correctement et si le jeton d’accès OAuth a été obtenu correctement.

Lorsque le test est réussi, l’application passe à l’étape de finalisation.

Finalisation de la configuration

La finalisation est la dernière étape de l’assistant. Au cours de cette étape, il vous sera demandé de fournir une organisation et un nom de référentiel. Ce référentiel doit être accessible avec le jeton OAuth obtenu lors de l’étape de configuration de la connexion. Le référentiel fourni ne sera utilisé qu’à des fins de validation de la connexion.

Cette étape est un peu différente de la précédente, car la procédure TEST_CONNECTION vérifie uniquement si l’API GitHub est accessible et si le jeton fourni est valide.

L’étape de finalisation permet de s’assurer que le référentiel fourni par l’utilisateur est accessible avec le jeton de l’API GitHub. L’opération échouera si le jeton ne dispose pas des autorisations d’accès au référentiel. Si vous souhaitez ingérer des données provenant de référentiels privés - nous vous recommandons de finaliser la configuration en utilisant un référentiel privé, juste pour vous assurer qu’ils fonctionnent correctement.

En outre, au cours de cette étape, la base de données et le schéma spécifiés lors de la phase de configuration du connecteur seront finalement créés dans votre compte.

Finaliser l'écran de configuration

Utilisation quotidienne

Une fois l’assistant de configuration terminé avec succès, vous pouvez maintenant commencer à utiliser votre exemple de connecteur GitHub.

Les prochaines étapes vous expliqueront :

  • Comment configurer les ressources pour ingérer les données

  • Comment fonctionne le processus d’ingestion

  • Comment voir les statistiques des enregistrements ingérés

  • Comment voir les données ingérées

  • Comment mettre en pause et reprendre le connecteur

Configuration des ressources

Pour configurer les ressources, allez dans l’onglet Data Sync. Cet onglet affiche la liste des référentiels déjà configurés pour l’ingestion. Lors de la première ouverture, la liste est vide.

Pour configurer une ressource, saisissez les noms de l’organisation et du référentiel dans les champs prévus à cet effet, puis appuyez sur le bouton Queue ingestion. Par exemple :

Définir les ressources

La définition d’une nouvelle ressource sera sauvegardée et elle sera prise en charge par le planificateur en fonction de la planification globale. Il faudra un certain temps avant que les données soient ingérées et visibles dans la table réceptrice. Elles seront visibles dans la table ci-dessous :

Annonce des ressources définies

Planification et statut de l’ingestion

En haut de l’onglet Data Sync se trouve une section contenant des informations générales sur l’ingestion. Cette section permet à l’utilisateur de voir la planification globale avec laquelle les ressources configurées seront ingérées. L’étiquette située dans le coin inférieur droit indique le statut actuel de l’ingestion. Dans un premier temps, il affichera l’état NOT SYNCING, jusqu’à ce que la première ressource soit définie. Ensuite, il passe à SYNCING, et enfin, lorsqu’au moins une ressource a été ingérée avec succès, il indique la date de fin de l’ingestion.

Statut de la synchronisation

Processus d’ingestion

Le processus d’ingestion est géré à l’aide des composants Scheduler Task et Task Reactor. Le planificateur prélève les ressources définies en fonction de la planification globale et les soumet à une file d’attente sous la forme de Work Items. Ensuite, un composant de réacteur de tâche appelé Dispatcher les collecte et les répartit entre le nombre défini de travailleurs. Chaque travailleur effectue la performance d’acquisition pour chaque élément de la file d’attente qu’il prend en charge.

L’ingestion singulière d’une ressource consiste à récupérer les données à partir des points de terminaison de l’API GitHub, puis à les enregistrer dans les tables désignées de la base de données réceptrice. Dans cet exemple, toutes les données sont récupérées à chaque exécution, ce qui a pour effet d’ajouter de nouveaux enregistrements à la table et de mettre à jour les anciens. En outre, l’exécution de chaque Work Item permet de connecter des données telles que la date de début et de fin, le nombre de lignes ingérées, le statut, etc. à des tables de connecteurs internes, qui sont ensuite utilisées à des fins statistiques.

Affichage des statistiques

L’écran Home contient les statistiques des derniers cycles d’ingestion. Les données sont basées sur la vue PUBLIC.AGGREGATED_CONNECTOR_STATS. La vue regroupe le nombre de lignes ingérées en fonction de l’heure à laquelle elles ont été ingérées. Les données de cette vue peuvent être récupérées à l’aide de requêtes SELECT exécutées dans une feuille de calcul, ce qui permet également de les agréger sur une fenêtre temporelle supérieure à une heure.

Une autre vue est disponible dans la feuille de calcul - PUBLIC.CONNECTOR_STATS. Ces données vous permettent de connaître le statut, les dates de début et de fin, le nombre moyen de lignes ingérées par seconde et d’autres informations concernant l’ingestion de données.

Exemple de tableau de statistiques d’ingestion :

Statistiques d'ingestion

Vue des données ingérées

Les données ingérées ne sont pas visibles sur UI, mais peuvent être vues par des utilisateurs ayant le rôle ADMIN ou DATA_READER en effectuant des requêtes sur des tables spécifiques. Pour voir les données, vous devez vous rendre sur une feuille de calcul SQL et sélectionner la base de données de destination. La base de données de destination utilise le nom et le schéma définis lors de l’étape de configuration du connecteur. Vous pouvez SELECT les données de :

  1. La table ISSUES, elle contient les colonnes suivantes :

    • ORGANIZATION

    • REPOSITORY

    • RAW_DATA

  2. La vue ISSUES_VIEW contient les colonnes suivantes :

    • ID

    • ORGANIZATION

    • REPOSITORY

    • STATE

    • TITLE

    • CREATED_AT

    • UPDATED_AT

    • ASSIGNEE

Les données visibles dans la vue ISSUES_VIEW sont extraites de la colonne raw_data qui se trouve dans la table ISSUES. Pour consulter les données, vous pouvez utiliser l’une des requêtes suivantes :

SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES;

SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES_VIEW;
Copy

Pause et reprise

Le connecteur peut être interrompu et repris à tout moment. Pour ce faire, il suffit d’appuyer sur le bouton Pause dans l’onglet Data Sync. Lorsque la mise en pause est déclenchée, le mécanisme sous-jacent de planification et d’exécution des travaux est désactivé. Cependant, tout travail d’ingestion active se terminera avant que le connecteur ne passe effectivement à l’état PAUSED. Pour cette raison, il peut s’écouler jusqu’à deux minutes avant que le connecteur ne se mette complètement en pause.

Pour reprendre le connecteur, il suffit d’appuyer sur le bouton Resume, qui s’affichera à la place du bouton Pause. La tâche de planification reprend alors son cours et commence à mettre en file d’attente les nouveaux Work Items.

Connecteur de pause

Paramètres du connecteur

Une fois la configuration terminée, un autre onglet, appelé Settings, est disponible. Cet onglet permet à l’utilisateur de voir les configurations actuelles des connecteurs et des connexions. Les données de cet onglet sont extraites de la table de configuration sous-jacente APP_CONFIG et sont en lecture seule.

Paramètres de configuration du connecteur
Paramètres de configuration de la connexion

Résolution des problèmes

Si le connecteur rencontre des problèmes, ceux-ci seront visibles dans les logs event table, si la table est créée et paramétrée dans le compte.

Pour en savoir plus sur l’activation et l’utilisation de event table, la connexion d’événements et le partage d’événements dans les Native Apps, consultez la documentation :

Nettoyage

Une fois le tutoriel terminé, vous pouvez soit mettre le connecteur en pause comme expliqué dans la section Utilisation quotidienne, soit le supprimer complètement de votre compte à l’aide de la commande :

snow app teardown --connection=native_sdk_connection --cascade --force

L’option --cascade est nécessaire pour supprimer la base de données de destination sans en transférer la propriété au compte admin. Dans les connecteurs réels, la base de données ne doit pas être supprimée pour préserver les données ingérées. Elle doit être la propriété de l’administrateur du compte ou la propriété doit être transférée avant la désinstallation.

Si la partie nettoyage est ignorée, le connecteur de l’exemple consommera des crédits jusqu’à ce qu’il soit mis en pause ou supprimé, même si aucun dépôt n’a été configuré pour l’ingestion !

Personnalisation

Ce tutoriel vous a montré un exemple de connecteur créé à l’aide de Snowflake Native SDK for Connectors. Pour en savoir plus sur la manière de personnaliser le connecteur ou de créer votre propre connecteur, consultez la page suivante :