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
Laden Sie Ihre Streamlit-Dateien in einen benannten Stagingbereich hoch
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.
Erstellen Sie in Ihrem lokalen Dateisystem Ihre Haupt-Streamlit-App.
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
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;
Erstellen Sie ein STREAMLIT-Objekt¶
Ein STREAMLIT-Objekt ist ein Datenbankobjekt in Snowflake, das die von Ihrer Streamlit-App benötigten Dateien kapselt.
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;
Mit diesem Befehl wird ein STREAMLIT-Objekt mit dem Namen
hello_streamlitauf 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.
Optional: Um zu überprüfen, ob das Streamlit-Objekt erstellt wurde, führen Sie den Befehl SHOW STREAMLITS aus:
SHOW STREAMLITS;
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;
Verwalten Sie die Pakete mit der environment.yml-Datei¶
So installieren Sie zusätzliche Python-Pakete in Ihrer Streamlit-App:
Erstellen Sie eine
environment.yml-Datei auf Ihrem lokalen System.Um die Datei in den Stagingbereich hochzuladen, der durch den Parameter
ROOT_LOCATIONdes Objekts STREAMLIT festgelegt ist, führen Sie den Befehl PUT aus.Die in
environment.ymlaufgefü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
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 einestreamlit-Abhängigkeit ein, wie im folgenden Beispiel gezeigt:name: sf_env channels: - snowflake dependencies: - scikit-learn - streamlit=1.31.1
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;
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;
Ä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'
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'
Ä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;
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;
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;