Streamlit-Apps mit SQL erstellen und bereitstellen

Unter diesem Thema wird beschrieben, wie Sie eine Streamlit-App in Snowflake mit SQL-Befehlen bereitstellen. Ausgehend von einer lokalen Entwicklungsumgebung können Sie Ihre Streamlit-App-Dateien in einen benannten Stagingbereich in Snowflake kopieren und ein Streamlit-Objekt aus diesen Dateien erstellen.

Erstellen einer Streamlit-App mithilfe von SQL

Bevor Sie eine Streamlit-App mithilfe von SQL erstellen, stellen Sie sicher, dass Sie die erforderlichen Voraussetzungen erfüllen.

Um eine Streamlit-App in Snowflake mit SQL-Befehlen zu erstellen, führen Sie jede der folgenden Aufgaben aus:

Optional: Erstellen Sie die Streamlit-Dateien auf Ihrem lokalen System

In diesem Abschnitt wird beschrieben, wie Sie einen lokalen Satz von Quelldateien für die App erstellen und diese in Snowflake bereitstellen. Im nächsten Abschnitt wird, wenn Sie beim Erstellen desSTREAMLIT-Objekts keine bereitgestellten Dateien haben, stattdessen ein Standardsatz von Quelldateien in Ihr STREAMLIT-Objekt kopiert.

  1. Erstellen Sie in Ihrem lokalen Dateisystem Ihre Haupt-Streamlit-App.

  2. Optional: Um Ihre Bereitstellungsumgebung zu konfigurieren und Abhängigkeiten anzugeben, erstellen Sie eine environment.yml-Datei.

    Wenn Sie diese Datei nicht einschließen, wird Ihre App mit den neuesten unterstützten Versionen von Python und Streamlit in Streamlit in Snowflake ausgeführt. Informationen über App-Abhängigkeiten finden Sie unter Verwalten Sie die Pakete mit der environment.yml-Datei.

Nachdem Sie die Streamlit-App erstellt haben, sollte Ihre Verzeichnisstruktur in etwa so aussehen:

project_directory/
├── .streamlit/
│   └── config.toml
├── environment.yml
└── streamlit_app.py
Copy

Bemerkung

Streamlit in Snowflake unterstützt mehrseitige Streamlit-Apps. Dieses Beispiel zeigt nur eine App mit einer Seite, aber Sie können ein pages/-Verzeichnis hinzufügen oder st.navigation verwenden, um eine mehrseitige App zu erstellen. Weitere Informationen über mehrseitige Apps finden Sie unter Overview of multipage apps in der Open-Source-Dokumentation von Streamlit.

Laden Sie Ihre Streamlit-Dateien in einen benannten Stagingbereich hoch

Um eine Streamlit-App in Streamlit in Snowflake zu erstellen, müssen Sie Ihre Anwendungsdateien in einen benannten Stagingbereich hochladen.

  • Führen Sie einen der folgenden Schritte aus, um die Anwendungsdateien hochzuladen:

    • Laden Sie die Anwendungsdateien über Snowsight hoch, wie unter Bereitstellen von Dateien im Stagingbereich mit Snowsight beschrieben.

    • Laden Sie die Anwendungsdateien mithilfe von SnowSQL hoch, wie im folgenden Beispiel gezeigt:

      PUT file:///<path_to_your_project_directory>/streamlit/streamlit_app.py @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_project_directory>/streamlit/environment.yml @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_project_directory>/streamlit/.streamlit/config.toml @streamlit_db.streamlit_schema.streamlit_stage/.streamlit/ overwrite=true auto_compress=false;
      
      Copy

Erstellen Sie ein STREAMLIT-Objekt

Ein STREAMLIT-Objekt ist ein Datenbankobjekt in Snowflake, das die von Ihrer Streamlit-App benötigten Dateien kapselt.

  1. Um ein STREAMLIT-Objekt zu erstellen, führen Sie den Befehl CREATE STREAMLIT aus, wie im folgenden Beispiel gezeigt:

    CREATE STREAMLIT hello_streamlit
    FROM '@streamlit_db.streamlit_schema.streamlit_stage'
    MAIN_FILE = 'streamlit_app.py'
    QUERY_WAREHOUSE = my_warehouse;
    
    Copy

    Mit diesem Befehl wird ein STREAMLIT-Objekt mit dem Namen hello_streamlit auf der Grundlage des in FROM und MAIN_FILE angegebenen Pfades und der Datei erstellt.

    Bemerkung

    Obwohl die QUERY_WAREHOUSE-Klausel optional ist, müssen Sie ein Abfrage-Warehouse angeben, um die Streamlit-App in Snowflake ausführen zu können.

  2. Optional: Um zu überprüfen, ob das Streamlit-Objekt erstellt wurde, führen Sie den Befehl SHOW STREAMLITS aus:

    SHOW STREAMLITS;
    
    Copy
  3. Um die Initialisierung der App abzuschließen, muss die Eigentümerrolle die App entweder in Snowsight anzeigen, oder Sie führen den folgenden Befehl aus:

    ALTER STREAMLIT hello_streamlit ADD LIVE VERSION FROM LAST;
    
    Copy

