Développez et exécutez du code dans des Snowflake Notebooks

Cette rubrique décrit comment écrire et exécuter du code dans des Snowflake Notebooks.

Principes de base des cellules des notebooks

Cette section présente quelques opérations de base sur les cellules. Lorsque vous créez un notebook, trois cellules d’exemple sont affichées. Vous pouvez modifier ces cellules ou en ajouter de nouvelles.

Créer une nouvelle cellule

Snowflake Notebooks prend en charge trois types de cellules : SQL, python et Markdown. Pour créer une nouvelle cellule, vous pouvez soit survoler une cellule existante, soit faire défiler la page jusqu’au bas du notebook, puis sélectionner l’un des boutons correspondant au type de cellule que vous souhaitez ajouter.

Boutons d'ajout de nouvelles cellules au bas du notebook.

Vous pouvez modifier la langue de la cellule à tout moment après sa création via l’une des deux méthodes :

Déplacer des cellules

Vous pouvez déplacer une cellule en la faisant glisser à l’aide de votre souris ou en utilisant le menu d’actions :

  1. (Option 1) Passez votre souris sur la cellule existante que vous souhaitez déplacer. Sélectionnez l’icône « glisser-déposer » avec votre souris et déplacez la cellule vers son nouvel emplacement.

    Glisser-déposer pour déplacer des cellules.
  2. (Option 2) Sélectionnez le menu vertical indiqué par une ellipse Plus d'actions pour la feuille de calcul (actions). Sélectionnez ensuite l’action appropriée.

    Menu d'action pour déplacer des cellules.

Note

Pour déplacer le curseur d’une cellule à l’autre, utilisez les flèches vers le haut and vers le bas.

Supprimer une cellule

Pour supprimer une cellule, effectuez les étapes suivantes dans un notebook :

  1. Sélectionnez le menu vertical indiqué par une ellipse Plus d'actions pour la feuille de calcul (plus d’actions).

  2. Sélectionnez Delete.

  3. Sélectionnez à nouveau Delete pour confirmer.

Vous pouvez également utiliser le raccourci clavier pour supprimer une cellule.

Pour les considérations relatives à l’utilisation de Python et des cellules SQL, voir Considérations relatives à l’utilisation de notebooks.

Exécutez Python et des cellules SQL dans des Snowflake Notebooks

Pour exécuter des cellules Python et SQL dans des Snowflake Notebooks, vous pouvez :

  • Exécuter une seule cellule : Choisissez cette option lorsque vous effectuez des mises à jour fréquentes du code.

    • Appuyez sur CMD + Retour sur un clavier Mac, ou sur CTRL + Entrée sur un clavier Windows.

    • Sélectionnez Exécuter cette cellule uniquement, ou Run this cell only.

  • Exécuter toutes les cellules d’un notebook dans l’ordre séquentiel : Choisissez cette option avant de présenter ou de partager un notebook pour vous assurer que les destinataires voient les informations les plus récentes.

    • Appuyez sur CMD + Maj + Retour sur un clavier Mac, ou sur CTRL + Maj + Entrée sur un clavier Windows.

    • Sélectionnez Run all.

  • Exécuter une cellule et passer à la cellule suivante : choisissez cette option pour exécuter une cellule et passer à la cellule suivante plus rapidement.

    • Appuyez sur Maj + Retour sur un clavier Mac, ou sur Maj + Entrée sur un clavier Windows.

    • Sélectionnez le menu vertical indiqué par une ellipse (plus d’actions) d’une cellule et choisissez Run cell and advance.

  • Exécuter tous les éléments ci-dessus : choisissez cette option lorsque vous exécutez une cellule qui fait référence aux résultats des cellules précédentes.

    • Sélectionnez le menu vertical indiqué par une ellipse (plus d’actions) d’une cellule et choisissez Run all above.

  • Exécuter tous les éléments ci-dessous : choisissez cette option lorsque vous exécutez une cellule dont dépendent d’autres cellules. Cette option exécute la cellule actuelle et toutes les cellules suivantes.

    • Sélectionnez le menu vertical indiqué par une ellipse (plus d’actions) d’une cellule et choisissez Run all below.

Lorsqu’une cellule est en cours d’exécution, les autres requêtes d’exécution sont mises en file d’attente et seront exécutées une fois que la cellule en cours d’exécution aura terminé.

Vérifier le statut de la cellule

Le statut de l’exécution de la cellule est indiqué par les couleurs affichées par la cellule. Cette couleur de statut est affichée à deux endroits, sur le côté gauche de la cellule et dans la carte de navigation de la cellule de droite.

Couleur du statut de la cellule :

  • Point bleu - Indique qu’une cellule a été modifiée, mais n’a pas encore été exécutée.

  • Rouge - Une erreur s’est produite.

  • Vert - L’exécution s’est déroulée avec succès.

  • Vert qui s’allume de façon alternative - La cellule est en cours d’exécution.

  • Gris clignotant - La cellule est en attente d’exécution. Ce statut se produit lorsque plusieurs cellules sont déclenchées pour s’exécuter.

