Erstellen einer Streamlit-App mit SQL

Achtung

Dieses Feature ist für Konten in kommerziellen AWS- und Microsoft Azure-Regionen verfügbar. AWS PrivateLink wird nicht unterstützt.

Unter diesem Thema wird beschrieben, wie Sie eine Streamlit-App in Snowflake mit SQL-Befehlen bereitstellen. Es wird beschrieben, wie einseitige und mehrseitige Streamlit-Apps bereitgestellt werden können.

Voraussetzungen

Bevor Sie eine Streamlit-App mithilfe von SQL bereitstellen, sollten Sie die folgenden Voraussetzungen erfüllen:

Erstellen einer Streamlit-App mit SQL

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

Erstellen der Streamlit-Dateien auf Ihrem lokalen Dateisystem

In diesem Abschnitt wird beschrieben, wie Sie eine ein- oder mehrseitige Streamlit-App erstellen. Beispiele für jede Art der Anwendung finden Sie unter Beispiel: Einseitige Streamlit-App und Beispiel: Mehrseitige Streamlit-App.

Um die Dateien für Ihre Streamlit-App zu erstellen, gehen Sie wie folgt vor:

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

  2. Optional: Wenn Sie eine mehrseitige Streamlit-App erstellen, erstellen Sie auf Ihrem lokalen Dateisystem einen Ordner mit dem Namen pages und fügen die zusätzlichen Streamlit-Seiten in diesen Unterordner ein.

  3. Optional: Um externe Pakete in Ihre Streamlit-App einzubinden, erstellen Sie eine Datei environment.yml. Einzelheiten zur Einbindung externer Pakete finden Sie unter Installation von Paketen mithilfe der Datei environment.yml.

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

└── streamlit/
    └── environment.yml
    └── streamlit_main.py
    └── pages/
         └── data_frame_demo.py
         └── plot_demo.py
Copy

Bemerkung

Die Datei environment.yml und der optionale Unterorder pages müssen sich auf derselben Ebene befinden wie Ihre Streamlit-Hauptdatei. Alle zusätzlichen Streamlit-Seiten müssen in den Unterordner pages aufgenommen werden.

Hochladen Ihrer Streamlit-Dateien in einen benannten Stagingbereich

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_root_folder>/streamlit/streamlit_main.py @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
    PUT file:///<path_to_your_root_folder>/streamlit/environment.yml @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
    PUT file:///<path_to_your_root_folder>/streamlit/pages/streamlit_page_2.py @streamlit_db.streamlit_schema.streamlit_stage/pages/ overwrite=true auto_compress=false;
    PUT file:///<path_to_your_root_folder>/streamlit/pages/streamlit_page_3.py @streamlit_db.streamlit_schema.streamlit_stage/pages/ overwrite=true auto_compress=false;
    
    Copy

Erstellen eines STREAMLIT-Objekts

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
    ROOT_LOCATION = '@streamlit_db.streamlit_schema.streamlit_stage'
    MAIN_FILE = '/streamlit_main.py'
    QUERY_WAREHOUSE = my_warehouse;
    
    Copy

    Mit diesem Befehl wird ein STREAMLIT-Objekt mit dem Namen hello_streamlit auf der Grundlage des in ROOT_LOCATION 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. Um zu überprüfen, ob das Streamlit-Objekt erstellt wurde, führen Sie den Befehl SHOW STREAMLITS aus, wie im folgenden Beispiel gezeigt:

    SHOW STREAMLITS;
    
    Copy

Installation von Paketen mithilfe der Datei environment.yml

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

  1. Fügen Sie eine environment.yml-Datei zu der App hinzu.

  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.

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.

Ändern eines vorhandenen STREAMLIT-Objekts

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