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

Cette rubrique décrit comment écrire et exécuter du code SQL, Python et Markdown dans 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 soit en la faisant glisser à l’aide de votre souris, soit 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 Icône de glisser-déposer dans Notebooks (glisser-déposer) sur le côté gauche de la cellule et déplacez la cellule vers son nouvel emplacement.

  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.

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écuter des cellules dans 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 des points de suspension verticaux Plus d'actions pour la feuille de calcul (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 des points de suspension verticaux Plus d'actions pour la feuille de calcul (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 des points de suspension verticaux Plus d'actions pour la feuille de calcul (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 : La cellule a été modifiée mais n’a pas encore été exécutée.

  • Rouge : La cellule a été exécutée dans la session en cours et une erreur s’est produite.

  • Vert : La cellule s’est exécutée sans erreur dans la session en cours.

  • Vert clignotant : La cellule est en cours d’exécution.

  • Gris : La cellule a été exécutée lors d’une session précédente et les résultats affichés sont ceux de la session précédente. Les résultats des cellules de la session interactive précédente sont conservés pendant 7 jours. Session interactive signifie que l’utilisateur exécute le notebook de manière interactive dans l”Snowsight plutôt que ceux qui ont été exécutés par une planification ou la commande EXECUTE NOTEBOOK SQL.

  • Gris clignotant : La cellule est en attente d’exécution après que vous avez sélectionné Run All.

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 voir les détails de l’exécution, y compris les heures de début et de fin 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, sélectionnez Stop en haut à droite de la cellule. Vous pouvez également sélectionner Stop en haut à droite de la page de Notebooks. Pendant l’exécution des cellules, Run all devient Stop.

Cette opération arrête l’exécution de la cellule en cours 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, le notebook affiche les types de sortie suivants de la cellule sont affichés dans les résultats :

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

  • Les DataFrames sont automatiquement imprimés à l’aide de l”écran de table interactif de Streamlit, st.dataframe().

    • Les types d’affichage DataFrame pris en charge sont le DataFrame Pandas, les DataFrames Snowpark et les tables Snowpark.

    • Pour Snowpark, les DataFrames imprimés sont évalués avec empressement sans qu’il soit nécessaire d’exécuter la commande .show(). Si vous préférez ne pas évaluer le DataFrame immédiatement, par exemple lorsque vous exécutez le notebook en mode non interactif, Snowflake vous recommande de supprimer les instructions d’impression de DataFrame afin d’accélérer l’environnement 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, voir 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.

Limites de sortie des cellules

Seules 10 000 lignes ou 8 MB de sortie DataFrame sont affichés comme résultats de cellules, la valeur la plus faible étant retenue. Cependant, l’intégralité du DataFrame est toujours disponible dans la session du notebook. Par exemple, même si l’ensemble du DataFrame n’est pas rendu, vous pouvez toujours effectuer des tâches de transformation des données.

Pour chaque cellule, seule une sortie de 20 MB est autorisée. Si la taille de la sortie de la cellule dépasse 20 MB, la sortie sera abandonnée. Envisagez de diviser le contenu en plusieurs cellules si cela se produit.

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 :

Utiliser une variable Python comme valeur

c = "USA"
Copy

Vous pouvez faire référence à la valeur de la variable c dans une cellule SQL nommée cell2 en l’entourant de guillemets doubles pour vous assurer qu’elle est traitée comme une valeur :

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

Utiliser une variable Python comme identificateur

Si la variable Python représente un identificateur SQL tel qu’un nom de colonne ou de table :

column_name = "COUNTRY"
Copy

Si la variable Python représente un identificateur SQL, tel qu’un nom de colonne ou de table (column_name = "COUNTRY"), vous pouvez faire référence à la variable directement sans guillemets :

SELECT * FROM my_table WHERE {{column_name}} = 'USA'
Copy

Veillez à faire la différence entre les variables utilisées comme valeurs (avec des guillemets) et comme identificateurs (sans guillemets).

Remarque : Le référencement de DataFrames Python n’est pas pris en charge.

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.

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

  • Vous pouvez configurer un paramètre de délai d’expiration pour arrêter automatiquement la session du notebook une fois le paramètre atteint. Pour plus d’informations, voir Temps d’inactivité et reconnexion.

  • Les résultats de la cellule du notebook ne sont visibles que par l’utilisateur qui a exécuté le notebook et sont mis en cache au fil des sessions. La réouverture d’un notebook affiche les résultats de la dernière fois que l’utilisateur a exécuté le notebook à l’aide de l”Snowsight.

  • 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