Exécuter et planifier des notebooks dans Workspaces

Planification des notebooks dans Workspaces

Lors du déploiement de notebooks en production, Snowflake fournit des fonctionnalités natives pour gérer le déploiement, l’orchestration et la surveillance. Vous développez et itérez sur des notebooks de manière interactive dans les espaces de travail au sein de Snowsight. La planification d’un notebook déploie son contenu dans un objet de production appelé objet de projet de notebook (NPO), qui encapsule le contenu de l’espace de travail (par exemple, les fichiers .ipynb, les scripts Python et les fichiers SQL). Les NPOs prennent en charge les déploiements versionnés et sont des objets de niveau schéma (par exemple, db_name.schema_name.npo_name).

Après le déploiement, vous pouvez orchestrer l’exécution du notebook à l’aide des tâches Snowflake (qui exécutent le code du notebook de manière verticale à l’aide d’un environnement d’exécution cohérent et d’un ensemble de dépendances) ou à l’aide de n’importe quel outil d’orchestration tiers. Snowflake capture les données télémétriques d’exécution que vous pouvez surveiller dans Snowsight ou interroger par programmation via une table d’événements. Pour plus d’informations, voir Observabilité et journalisation pour les notebooks dans les espaces de travail.

Objets de projet de notebook (NPOs)

Un NPO est un objet de niveau schéma qui agit comme une « unité » prête pour la production dans votre pipeline. Un projet de notebook est lié à un espace de travail ou à une zone de préparation, et tous les fichiers de l’espace de travail sont copiés. Les NPOs sont exécutés de manière non interactive et peuvent être intégrés dans une tâche pour la planification.

  • Placement : les NPOs existent dans un schéma spécifique à l’intérieur d’une base de données (database_name.schema_name.npo_name).

  • Encapsulation : lorsque vous planifiez un notebook, le NPO capture l’intégralité du répertoire de l’espace de travail pour s’assurer que toutes les dépendances sont disponibles lors de l’exécution.

  • Exécution : vous exécutez un NPO en spécifiant un fichier .ipynb principal (par exemple, en utilisant le paramètre MAIN_FILE). Le notebook principal peut appeler des notebooks supplémentaires à l’aide de %run.

  • Planification : vous pouvez créer plusieurs objets tâches qui exécutent le même NPO, permettant plusieurs planifications pour le même objet de projet de notebook.

Découverte des NPOs

Les NPOs sont des objets de base de données standard. Vous pouvez donc utiliser des commandes de métadonnées pour auditer ou nettoyer les tâches planifiées.

Portée

Commande

Contexte actuel

SHOW NOTEBOOK PROJECTS ;

Niveau base de données

SHOW NOTEBOOK PROJECTS IN DATABASE <database_name> ;

Niveau schéma

SHOW NOTEBOOK PROJECTS IN SCHEMA <database_name>.<schema_name> ;

Nom du compte

SHOW NOTEBOOK PROJECTS IN ACCOUNT ;

Autorisations et partage pour les NPOs

Pour exécuter ou gérer un NPO, un rôle doit disposer des privilèges suivants :

  • Emplacement : USAGE ou OWNERSHIP sur la base de données et le schéma contenant le NPO.

  • Accès au NPO : USAGE ou OWNERSHIP sur le NPO concerné.

  • Compute: USAGE and MONITOR on the warehouse, and USAGE on the compute pool (for Container Runtime).

  • Planification : le privilège EXECUTE TASK global au niveau du compte est requis si le NPO est déclenché par une tâche.

  • Intégrations d’accès externes : USAGE ou tout EAIs utilisé par le notebook.

  • Tâches : quand le NPO est planifié via une tâche, le rôle du propriétaire de la tâche doit se voir accorder le privilège USAGE sur tous les objets requis (tels que les NPOs, les entrepôts ou les bases de données). Le rôle du propriétaire de la tâche doit également disposer de privilèges pour exécuter les commandes USE DATABASE et USE SCHEMA si le notebook définit son contexte d’exécution de manière programmatique.

Note

Les NPOs utilisent les droits de l’appelant, où l’appelant est l’utilisateur (et non le rôle). Lorsque vous exécutez EXECUTE NOTEBOOK PROJECT directement dans Snowsight, l’exécution utilise l’identité de l’utilisateur appelant plutôt que le rôle actif dans la session Snowsight. Le notebook s’exécute dans sa propre session dédiée (distincte de la session Snowsight), avec le rôle par défaut de l’utilisateur comme rôle principal et tous les rôles secondaires activés. Cela signifie que le notebook peut s’exécuter avec tous les privilèges accordés aux rôles de l’utilisateur.

