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 la version 1.22.0 de la bibliothèque Streamlit. La prise en charge des versions ultérieures de la bibliothèque Streamlit sera incluse au fur et à mesure de leur publication.

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 de AWS PrivateLink ou Azure PrivateLink pour accéder à une application Streamlit n’est pas prise en charge.

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

Le workflow suivant décrit un workflow typique pour inclure une application Streamlit dans un paquet d’application. Selon les exigences de votre application, il peut s’agir d’un processus itératif.

  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. Pour plus d’informations, voir Workflow Snowflake Native App Framework.

  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 entrée pour l’application Streamlit au fichier manifest.yml.

    Pour inclure une application Streamlit, vous devez inclure le nom du fichier Streamlit par défaut dans le fichier manifest.yml. Pour plus d’informations, voir Ajout d’une application Streamlit au fichier manifeste.

  6. 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.

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

    Pour plus d’informations, voir Ajouter des paquets supplémentaires à une application Streamlit.

  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.

    Pour plus d’informations, voir Tester le paquet d’application contenant l’application Streamlit.

  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.

Ajout d’une application Streamlit au fichier manifeste

Pour inclure un fichier Streamlit dans un paquet d’application, ajoutez les entrées suivantes dans le fichier manifest.yml.

artifacts:
  ...
  extension_code: true
  default_streamlit: app_schema.streamlit_app_na
  ...
Copy

L’entrée extension_code: true est nécessaire pour activer tout code d’extension dans votre application.

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

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.

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 Créer un objet d’application.

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 la barre de navigation de gauche, sélectionnez Streamlit.

  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.