Ajouter une expérience front-end à une application en utilisant Streamlit

Cette rubrique décrit comment inclure une application Streamlit dans une application Snowflake Native App.

À propos de Streamlit et de Snowflake Native App Framework

Streamlit est une bibliothèque Python open-source qui facilite la création et le partage d’applications Web personnalisées pour le machine learning et la science des données. En utilisant Streamlit, vous pouvez rapidement créer et déployer des applications de données puissantes.

Pour obtenir des informations sur la bibliothèque open-source, voir la documentation de la bibliothèque Streamlit.

Dans Snowflake Native App Framework , vous pouvez utiliser Streamlit pour effectuer les opérations suivantes :

  • Créer une application web front-end qui permet aux consommateurs de visualiser les données fournies par votre Snowflake Native App.

  • Créer une interface utilisateur qui permette aux consommateurs d’accorder des privilèges et de créer des références aux objets de leur compte qui sont utilisés par l”Snowflake Native App.

    Pour plus d’informations, voir Demander l’accès aux objets d’un compte de consommateur.

Note

Voir Fonctions Streamlit non prises en charge pour obtenir des informations sur les fonctions Streamlit non prises en charge.

Versions prises en charge des bibliothèques Streamlit

Snowflake Native App Framework prend en charge les versions suivantes de la bibliothèque Streamlit :

  • 1.35.0

  • 1.31.1

  • 1.29.0

  • 1.26.0

  • 1.22.0

La prise en charge des versions plus récentes de la bibliothèque Streamlit sera incluse au fur et à mesure de leur publication.

Consultez Définir la version de Streamlit d’une application pour obtenir des informations sur la manière de définir la version d’une application Streamlit.

Paquets externes pris en charge

Par défaut, une application Streamlit incluse dans une Snowflake Native App comprend les paquets python, streamlit, et snowflake-snowpark-python préinstallés dans l’environnement du consommateur. L’environnement du consommateur a également accès aux dépendances requises par ces paquets.

Fonctions Streamlit non prises en charge

Les fonctions Streamlit suivantes ne sont pas prises en charge actuellement lors de l’utilisation de Streamlit dans une Snowflake Native App :

  • Les composants personnalisés ne sont pas pris en charge.

  • L’utilisation d”Azure Private Link pour accéder à une application Streamlit n’est pas prise en charge.

Workflow de création et de test d’une application Streamlit

  1. Développez votre application native.

    Il s’agit d’ajouter le contenu des données auxquelles les consommateurs doivent accéder à l’aide de Streamlit. Voir Workflow Snowflake Native App Framework pour plus d’informations.

  2. Consultez les sections suivantes pour connaître les versions prises en charge de la bibliothèque Streamlit et les fonctionnalités non prises en charge :

  3. Développez une application Streamlit.

    Voir la documentation de la bibliothèque Streamlit pour plus d’informations sur l’utilisation de la bibliothèque open source Streamlit.

  4. Créez une structure de répertoire locale pour l’application Streamlit.

    Voir Exemple de structure de répertoire pour une application Streamlit pour des recommandations sur la façon d’organiser vos fichiers Streamlit dans la structure de votre application.

  5. Ajoutez une instruction CREATE STREAMLIT au script d’installation.

    Lors de l’exécution de la commande CREATE APPLICATION le script d’installation exécute l’instruction CREATE STREAMLIT pour créer un objet Streamlit. Cet objet contient le schéma et les fichiers Python nécessaires à l’application Streamlit.

  6. Configurez le fichier environment.yml pour inclure des bibliothèques supplémentaires dans votre application Streamlit.

    Voir Ajouter des paquets supplémentaires à une application Streamlit pour plus d’informations.

  7. Facultatif : ajoutez le nom de l’objet Streamlit en tant qu’entrée dans le fichier manifest.yaml pour afficher l’application Streamlit comme application par défaut dans Snowsight.

    Voir Ajouter une application Streamlit au fichier manifeste pour plus d’informations.

  8. Chargez les fichiers Streamlit, le fichier environment.yml, le script d’installation et les fichiers manifest.yml dans une zone de préparation nommée. Pour inclure des fichiers de code Streamlit dans un paquet d’application, les fichiers doivent être chargés dans une zone de préparation nommée.

  9. Testez le paquet d’application.

    Après avoir créé les fichiers requis par le paquet d’application et l’application Streamlit, créez un objet d’application pour tester le script d’installation et le fichier manifest.yml.

    Voir Tester le paquet d’application contenant l’application Streamlit pour plus d’informations.

  10. Affichez l’application Streamlit dans Snowsight.

    Pour tester l’application Streamlit, affichez-la dans Snowsight. Voir Tester l’application Streamlit dans Snowsight.

Exemple de structure de répertoire pour une application Streamlit

Comme pour les autres modules Python, pour ajouter une application Streamlit à un paquet d’application, vous devez charger vos fichiers de code Streamlit dans une zone de préparation nommée. Consultez PUT pour obtenir des informations sur la manière de charger des fichiers dans une zone de préparation.

Pour prendre en charge plusieurs versions d’une Snowflake Native App, envisagez d’utiliser une structure de répertoire similaire à la suivante pour gérer vos applications Streamlit et des fichiers d’application associés :