Utilisation d’un NPO pour planifier un notebook

Il existe actuellement deux scénarios pris en charge pour le déploiement et la planification des notebooks. Dans les deux scénarios, les notebooks doivent être empaquetés dans le NPO. Le scénario A correspond à la planification des notebooks à partir d’un espace de travail privé. Le scénario B intègre GitHub Actions (ou autre système CI/CD) pour automatiser la création de NPOs depuis une zone de préparation interne ou temporaire, gère leur cycle de vie grâce à des mises à jour des versions et orchestre leur exécution à l’aide de tâches Snowflake.

Scénario

Type d’espace de travail

Méthode de planification

A : Développement individuel

Privé

Pris en charge. Développez dans votre espace de travail privé. Créez des objets de projet de notebook (NPO) et planifiez des tâches.

B : Production (CI/CD)

Intégré à Git

Les fichiers de notebook sont déployés vers une zone de préparation interne ou temporaire depuis GitHub à l’aide de GitHub Actions (ou autre outils CI/CD) et un NPO est créé/mis à jour à partir de cette zone de préparation. La tâche est exécutée sur le NPO.

Pour des workflows détaillés pour chaque scénario, voir Planification de workflows par scénario.

Voir les exécutions de notebook planifiées

Vous pouvez voir les tâches planifiées à trois endroits :

Depuis le notebook

Pour voir les exécutions planifiées ou interagir avec elles, vous devez utiliser un rôle ayant accès à la base de données et au schéma dans lesquels la planification et les objets de projet ont été créés.

  1. Dans le menu de navigation, sélectionnez Projects » Workspaces.

  2. Ouvrez un notebook planifié.

  3. En haut de l’éditeur de notebooks, sélectionnez Scheduled runs Icône d’exécutions planifiées. Une fenêtre affiche les informations suivantes :

  • Toutes les exécutions planifiées pour ce notebook.

  • La prochaine heure d’exécution planifiée.

  • Le statut des exécutions précédentes. Survolez un indicateur de statut pour voir des détails tels que l’ID de la requête, dernière heure d’exécution, la durée et le statut.

Depuis le menu Actions

Depuis l’explorateur de bases de données

Pour voir l’historique d’exécution de tout notebook planifié (y compris ceux déployés via CI/CD) :

  1. Dans le menu de navigation, sélectionnez Catalog » Database Explorer.

  2. Sélectionnez la base de données et le schéma qui contiennent l’objet de projet de notebook (NPO).

  3. Sélectionnez NPO.

  4. Sélectionnez Run history.

  5. Sélectionnez une exécution pour voir la sortie du notebook de cette exécution, ainsi que les journaux et les métriques (si disponibles). Pour plus d’informations, voir Observabilité et journalisation pour les notebooks dans les espaces de travail.

Note

Pour voir l’historique des exécutions de notebooks déclenchées par Airflow, connectez-vous à Snowsight en utilisant le même utilisateur que celui qui exécute Airflow.

Gérer les tâches planifiées

À partir de la fenêtre contextuelle Scheduled runs, vous pouvez gérer vos tâches planifiées en sélectionnant les points de suspension (plus d’actions) sf-options-button à côté d’une tâche planifiée :

  • Exécuter maintenant : déclenche une exécution immédiate de la tâche planifiée.

  • Mettre la planification en pause : arrête temporairement l’exécution automatique de la planification. La tâche reste configurée mais ne s’exécutera pas avant d’être reprise.

  • Supprimer : supprime définitivement la tâche planifiée. Vous pouvez créer une nouvelle planification avec différents paramètres (par exemple, un rôle différent ou un emplacement différent de la base de données) après avoir supprimé la planification existante.

Déployer des mises à jour des tâches de notebook planifiées

Après avoir modifié un notebook, vous devez déployer vos modifications avant que les exécutions planifiées n’utilisent la version mise à jour. Le déploiement garantit la reproductibilité et empêche les tâches planifiées d’exécuter du code différent de ce qui a été déployé en dernier lieu. S’il s’agit de la première tâche du notebook et qu’un notebook présente des modifications nécessitant un déploiement, l’icône de planification (calendaire) affiche un indicateur d’horloge. Si une planification existe déjà, l’icône est un calendrier avec une horloge.

