Planification de workflows par scénario

Cette rubrique fournit des workflows détaillés pour planifier des notebooks dans deux scénarios courants :

  • Scénario A : développement dans un espace de travail privé - planifier des notebooks directement depuis Snowsight

  • Scénario B : production (CI/CD) - déployer des notebooks à partir d’un référentiel Git à l’aide de pipelines CI/CD

Note

La planification de notebooks n’est actuellement pas prise en charge dans les espaces de travail partagés.

Scénario A : Développement dans un espace de travail privé

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

  2. Sélectionnez + Add new » Notebook pour créer un nouveau notebook, ou ouvrez un notebook existant à planifier.

    Note

    Assurez-vous d’avoir spécifié le contexte d’exécution (base de données et schéma) dans le notebook que vous planifiez. Pour plus d’informations, consultez Définir le contexte d’exécution.

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

    • S’il s’agit de la première tâche du notebook, l’icône Icône d’exécutions planifiées est un calendrier.

    • Si une planification existe déjà, l’icône Icône d’exécutions planifiées est un calendrier avec une horloge.

  4. Sélectionnez Create Schedule.

  5. Dans la boîte de dialogue Schedule a Notebook Task, fournissez les informations suivantes :

    Paramètres de base

    • Nom de la tâche : nom unique de la tâche planifiée. Le nom par défaut est {notebook-name}_task_# mais il peut être modifié si nécessaire.

    • Rôle de propriétaire : rôle Snowflake sous lequel la tâche est exécutée. Sélectionnez un rôle doté des autorisations nécessaires pour exécuter toutes les opérations effectuées par le notebook planifié. Ce rôle doit avoir des autorisations pour :

      • Lisez/écrivez les objets de base de données que le notebook utilise.

      • Accédez aux entrepôts, aux pools de calcul et aux intégrations.

      • Créez/mettez à jour les objets de tâche et de projet.

    • Emplacement : base de données et schéma dans lesquels l’objet de tâche et l’objet de projet de notebook associé seront créés. Choisissez un schéma où votre rôle dispose des privilèges CREATE TASK et USAGE. Si votre rôle ne dispose que des privilèges USAGE sur le schéma, assurez-vous qu’il dispose également du privilège CREATE NOTEBOOK PROJECT.

    • Fréquence : fréquence à laquelle le notebook doit s’exécuter. Choisissez parmi : Toutes les heures, tous les jours, toutes les semaines, tous les mois mensuel ou personnalisé (planification Cron). Toutes les heures d’exécution utilisent votre fuseau horaire local.

    Paramètres avancés (tous les champs sont obligatoires, sauf indication contraire)

    • Nom de projet du notebook : nom unique pour le conteneur de projet du notebook que Snowflake crée pour l’exécution des tâches. S’il n’est pas modifié, Snowflake fournit un nom par défaut.

    • Paramètres (optionnel) : paramètres de valeurs clés transmis au notebook lors de l’exécution et qui apparaissent sous forme d’arguments de ligne de commande (dans sys.argv). Les paramètres sont utiles pour transmettre des dates, des indicateurs d’environnement, des seuils ou des versions de modèles. Les paramètres peuvent être transmis dans l’Snowsight en tant que valeurs séparées par des espaces ou dans la commande EXECUTE NOTEBOOK PROJECT en tant que ARGUMENTS = 'env prod'. Pour plus d’informations, voir Exécution de notebooks avec des paramètres.

    • Variante d’exécution : environnement d’exécution utilisé pour l’exécution du notebook. Choisissez parmi :

      • CPU : utilise un environnement d’exécution de conteneur CPU et fonctionne sur un pool de calcul CPU (par exemple, le SYSTEM_COMPUTE_POOL_CPU provisionné automatiquement).

      • GPU : utilise un environnement d’exécution de conteneur GPU qui comprend des bibliothèques accélérées par GPU et qui fonctionne sur un pool de calcul GPU (comme SYSTEM_COMPUTE_POOL_GPU).

      • Version de Python : version de Python utilisée lors de l’exécution de la tâche.

      • Version d’exécution : image de base de l’exécution de conteneur. En choisissant la bonne version d’exécution, votre notebook fonctionne de manière cohérente entre le développement et l’exécution planifiée.

    • Pool de calcul : pool de calcul qui exécute la tâche du notebook. Assurez-vous que le pool de calcul a de la capacité (nœuds libres) au moment de l’exécution planifiée. Pour éviter l’échec des exécutions planifiées, nous vous recommandons d’utiliser un pool de calcul dédié afin de vous assurer qu’aucun autre service SPCS n’occupe toute la capacité.

    • Entrepôt de requêtes : entrepôt Snowflake utilisé pour toutes les requêtes SQL à l’intérieur du notebook.

    • Intégration d’accès externe (optionnel) : définit les intégrations d’accès externe (EAIs) que le notebook peut utiliser. Les EAIs sont nécessaires si votre notebook nécessite des APIs externes, des services tiers ou un stockage Cloud en dehors des zones de préparation internes de Snowflake. Si aucune EAIs n’est listée, votre rôle sélectionné ne possède ou n’a aucun privilège sur une intégration.

    • Fichier des exigences (optionnel) : pré-installation des dépendances Python pour les exécutions répétitives à l’aide du paramètre REQUIREMENTS_FILE. Pour plus d’informations, voir Gestion des paquets et de l’environnement d’exécution.

  6. Examinez l’aperçu de la planification et sélectionnez Create.