Note

Les cellules Markdown n’affichent aucun statut.

Une fois l’exécution d’une cellule terminée, la durée de l’exécution est affichée en haut de la cellule. Sélectionnez ce texte pour afficher la fenêtre des détails de l’exécution. Vous pouvez voir les détails de l’exécution, y compris les heures de début et de fin de l’exécution et le temps total écoulé.

Les cellules SQL contiennent des informations supplémentaires, telles que l’entrepôt utilisé pour exécuter la requête, les lignes retournées et un lien hypertexte vers la page d’ID de la requête.

Fenêtre des détails de l'exécution de la cellule.

Arrêter une cellule en cours d’exécution.

Pour arrêter l’exécution de toute cellule de code en cours d’exécution, sélectionnez le bouton stop en haut à droite de la cellule.

Cette opération interrompt l’exécution de la cellule en cours d’exécution et de toutes les cellules suivantes dont l’exécution a été planifiée.

Formater du texte avec Markdown

Pour inclure le format Markdown dans votre notebook, ajoutez une cellule Markdown :

  1. Utilisez un raccourci clavier et sélectionnez Markdown, ou sélectionnez + Markdown.

  2. Sélectionnez l’icône de stylo Edit markdown ou double-cliquez sur la cellule et commencez à écrire Markdown.

Vous pouvez saisir du Markdown valide pour formater une cellule de texte. Au fur et à mesure que vous tapez, le texte formaté apparaît sous la syntaxe Markdown.

Capture d'écran d'une cellule Markdown montrant un texte Markdown avec un en-tête H1 indiqué par un # et un en-tête Un exemple de cellule Markdown suivi d'un corps de texte Ceci est un exemple de cellule Markdown dans un notebook Snowflake. Sous le contenu Markdown brut, le rendu Markdown apparaît avec une police différente.

Pour ne voir que le texte formaté, sélectionnez l’icône de coche Done editing.

Capture d'écran d'une cellule Markdown qui n'affiche que le Markdown rendu : un en-tête Un exemple de cellule Markdown et un corps de texte Ceci est un exemple de cellule Markdown dans un notebook Snowflake.

Note

Les cellules Markdown ne prennent actuellement pas en charge le rendu HTML.

Notions de base sur Markdown

Cette section décrit la syntaxe Markdown de base pour vous aider à démarrer.

En-têtes

Niveau de titre

Syntaxe Markdown

Exemple

Niveau supérieur

# Top-level Header
Copy
En-tête 1 dans Markdown

2e niveau

## 2nd-level Header
Copy
En-tête 1 dans Markdown

3e niveau

### 3rd-level Header
Copy
En-tête 1 dans Markdown

Formatage de texte en ligne

Format de texte

Syntaxe Markdown

Exemple

Italique

*italicized text*
Copy
Texte en italique dans Markdown

Gras

**bolded text**
Copy
Texte en gras dans Markdown

Lien

[Link text](url)
Copy
Lien dans Markdown

Listes

Type de liste

Syntaxe Markdown

Exemple

Liste triée

1. first item
2. second item
  1. Nested first
  2. Nested second
Copy
Liste triée dans Markdown

Liste non triée

- first item
- second item
  - Nested first
  - Nested second
Copy
Liste non triée dans Markdown

Formatage de code

Langage

Syntaxe Markdown

Exemple

Python

