CREATE STREAMLIT¶
Erstellt ein neues Streamlit-Objekt in Snowflake oder ersetzt ein vorhandenes Streamlit-Objekt in demselben Schema.
Syntax¶
CREATE [ OR REPLACE ] STREAMLIT [ IF NOT EXISTS ] <name>
[ FROM <source_location> ]
[ MAIN_FILE = '<filename>' ]
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ RUNTIME_NAME = '<runtime_name>' ]
[ COMPUTE_POOL = <compute_pool_name> ]
[ COMMENT = '<string_literal>' ]
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
[ SECRETS = ( '<snowflake_secret_name>' = <snowflake_secret> [ , ... ] ) ]
Die folgende Syntax ist veraltet:
Wichtig
ROOT_LOCATION ist ein Legacy-Parameter und kann in einem zukünftigen Release veraltet sein.
Für Container-Laufzeitumgebungen wird ROOT_LOCATION nicht unterstützt.
Für Streamlit-Apps, die mit ROOT_LOCATION erstellt wurden, werden die Bearbeitung mehrerer Dateien und die Git-Integration nicht unterstützt.
CREATE [ OR REPLACE ] STREAMLIT [ IF NOT EXISTS ] <name>
ROOT_LOCATION = '<stage_path_and_root_directory>'
MAIN_FILE = '<path_to_main_file_in_root_directory>'
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ COMMENT = '<string_literal>' ]
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
Erforderliche Parameter¶
nameGibt den Bezeichner (d. h. den Namen) des Streamlit-Objekts an. Dieser Bezeichner muss für das Schema, in dem das Objekt erstellt wird, eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.
Optionale Parameter¶
FROM source_locationKopiert die Quelldateien der App vom angegebenen Speicherort. Der Speicherort muss sich innerhalb eines internen benannten Stagingbereichs befinden. Der Pfad kann relativ oder vollqualifiziert sein. Wenn der Stagingbereich beispielsweise
@streamlit_db.streamlit_schema.streamlit_stageheißt, können Quellspeicherorte folgende sein:Ein vollqualifizierter Pfad zum Stammverzeichnis des Stagingbereichs:
FROM '@streamlit_db.streamlit_schema.streamlit_stage'Ein relativer Pfad zum Stammverzeichnis des Stagingbereichs:
FROM '@streamlit_stage'Ein vollqualifizierter oder relativer Pfad zu einem Unterverzeichnis innerhalb des Stagingbereichs:
FROM '@streamlit_db.streamlit_schema.streamlit_stage/subdir'
Dateien werden nur einmal kopiert, wenn der Befehl CREATE ausgeführt wird. Zukünftige Änderungen am Quellspeicherort führen nicht automatisch zu einer Aktualisierung der Streamlit-App.
Wenn dieser Parameter nicht angegeben ist, kopiert Snowflake die Quelldateien für eine Standard-App mit einer
streamlit_app.py-Einstiegspunkt-Datei.MAIN_FILE = 'filename'Gibt die Streamlit-Einstiegspunktdatei an. Die Anforderungen hängen vom Laufzeittyp ab:
Warehouse-Laufzeiten: Die Datei muss sich im Stammverzeichnis des in FROM angegebenen Quellverzeichnisses befinden. Es ist nur ein Dateiname erlaubt, kein Pfad.
Container-Laufzeiten: Die Datei kann sich im Stammverzeichnis oder in einem Unterverzeichnis befinden. Sie können einen relativen Pfad vom Stamm des Quellverzeichnisses angeben, beispielsweise
'subdir/my_app.py'.
Wenn Sie ROOT_LOCATION anstelle von FROM verwenden, dann kann MAIN_FILE ein Pfad relativ zu ROOT_LOCATION sein, obwohl ROOT_LOCATION nur Warehouse-Laufzeiten unterstützt.
DEFAULT:
'streamlit_app.py'QUERY_WAREHOUSE = warehouse_nameGibt das Warehouse an, das von der Streamlit-App verwendet wird. Die Verhaltensweise hängt vom Laufzeittyp ab:
Warehouse-Laufzeiten: Gibt das Warehouse an, in dem die App und SQL-Abfragen ausgeführt werden sollen. Dies ist das Code-Warehouse. Es wird empfohlen, innerhalb Ihres App-Codes für Abfragen manuell zu einem anderen Warehouse zu wechseln.
Container-Laufzeiten: Gibt das Warehouse an, das SQL-Abfragen ausführen soll, die von der App ausgegeben werden. Der Code der App wird in dem von COMPUTE_POOL angegebenen Computepool ausgeführt.
DEFAULT: Kein Wert
Bemerkung
Obwohl Sie ein Streamlit-Objekt ohne diesen Parameter erstellen können, wird die App erst ausgeführt, wenn Sie ein Abfrage-Warehouse angeben.
RUNTIME_NAME = 'runtime_name'Gibt die Laufzeitumgebung für die Streamlit-App an. Die Laufzeit bestimmt, wo und wie die App ausgeführt wird. Die Namen von Laufzeitumgebungen folgen dem Muster
SYSTEM$ST_<Typ>_RUNTIME_PY<version>.Warehouse-Laufzeiten: Führen Sie die App in einem virtuellen Warehouse aus. Jeder Betrachtende erhält eine persönliche Instanz der App. Die folgenden Warehouse-Laufzeiten sind gültig:
SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_9SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_10SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11
Container-Laufzeiten: Führen Sie die App in einem Snowpark Container Services-Computepool aus. Alle Betrachtenden teilen sich eine einzige, langlaufende Instanz der App. Die folgenden Container-Laufzeiten sind gültig:
SYSTEM$ST_CONTAINER_RUNTIME_PY3_11
Die Laufzeit verwendet standardmäßig die neueste Warehouse-Laufzeit.
DEFAULT:
SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11COMPUTE_POOL = compute_pool_nameGibt den Computepool an, in dem die Streamlit-App ausgeführt wird. Dieser Parameter ist erforderlich, wenn Sie eine Container-Laufzeit verwenden, und wird bei Warehouse-Laufzeiten ignoriert.
DEFAULT: Kein Wert
COMMENT = 'string_literal'Gibt einen Kommentar für das Streamlit-Objekt an.
DEFAULT: Kein Wert
TITLE = 'app_title'Gibt einen Titel für das Streamlit-Objekt an, der in Snowsight angezeigt wird.
DEFAULT: Der Name des Streamlit-Objekts, das an CREATE STREAMLIT übergeben wird.
IMPORTS = ( 'stage_path_and_file_name_to_read' [ , ... ] )Der Speicherort (Stagingbereich), der Pfad und der Name der zu importierenden Datei(en). Dies gilt nur für Warehouse-Laufzeiten und wird für Container-Laufzeiten ignoriert.
DEFAULT: Kein Wert
EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )Die Namen der Integrationen für den externen Zugriff, die benötigt werden, damit der Code der Streamlit-App auf externe Netzwerke zugreifen kann.
Für Container-Laufzeitumgebungen sind Integrationen für den externen Zugriff erforderlich, um Pakete aus externen Paketindizes wie PyPI zu installieren. Für alle Laufzeittypen ermöglichen die Integrationen für den externen Zugriff der App, ausgehende Netzwerkanfragen zu stellen.
DEFAULT: Kein Wert
SECRETS = ( 'snowflake_secret_name' = snowflake_secret [ , ... ] )Ordnet Snowflake-Geheimnisse den Geheimnisnamen zu, auf die im Code der Streamlit-App verwiesen werden kann. Anhand des Geheimnisnamens (links) referenzieren Sie das Geheimnis in Ihrem Code, und das geheime Objekt (rechts) ist der Bezeichner des Snowflake-Geheimnisses.
Beispiel:
SECRETS = ('api_key' = my_database.my_schema.my_secret)Geheimnisse sind in Warehouse-Laufzeiten nur über das
_snowflake-Modul verfügbar und müssen mit einer Integration für den externen Zugriff in EXTERNAL_ACCESS_INTEGRATIONS verknüpft sein. In Container-Laufzeiten wird dieser Parameter nicht unterstützt, und Sie müssen SQL-Funktionen erstellen, um stattdessen auf Geheimnisse zuzugreifen. Weitere Informationen dazu finden Sie unter Verwalten von Geheimnissen und Konfigurieren der Streamlit-App.DEFAULT: Kein Wert
ROOT_LOCATION = 'stage_path_and_root_directory'Gibt den Pfad zum benannten Stagingbereich an, der z. B. die Streamlit-Python-Dateien, die Mediendateien und die Datei
environment.ymlenthält:ROOT_LOCATION = '@streamlit_db.streamlit_schema.streamlit_stage'
In diesem Beispiel befinden sich die Streamlit-Dateien in einem benannten Stagingbereich namens
streamlit_stageinnerhalb einer Datenbank namensstreamlit_dbund einem Schema namensstreamlit_schema.Bemerkung
Dieser Parameter muss auf ein einzelnes Verzeichnis innerhalb eines benannten internen Stagingbereichs verweisen.
Externe Stagingbereiche werden für Streamlit in Snowflake nicht unterstützt.
Wenn Sie ein Streamlit-Anwendungsobjekt innerhalb der Snowflake Native App Framework erstellen oder ersetzen, verwenden Sie
FROM 'relative_path_from_stage_root_directory'und nichtROOT_LOCATION = 'stage_path_and_root_directory'.
Anforderungen an die Zugriffssteuerung¶
Wenn Ihre Rolle nicht Eigentümer der Objekte in der folgenden Tabelle ist, dann muss Ihre Rolle die aufgeführten Berechtigungen für diese Objekte haben:
Berechtigung |
Objekt |
Anmerkungen |
|---|---|---|
CREATE STREAMLIT |
Schema, in dem Sie das Streamlit-Objekt erstellen |
|
READ |
Stagingbereich, aus dem Sie die Quelldateien der Streamlit-App kopieren |
|
USAGE |
Warehouse, das von der Streamlit-App verwendet wird |
|
USAGE |
Computepool, der von der Streamlit-App verwendet wird |
Diese Berechtigung ist nur erforderlich, wenn Ihre App eine Container-Laufzeit verwendet. |
USAGE |
Integrationen für den externen Zugriff, die von der Streamlit-App verwendet werden |
Diese Berechtigung ist nur erforderlich, wenn Ihre App Integrationen für den externen Zugriff verwendet. Für Container-Laufzeiten ist diese Berechtigung erforderlich, um Pakete aus externen Paketindizes wie PyPI zu installieren. |
USAGE |
Geheimnisse, die von der Streamlit-App verwendet werden |
Diese Berechtigung ist nur erforderlich, wenn Ihre App Geheimnisse verwendet, und sie gilt nur für Warehouse-Laufzeiten. |
CREATE-STAGE |
Schema, in dem Sie das Streamlit-Objekt erstellen |
Diese Berechtigung ist nur erforderlich, um Streamlit-Objekte mit dem ROOT_LOCATION-Parameter zu erstellen |
Für das Ausführen von Operationen für ein Objekt in einem Schema ist mindestens eine Berechtigung für die übergeordnete Datenbank und mindestens eine Berechtigung für das übergeordnete Schema erforderlich.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Sie müssen die App initialisieren, nachdem Sie sie erstellt haben.
Wichtig
Nachdem Sie CREATE STREAMLIT verwendet haben, ist die Streamlit-App erst verfügbar, wenn Sie eine der folgenden Aktionen ausführen:
Führen Sie ALTER STREAMLIT … ADD LIVE VERSION FROM LAST für das neue Streamlit-Objekt aus.
Rufen Sie die App in Snowsight mit der Rolle auf, der die App gehört.
Wenn Sie ein Schema oder eine Datenbank klonen, die ein Streamlit-Objekt enthält, wird das Streamlit-Objekt nicht mitgeklont.
Um die von der Streamlit-Anwendung verwendeten Pakete anzugeben, fügen Sie den Quelldateien eine Abhängigkeitsdatei hinzu. Das Format der Abhängigkeitsdatei hängt vom Laufzeittyp ab:
Warehouse-Laufzeit: Verwenden Sie eine
environment.yml-DateiContainer-Laufzeit: Verwenden Sie eine
pyproject.toml- oderrequirements.txt-Datei.
Weitere Informationen dazu finden Sie unter Verwalten von Abhängigkeiten für Ihre Streamlit-App.
Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Die Klauseln OR REPLACE und IF NOT EXISTS schließen sich gegenseitig aus. Sie können nicht beide in der gleichen Anweisung verwendet werden.
CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.
Beispiele¶
Erstellen einer Streamlit-App mit Standard-Quelldateien¶
Um eine Streamlit-App für eine Container-Laufzeit aus integrierten Standarddateien zu erstellen, führen Sie den CREATE STREAMLIT-Befehl wie im folgenden Beispiel gezeigt aus:
CREATE STREAMLIT hello_streamlit
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool
QUERY_WAREHOUSE = my_warehouse;
Standardmäßig verwenden Apps die neueste Warehouse-Laufzeit, wenn RUNTIME_NAME nicht angegeben ist. Um eine Streamlit-App für eine Container-Laufzeit aus integrierten Standarddateien zu erstellen, führen Sie den Befehl CREATE STREAMLIT wie im folgenden Beispiel gezeigt aus:
CREATE STREAMLIT hello_streamlit
QUERY_WAREHOUSE = my_warehouse;
Erstellen einer Streamlit-App aus benutzerdefinierten Quelldateien¶
Um eine Streamlit-App für eine Container-Laufzeit aus benutzerdefinierten Quelldateien zu erstellen, führen Sie den CREATE STREAMLIT-Befehl wie im folgenden Beispiel gezeigt aus:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_stage
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool;
Um eine Streamlit-App für eine Warehouse-Laufzeit aus benutzerdefinierten Quelldateien zu erstellen, führen Sie den CREATE STREAMLIT-Befehl wie im folgenden Beispiel gezeigt aus:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_stage
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse;
Erstellen einer Streamlit-App mit Geheimnissen für eine Warehouse-Laufzeit¶
Um eine Streamlit-App mit Geheimnissen für eine Warehouse-Laufzeit zu erstellen, führen Sie den CREATE STREAMLIT-Befehl wie im folgenden Beispiel gezeigt aus:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_stage
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse
SECRETS = ('api_key' = streamlit_db.streamlit_schema.my_api_secret);
Streamlit-Apps für Container-Laufzeiten müssen SQL-Funktionen für den Zugriff auf Geheimnisse verwenden. Weitere Informationen dazu finden Sie unter Verwalten von Geheimnissen und Konfigurieren der Streamlit-App.
Erstellen einer Streamlit-App aus einem Git-Repository¶
Um eine Streamlit-App aus einem Git-Repository 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_repo/branches/streamlit_branch/
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse;