Après avoir modifié le code ou les cellules, l’icône indique qu’il y a des changements non déployés.

  • Sélectionnez Deploy Changes.

    Snowflake met ensuite à jour l’objet de projet de notebook associé, et toutes les tâches planifiées pour ce notebook utiliseront la version nouvellement déployée pour la prochaine exécution.

Trouver un objet de projet de notebook (NPO) dans l’explorateur d’objets

Chaque notebook planifié crée automatiquement un NPO qui stocke son code déployé, l’historique de son exécution et ses artefacts. Vous pouvez localiser ces objets dans l’explorateur d’objets dans Snowsight.

Pour localiser un NPO dans Snowsight, procédez comme suit :

  1. Dans le menu de navigation, sélectionnez Catalog » Database Explorer.

  2. Accédez à Database » Schema » Notebook Project Objects pour voir tous les NPOs de ce schéma.

Sinon, vous pouvez :

  1. Ouvrez le notebook concerné.

  2. En haut de l’éditeur de notebooks, sélectionnez Scheduled runs Icône d’exécutions planifiées.

  3. Sélectionnez Open run history pour ouvrir le NPO associé.

Voir l’historique d’exécution du notebook

Cette section décrit comment afficher les détails de l’exécution et dépanner les exécutions de notebook après la création d’une planification. Si une étape échoue pendant l’exécution, Snowflake arrête l’exécution pour éviter des résultats en aval partiels ou incohérents.

Pour voir l’historique de l’exécution, procédez comme suit :

  1. Dans le menu de navigation, sélectionnez Projects » Workspaces.

  2. Ouvrez le notebook dont vous souhaitez consulter l’historique d’exécution.

  3. En haut de l’éditeur de notebooks, sélectionnez Scheduled runs Icône d’exécutions planifiées.

  4. Sélectionnez View run history dans le menu déroulant.

Run History affiche les informations suivantes sur l’objet de projet de notebook :

  • Résultats : afficher le notebook et la sortie des exécutions précédentes.

  • Tâches : voir quelles tâches ont exécuté le NPO.

  • Fichier source : afficher le fichier de notebook qui a été exécuté.

  • Journaux et métriques : afficher les journaux d’exécution et les métriques de performance (assurez-vous d’avoir activé la journalisation et les tables d’événements). Pour plus d’informations, voir Observabilité et journalisation pour les notebooks dans les espaces de travail.

  • Détails de l’exécution : heures de début et de fin, état de l’exécution et détails des erreurs.

Planifier un notebook à l’aide des tâches

  1. Dans le menu de navigation, sélectionnez Projects » Workspaces.

  2. Exécutez la commande suivante dans un fichier/une feuille de calcul SQL :

-- Execute a notebook project using a task
CREATE OR REPLACE TASK <database_name>.<schema_name>.<name>
  WAREHOUSE = <string>
  SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles'
  -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone>
AS
  -- Execute a notebook stored within a notebook project.
  EXECUTE NOTEBOOK PROJECT "<database_name>"."<schema_name>"."<project_name>"
    MAIN_FILE = 'notebook.ipynb'  -- Path to the notebook file
    COMPUTE_POOL = '<compute_pool_name>'
    RUNTIME = '<runtime_version>'  -- e.g. V2.2-CPU-PY3.11
    QUERY_WAREHOUSE = '<wh_name>'
    ARGUMENTS = '<string>'  -- Can pass a single string parsed in the notebook code
    REQUIREMENTS_FILE = '<path/to/requirements.txt>'  -- Pre-installs dependencies before the notebook runs
    EXTERNAL_ACCESS_INTEGRATIONS = ('integration_name');  -- e.g. ('http_eai', 's3_eai')
Copy

Après avoir créé cette tâche, exécutez la commande suivante pour activer la planification :

ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;
Copy

Si une tâche échoue parce que votre rôle actif ne dispose pas des privilèges nécessaires, Snowsight affiche les messages d’erreur pertinents afin que vous puissiez traiter les autorisations manquantes.

Pour la syntaxe, les paramètres et les exemples, voir EXECUTE NOTEBOOK PROJECT. Pour plus d’informations sur la transmission de paramètres aux notebooks planifiés, voir Exécution de notebooks avec des paramètres.

Note

Pour en savoir plus sur l’utilisation du crédit, le comportement en matière de délai d’expiration et la gestion des services de notebook, voir Configuration du calcul et Délai d’attente.