```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
Copy
Extrait de code Python dans Markdown

SQL

```sql
SELECT * FROM MYTABLE
```
Copy
Extrait de code SQL dans Markdown

Images intégrées

Type de fichier

Syntaxe Markdown

Exemple

Image

![<alt_text>](<path_to_image>)
Copy
Image intégrée dans Markdown

Pour voir un notebook qui illustre ces exemples Markdown, consulter la section Cellules Markdown du notebook de récits de données visuelles.

Compréhension des es sorties de cellules

Lorsque vous exécutez une cellule Python, les types de sortie suivants de la cellule sont affichés dans les résultats :

  • Tous les résultats écrits dans la console, tels que print(), les journaux, les erreurs et les avertissements.

  • Les dataframes sont automatiquement affichés avec l’affichage interactif de Streamlit, st.dataframe().

    • Les types d’affichage de trame de données pris en charge incluent le DataFrame Pandas, les DataFrames Snowpark et les tables Snowpark.

    • Pour Snowpark, les dataframes affichés sont évalués immédiatement sans qu’il soit nécessaire d’appeler .show(). Si vous préférez ne pas évaluer le dataframe avec immédiatement, par exemple lorsque vous exécutez le notebook en mode non interactif, Snowflake recommande de supprimer les instructions d’affichage du dataframe afin d’accélérer le temps d’exécution global de votre code Snowpark.

  • Les visualisations sont présentées sous forme de sorties. Pour en savoir plus sur la visualisation de vos données dans les Snowflake Notebooks, consultez Visualiser des données dans les Snowflake Notebooks.

En outre, vous pouvez accéder aux résultats de votre requête SQL en Python et vice versa. Voir Cellules et variables de référence dans les Snowflake Notebooks.

Cellules et variables de référence dans les Snowflake Notebooks

Vous pouvez référencer les résultats de la cellule précédente dans une cellule de notebook. Par exemple, pour référencer le résultat d’une cellule SQL ou la valeur d’une variable Python, voir les tableaux suivants :

Note

Le nom de la cellule de la référence est sensible à la casse et doit correspondre exactement au nom de la cellule référencée.

Référencement de la sortie SQL dans les cellules Python :

Type de cellule de référence

Type de cellule actuel

Syntaxe de référence

Exemple

SQL

Python

cell1

Convertissez une table de résultats SQL en DataFrame Snowpark.

Si vous avez ce qui suit dans une cellule SQL appelée cell1 :

SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Copy

Vous pouvez faire référence à la cellule pour accéder au résultat SQL :

snowpark_df = cell1.to_df()
Copy

Convertissez le résultat en DataFrame Pandas :

my_df = cell1.to_pandas()
Copy

Référence aux variables dans le code SQL :

Important

Dans le code SQL, vous ne pouvez référencer que des variables Python de type string. Vous ne pouvez pas référence de DataFrame Snowpark, de DataFrame Pandas ni d’autre format DataFrame natif Python.

Type de cellule de référence

Type de cellule actuel

Syntaxe de référence

Exemple

SQL

SQL

{{cell2}}

Par exemple, dans une cellule SQL nommée cell1, faites référence aux résultats de la cellule depuis cell2 :

SELECT * FROM {{cell2}} where PRICE > 500
Copy

Python

SQL

{{variable}}

Par exemple, dans une cellule Python nommée cell1 :

c = "USA"
Copy

Vous pouvez faire référence à la valeur de la variable c dans une cellule SQL nommée cell2 en faisant référence à la variable :

SELECT * FROM my_table WHERE COUNTRY = {{c}}
Copy

Considérations relatives à l’utilisation de notebooks

  • Les notebooks fonctionnent en utilisant les droits de l’appelant. Pour d’autres considérations, voir Modifier le contexte de la session pour un notebook.

  • Vous pouvez importer des bibliothèques Python pour les utiliser dans un notebook. Pour plus de détails, voir Importer des paquets Python pour les utiliser dans les notebooks.

  • Lorsque vous faites référence à des objets dans les cellules SQL, vous devez utiliser des noms d’objets entièrement qualifiés, sauf si vous faites référence à des noms d’objets dans une base de données ou un schéma spécifique. Voir Modifier le contexte de la session pour un notebook.

  • Les brouillons de notebooks sont enregistrés toutes les trois secondes.

  • Après une heure d’inactivité (sans modification de code ni exécution de requêtes), le noyau du notebook s’arrêtera. Snowflake vous recommande également de vérifier les paramètres de votre entrepôt. Si STATEMENT_TIMEOUT_IN_SECONDS ou STATEMENT_QUEUED_TIMEOUT_IN_SECONDS est défini sur une valeur faible, le notebook peut s’éteindre ou ne pas démarrer.

  • Vous pouvez utiliser l’intégration Git pour maintenir les versions des notebooks.

  • Les résultats des cellules du notebook sont mis en cache au fil des sessions. La réouverture d’un notebook affiche les résultats de la dernière fois que vous avez exécuté le notebook à l’aide de l’UI. Les résultats mis en cache ne sont visibles que pour le même utilisateur que celui qui a exécuté le notebook.

  • BEGIN … END (Exécution de scripts Snowflake) n’est pas pris en charge dans les cellules SQL. Au lieu de cela, utilisez la méthode Session.sql().collect() dans une cellule Python pour exécuter le bloc de script. Chaînez l’appel à sql avec un appel à collect pour exécuter immédiatement la requête SQL.

    Le code suivant exécute un bloc Exécution de scripts Snowflake à l’aide de la méthode session.sql().collect() :

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    code_to_run = """
    BEGIN
        CALL TRANSACTION_ANOMALY_MODEL!DETECT_ANOMALIES(
            INPUT_DATA => SYSTEM$REFERENCE('TABLE', 'ANOMALY_INFERENCE'),
            TIMESTAMP_COLNAME =>'DATE',
            TARGET_COLNAME => 'TRANSACTION_AMOUNT',
            CONFIG_OBJECT => {'prediction_interval': 0.95}
        );
    
        LET x := SQLID;
        CREATE TABLE ANOMALY_PREDICTIONS AS SELECT * FROM TABLE(RESULT_SCAN(:x));
    END;
    """
    data = session.sql(code_to_run).collect(block=True);
    
    Copy

Étape suivante