Scénario B : Production (CI/CD)

Pour les environnements de production, nous recommandons de gérer le code du notebook dans un espace de travail basé sur Git (pour plus de détails, consultez Intégrer des espaces de travail à un référentiel Git) ou de le développer localement dans votre IDE préféré. Vous pouvez utiliser un pipeline CI/CD (comme des actions GitHub) pour déployer des fichiers vers une zone de préparation interne ou temporaire Snowflake.

Pour obtenir un aperçu pratique de ce modèle, voir le guide Premiers pas avec l’ingénierie des données en utilisant les Notebooks Snowflake et le référentiel de code qui l’accompagne surGitHub.

Une fois les fichiers présents sur la zone de préparation, vous pouvez :

  • Créer un objet de projet de notebook (NPO) provenant de cet emplacement de zone de préparation.

  • Planifier le NPO à l’aide d’une tâche Snowflake pour l’exécution automatisée.

  1. Créer une zone de préparation

    Utilisez CREATE STAGE pour créer une zone de préparation interne ou temporaire :

    -- Ensure the landing zone exists
    CREATE STAGE IF NOT EXISTS <database_name>.<schema_name>.<stage_name>;
    
    Copy
  2. Charger/déployer des fichiers de notebook vers la zone de préparation interne ou temporaire

    Votre pipeline CI/CD doit charger les fichiers .ipynb vers une zone de préparation Snowflake. Utilisez la commande PUT pour vous assurer que les fichiers du notebook sont chargés dans une zone de préparation lisible par le projet de notebook.

    PUT file://<absolute_path_to_file>/ @<database_name>.<schema_name>.<stage_name> AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
    
    Copy

    Exemple :

    PUT file://notebooks/ml_model/train.ipynb @<database_name>.<schema_name>.<stage_name> AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
    
    Copy
  3. Créer ou mettre à jour l’objet de projet de notebook (NPO)

    Créez (ou mettez à jour) le NPO pour référencer la zone de préparation interne ou temporaire qui contient vos fichiers de notebooks déployés :

    CREATE NOTEBOOK PROJECT IF NOT EXISTS <database_name>.<schema_name>.<project_name>
      FROM '@<database_name>.<schema_name>.<stage_name>';
    
    Copy
  4. Modifier les détails du projet de notebook

    Pour les modifications de code ultérieures, votre pipeline exécute une commande ALTER. Le projet est ainsi mis à jour avec la dernière version du code, sans qu’il soit nécessaire de supprimer et de recréer l’objet :

    -- Update the project with the latest code from the stage
    ALTER NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name>
      ADD VERSION FROM '@<database_name>.<schema_name>.<stage_name>';
    
    Copy
  5. Exécuter le projet de notebook (orchestrer avec une tâche)

    Créez une tâche pour planifier et exécuter le NPO. Utilisez une tâche Snowflake pour définir les paramètres de planification et d’exécution pour le NPO.

    Note

    Veillez à spécifier le contexte d’exécution de votre notebook (utilisez la base de données et le schéma du notebook que vous souhaitez planifier). Pour plus d’informations, voir Définir le contexte d’exécution.

    -- Create or replace the task to orchestrate the notebook
    CREATE OR REPLACE TASK <database_name>.<schema_name>.<task_name>
      WAREHOUSE = '<warehouse_name>'
      SCHEDULE = 'USING CRON 0 9 * * * America/Los_Angeles'
    AS
      EXECUTE NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name>
        MAIN_FILE = 'snow://workspace/<workspace_hash>/path/to/notebook.ipynb'
        COMPUTE_POOL = 'SYSTEM_COMPUTE_POOL_CPU'
        RUNTIME = 'V2.2-CPU-PY3.12'
        QUERY_WAREHOUSE = '<warehouse_name>'
        ARGUMENTS = '<db_name> <schema_name> <warehouse_name>';
    
    Copy

    Pour plus d’informations sur la transmission de paramètres aux notebooks planifiés, consultez Exécution de notebooks avec des paramètres.

  6. Afficher l’historique d’exécution ou de lancement de votre notebook

    Après l’exécution de la tâche, vous pouvez vérifier si elle a réussi ou échoué dans l’Snowsight afin de vous assurer que le déploiement CI/CD fonctionne comme prévu. Pour obtenir des instructions détaillées sur la consultation de l’historique d’exécution, consultez Voir les exécutions de notebook planifiées.

Snowsight prend en charge l’exécution non interactive (sans tête) des notebooks. Cela vous permet de déclencher une exécution programmatique d’un notebook sans ouvrir Snowsight et sans avoir besoin d’un calendrier récurrent.

L’exécution sans tête est destinée aux tâches, aux tâches planifiées ou aux workflows orchestrés par des outils tels que Airflow, Prefet, Dagter, les pipelines CI/CD ou les systèmes externes qui doivent exécuter un notebook de manière programmatique. Pour plus d’informations, voir CREATE NOTEBOOK PROJECT.

Note

Pour exécuter les commandes SQL dans ce workflow (telles que CREATE NOTEBOOK PROJECT et CREATE TASK), vous devez les exécuter à partir d’un fichier SQL ou d’une feuille de calcul SQL dans Workspaces, et non depuis une cellule de notebook.