CREATE STREAMLIT¶
Creates a new Streamlit object in Snowflake or replaces an existing Streamlit object in the same 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 is a legacy parameter and may be deprecated in a future release. For Streamlit apps created using ROOT_LOCATION, multi-file editing and Git integration are not supported.
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¶
nameSpecifies the identifier (i.e. name) for the Streamlit object. This identifier must be unique for the schema where the object is created.
In addition, the identifier must start with an alphabetic character and can’t contain spaces or special characters unless the entire identifier string is enclosed in double quotes (e.g.
"My object"). Identifiers enclosed in double quotes are also case-sensitive.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 runtimes: The file must be in the root of the source directory specified in FROM. Only a filename is allowed, not a path.
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'.
If you are using ROOT_LOCATION instead of FROM, then MAIN_FILE can be a path relative to ROOT_LOCATION even though ROOT_LOCATION only supports warehouse runtimes.
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'Specifies a title for the Streamlit object to display in Snowsight.
DEFAULT: Der Name des Streamlit-Objekts, das an CREATE STREAMLIT übergeben wird.
IMPORTS = ( 'stage_path_and_file_name_to_read' [ , ... ] )The location (stage), path, and name of the file(s) to import. This only applies to warehouse runtimes and is ignored for container runtimes.
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'Specifies the path to the named stage containing the Streamlit Python files, media files, and the
environment.ymlfile, for example: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 |
Notes |
|---|---|---|
CREATE STREAMLIT |
Schema where you create the Streamlit object |
|
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 |
Secrets used by the Streamlit app |
Diese Berechtigung ist nur erforderlich, wenn Ihre App Geheimnisse verwendet, und sie gilt nur für Warehouse-Laufzeiten. |
CREATE STAGE |
Schema where you create the Streamlit object |
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.
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can’t both be used in the same statement.
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¶
To create a container-runtime Streamlit app from built-in default files, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool
QUERY_WAREHOUSE = my_warehouse;
By default, apps use the latest warehouse runtime if RUNTIME_NAME isn’t specified. To create a warehouse-runtime Streamlit app from built-in default files, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
QUERY_WAREHOUSE = my_warehouse;
Erstellen einer Streamlit-App aus benutzerdefinierten Quelldateien¶
To create a container-runtime Streamlit app from custom source files, run the CREATE STREAMLIT command as shown in the following example:
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;
To create a warehouse-runtime Streamlit app from custom source files, run the CREATE STREAMLIT command as shown in the following example:
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¶
To create a warehouse-runtime Streamlit app with secrets, run the CREATE STREAMLIT command as shown in the following example:
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¶
To create a Streamlit app from a Git repository, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_repo/branches/streamlit_branch/
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse;