Verwalten Sie die Pakete mit der environment.yml-Datei

So installieren Sie zusätzliche Python-Pakete in Ihrer Streamlit-App:

  1. Erstellen Sie eine environment.yml-Datei auf Ihrem lokalen System.

  2. Um die Datei in den Stagingbereich hochzuladen, der durch den Parameter ROOT_LOCATION des Objekts STREAMLIT festgelegt ist, führen Sie den Befehl PUT aus.

    Die in environment.yml aufgeführten Pakete werden aus dem Snowflake Anaconda-Kanal installiert.

Das folgende Beispiel environment.yml zeigt, wie Sie scikit-learn in der Streamlit-Umgebung installieren:

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

Die Eigenschaften name und channels sind erforderlich. Außerdem wird der Schlüssel - snowflake unter der Eigenschaft channels benötigt.

Bemerkung

Sie können nur Pakete installieren, die im Snowflake Anaconda-Kanal aufgeführt sind. Streamlit in Snowflake unterstützt keine externen Anaconda-Kanäle.

Streamlit-Version in der Datei environment.yml festlegen

  • Um die Streamlit-Version in der environment.yml-Datei festzulegen, fügen Sie eine streamlit-Abhängigkeit ein, wie im folgenden Beispiel gezeigt:

    name: sf_env
    channels:
    - snowflake
    dependencies:
    - scikit-learn
    - streamlit=1.31.1
    
    Copy

Anzeigen einer Streamlit-App

  • Um Informationen zu dem STREAMLIT-Objekt anzuzeigen, führen Sie den Befehl DESCRIBE STREAMLIT aus, wie im folgenden Beispiel gezeigt:

    DESC STREAMLIT hello_streamlit;
    
    Copy
  • Informationen zur Anzeige Ihre Streamlit-App in Snowsight finden Sie unter Anzeigen einer Streamlit-App.

Verwalten Sie STREAMLIT-Objekte

Nachdem Sie ein STREAMLIT-Objekt erstellt haben, verwenden Sie den Befehl ALTER STREAMLIT, um verschiedene Eigenschaften zu ändern, wie in den folgenden Abschnitten beschrieben.

Umbenennen eines STREAMLIT-Objekts

  • Um ein STREAMLIT-Objekt umzubenennen, verwenden Sie die Klausel RENAME TO des Befehls ALTER STREAMLIT, wie im folgenden Beispiel gezeigt:

    ALTER STREAMLIT hello_streamlit RENAME TO hello_snowflake;
    
    Copy

Ändern des Stagingbereichs oder der Hauptdatei in einem STREAMLIT-Objekt

  • Um den Pfad zum Stagingbereich für ein STREAMLIT-Objekt zu ändern, verwenden Sie den Befehl ALTER STREAMLIT, um die Eigenschaft ROOT_LOCATION des Objekts zu setzen, wie im folgenden Beispiel gezeigt:

    ALTER STREAMLIT hello_streamlit SET ROOT_LOCATION = '@snowflake_db.snowflake_schema.snowflake_stage'
    
    Copy
  • Um die Haupt-Streamlit-Datei in einem STREAMLIT-Objekt zu ändern, verwenden Sie den Befehl ALTER STREAMLIT, um die Eigenschaft MAIN_FILE des Objekts zu setzen, wie im folgenden Beispiel gezeigt:

    ALTER STREAMLIT hello_streamlit SET MAIN_FILE = 'snowflake_main.py'
    
    Copy

Ändern des einem STREAMLIT-Objekt zugewiesenen Abfrage-Warehouses

  • Um ein Abfrage-Warehouse hinzuzufügen oder das aktuelle Abfrage-Warehouse für ein STREAMLIT-Objekt zu ändern, verwenden Sie den Befehl ALTER STREAMLIT, um die Eigenschaft QUERY_WAREHOUSE des Objekts zu setzen, wie im folgenden Beispiel gezeigt:

    ALTER STREAMLIT hello_streamlit SET QUERY_WAREHOUSE = my_new_warehouse;
    
    Copy

Liste der verfügbaren STREAMLIT-Objekte

  • Um die Streamlit-Apps aufzulisten, die für Ihre aktuelle Rolle verfügbar sind, führen Sie den Befehl SHOW STREAMLITS aus, wie im folgenden Beispiel gezeigt:

    SHOW STREAMLITS;
    
    Copy

Löschen eines STREAMLIT-Objekts

  • Um ein STREAMLIT-Objekt zu löschen, führen Sie den Befehl DROP STREAMLIT aus, wie im folgenden Beispiel gezeigt:

    DROP STREAMLIT hello_streamlit;
    
    Copy