@test.schema1.stage1:
└── /
    ├── manifest.yml
    ├── readme.md
    ├── scripts/setup_script.sql
    └── code_artifacts/
        └── streamlit/
            └── environment.yml
            └── streamlit_app.py
Copy

Notez que la structure des répertoires que vous créez dépend des exigences de votre application et de votre environnement de développement.

Note

Le fichier environment.yml doit se trouver au même niveau que votre fichier principal de votre application Streamlit.

Reportez-vous à Référencer des fichiers de code externes pour plus d’informations sur les chemins relatifs.

Créer l’objet Streamlit dans le script d’installation

L’exemple suivant montre comment utiliser CREATE STREAMLIT dans le script d’installation d’une application.

CREATE OR REPLACE STREAMLIT app_schema.my_test_app_na
     FROM '/code_artifacts/streamlit'
     MAIN_FILE = '/streamlit_app.py';

GRANT USAGE ON SCHEMA APP_SCHEMA TO APPLICATION ROLE app_public;
GRANT USAGE ON STREAMLIT APP_SCHEMA.MY_TEST_APP_NA TO APPLICATION ROLE app_public;
Copy

Cet exemple crée un objet Streamlit dans un schéma nommé app_schema. La commande CREATE STREAMLIT utilise l’application Streamlit spécifiée dans la clause MAIN_FILE. L’emplacement du répertoire est spécifié par la valeur de la clause FROM.

Voir Exemple de structure de répertoire pour une application Streamlit pour des informations sur la création de la structure de répertoire pour une application Streamlit au sein d’un paquet d’application.

Cet exemple accorde également les privilèges requis sur le schéma et l’objet Streamlit à un rôle d’application.

Ajouter des paquets supplémentaires à une application Streamlit

Utilisez le fichier environment.yml pour ajouter des paquets Python supplémentaires à une application Streamlit. Par exemple, pour ajouter la bibliothèque scikit-learn à une application Streamlit, ajoutez ce qui suit au fichier environment.yml :

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
Copy

Les propriétés name et channels sont toutes deux requises.

De plus, la clé - snowflake est requise sous la propriété channels. Ceci indique le canal Snowflake Anaconda.

Note

Vous ne pouvez installer que les paquets répertoriés dans le canal Anaconda Snowflake. Snowflake ne prend pas en charge les canaux Anaconda externes dans Streamlit.

Définir la version de Streamlit d’une application

Snowflake Native App Framework prend en charge plusieurs versions de la bibliothèque Streamlit. Pour définir la version de Streamlit dans un fichier Snowflake Native App, ajoutez streamlit à la section dependencies du fichier environment.yml, comme indiqué dans l’exemple suivant :

name: sf_env
channels:
- snowflake
dependencies:
- streamlit=1.22.0|1.26.0
Copy

Snowflake recommande de définir explicitement la version de Streamlit pour votre application. Cependant, actuellement, si vous ne définissez pas explicitement la version de la bibliothèque Streamlit, la version 1.22.0 de Streamlit est définie par défaut.

Ajouter une application Streamlit au fichier manifeste

Pour spécifier l’application Streamlit par défaut lancée par votre native app, ajoutez les entrées suivantes dans le fichier manifest.yml.

artifacts:
  ...
  default_streamlit: app_schema.streamlit_app_na
  ...
Copy

L’entrée default_streamlit: app_schema.streamlit_app_na indique l’emplacement du schéma contenant votre application Streamlit.

Tester le paquet d’application contenant l’application Streamlit

Pour tester le paquet d’application contenant l’application Streamlit, créez un objet d’application utilisant les fichiers sur une zone de préparation nommée en exécutant la commande CREATE APPLICATION comme indiqué dans l’exemple suivant :

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy

En fonction de ce que vous devez tester, vous pouvez créer l’objet d’application en utilisant d’autres formes de CREATE APPLICATION. Par exemple, vous pouvez vouloir tester l’application Streamlit dans le contexte d’une version ou d’une mise à niveau. Voir Installer et tester une application localement.

Tester l’application Streamlit dans Snowsight

Pour tester l’application Streamlit, affichez-la dans Snowsight en procédant comme suit :

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez Data Products » Apps.

  3. Sélectionnez l’application Streamlit que vous souhaitez afficher.

    L’application principale Streamlit s’ouvre dans Snowsight.

  4. Facultatif : si vous consultez une application Streamlit multi-pages, sélectionnez un onglet pour afficher des pages supplémentaires.

Dépanner une application Streamlit dans Snowflake Native App Framework

Si l’application affiche une erreur inconnue, assurez-vous d’avoir essayé les solutions décrites dans les sections suivantes.

Accepter les conditions de service

Pour utiliser Streamlit et les paquets fournis par Anaconda dans Snowflake, vous devez accepter les Conditions des offres externes. Pour en savoir plus, voir Utilisation de paquets tiers à partir d’Anaconda.

Liste d’autorisations du pare-feu

Chaque application Streamlit utilise un sous-domaine unique. Si vous utilisez des pare-feux stricts, ajoutez *.snowflake.app à la liste des autorisations de votre pare-feu. L’ajout de cette entrée à votre liste d’autorisations permet à vos applications de communiquer avec les serveurs de Snowflake sans aucune restriction.