CREATE STREAMLIT

Crée un nouvel objet Streamlit dans Snowflake ou remplace un objet Streamlit existant dans le même schéma.

Voir aussi :

SHOW STREAMLITS, DESCRIBE STREAMLIT, ALTER STREAMLIT, DROP STREAMLIT, UNDROP STREAMLIT

Syntaxe

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> [ , ... ] ) ]
Copy

La syntaxe suivante est héritée :

Important

  • ROOT_LOCATION est un paramètre hérité et peut être obsolète dans une future version.

  • Pour les environnements d’exécution des conteneurs, ROOT_LOCATION n’est pas pris en charge.

  • Pour les applications Streamlit créées à l’aide de ROOT_LOCATION, la modification de plusieurs fichiers et l’intégration Git ne sont pas pris en charge.

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> [ , ... ] ) ]
Copy

Paramètres requis

name

Spécifie l’identificateur (c’est-à-dire le nom) de l’objet Streamlit. Cet identificateur doit être unique pour le schéma dans lequel l’objet est créé.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Paramètres facultatifs

FROM source_location

Copie les fichiers sources de l’application à partir de l’emplacement spécifié. L’emplacement doit se trouver dans une zone de préparation interne nommée. Le chemin peut être relatif ou entièrement qualifié. Par exemple, si la zone de préparation est nommée @streamlit_db.streamlit_schema.streamlit_stage, les emplacements sources valides peuvent inclure :

  • Un chemin d’accès complet à la racine de la zone de préparation : FROM '@streamlit_db.streamlit_schema.streamlit_stage'

  • Un chemin d’accès relatif à la racine de la zone de préparation : FROM '@streamlit_stage'

  • Un chemin relatif ou complet vers un sous-répertoire de la zone de préparation : FROM '@streamlit_db.streamlit_schema.streamlit_stage/subdir'

Les fichiers sont copiés une seule fois lorsque la commande CREATE est exécutée ; les modifications ultérieures de l’emplacement source ne mettent pas automatiquement à jour l’application Streamlit.

Si ce paramètre n’est pas spécifié, Snowflake copie les fichiers sources d’une application par défaut avec un fichier de point d’entrée streamlit_app.py.

MAIN_FILE = 'filename'

Spécifie le fichier de point d’entrée Streamlit. Les exigences dépendent du type de runtime :

  • Runtimes d’entrepôt : Ce fichier doit se trouver à la racine du répertoire source spécifié dans FROM. Seul un nom de fichier est autorisé, pas un chemin.

  • Runtimes de conteneur : Le fichier peut se trouver à la racine ou dans un sous-répertoire. Vous pouvez spécifier un chemin d’accès relatif à partir de la racine du répertoire source, comme 'subdir/my_app.py'.

Si vous utilisez ROOT_LOCATION au lieu de FROM, alors MAIN_FILE peut être un chemin relatif vers ROOT_LOCATION même si ROOT_LOCATION ne prend en charge que les runtimes d’entrepôt.

DEFAULT : 'streamlit_app.py'

QUERY_WAREHOUSE = warehouse_name

Spécifie l’entrepôt utilisé par l’application Streamlit. Le comportement de dépend du type de runtime :

  • Runtimes d’entrepôt : Spécifie l’entrepôt pour exécuter le code de l’application et exécuter les requêtes SQL. Il s’agit de l’entrepôt de code. Il est recommandé de basculer manuellement vers un autre entrepôt dans le code de votre application pour les requêtes.

  • Runtimes de conteneur : Spécifie l’entrepôt pour exécuter les requêtes SQL émises par l’application. Le code de l’application s’exécute sur le pool de calcul spécifié par COMPUTE_POOL.

DEFAULT : aucune valeur

Note

Bien que vous puissiez créer un objet Streamlit sans ce paramètre, l’application ne s’exécutera pas tant que vous n’aurez pas spécifié un entrepôt de requêtes.

RUNTIME_NAME = 'runtime_name'

Spécifie l’environnement de runtime de l’application Streamlit. Le runtime détermine où et comment l’application s’exécute. Les noms de runtimes suivent le modèle SYSTEM$ST_<type>_RUNTIME_PY<version>.

  • Runtimes d’entrepôt : Exécutent l’application dans un entrepôt virtuel. Chaque utilisateur obtient une instance personnelle de l’application. Les runtimes d’entrepôt suivants sont valides :

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_9

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_10

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11

  • Runtimes de conteneur : Exécutent l’application dans un pool de calcul Snowpark Container Services. Tous les utilisateurs partagent une seule instance de l’application de longue durée. Les runtimes de conteneurs suivants sont valides :

    • SYSTEM$ST_CONTAINER_RUNTIME_PY3_11

Le runtime est défini par défaut sur le dernier runtime d’entrepôt.

DEFAULT : SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11

COMPUTE_POOL = compute_pool_name

Spécifie le pool de calcul dans lequel l’application Streamlit s’exécute. Ce paramètre est requis lors de l’utilisation d’un runtime de conteneur et est ignoré pour les runtimes d’entrepôt.

DEFAULT : aucune valeur

COMMENT = 'string_literal'

Spécifie un commentaire pour l’objet Streamlit.

DEFAULT : aucune valeur

TITLE = 'app_title'

Spécifie un titre pour l’objet Streamlit à afficher dans Snowsight.

DEFAULT : Nom de l’objet Streamlit transmis à CREATE STREAMLIT.

IMPORTS = ( 'stage_path_and_file_name_to_read' [ , ... ] )

L’emplacement (zone de préparation), le chemin et le nom du ou des fichiers à importer. Cela ne s’applique qu’aux runtimes des entrepôts et est ignoré pour les runtimes des conteneurs.

DEFAULT : aucune valeur

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

Les noms des intégrations d’accès externe nécessaires pour que le code de l’application Streamlit puisse accéder aux réseaux externes.

Pour les runtimes de conteneurs, des intégrations d’accès externes sont nécessaires pour installer des paquets à partir d’index de paquets externes comme PyPI. Pour tous les types de runtime, les intégrations d’accès externes permettent à l’application d’effectuer des requêtes réseau sortantes.

DEFAULT : aucune valeur

SECRETS = ( 'snowflake_secret_name' = snowflake_secret [ , ... ] )

Mappage des secrets Snowflake avec des noms de secrets qui peuvent être référencés dans le code de l’application Streamlit. Le nom du secret (côté gauche) correspond à la manière dont vous référencez le secret dans votre code, et l’objet du secret (côté droit) est l’identificateur du secret Snowflake.

Par exemple : SECRETS = ('api_key' = my_database.my_schema.my_secret)

Les secrets ne sont disponibles que dans les runtimes d’entrepôt par l’intermédiaire du module _snowflake et doivent être associés à une intégration d’accès externe dans EXTERNAL_ACCESS_INTEGRATIONS. Dans les runtimes de conteneurs, ce paramètre n’est pas pris en charge. Vous devez créer des fonctions SQL pour accéder aux secrets. Pour plus d’informations, voir Gérer les secrets et configurer votre application Streamlit.

DEFAULT : aucune valeur

ROOT_LOCATION = 'stage_path_and_root_directory'

Spécifie le chemin vers la zone de préparation nommée contenant les fichiers Python Streamlit, les fichiers média et le fichier environment.yml, par exemple :

ROOT_LOCATION = '@streamlit_db.streamlit_schema.streamlit_stage'
Copy

Dans cet exemple, les fichiers Streamlit sont situés sur une zone de préparation nommée streamlit_stage au sein d’une base de données nommée streamlit_db et d’un schéma nommé streamlit_schema.

Note

  • Ce paramètre doit pointer vers un répertoire unique à l’intérieur d’une zone de préparation interne nommée.

  • Les zones de préparation externes ne sont pas prises en charge pour Streamlit in Snowflake.

  • Si vous créez ou remplacez un objet d’application Streamlit dans Snowflake Native App Framework, utilisez FROM 'relative_path_from_stage_root_directory' et non ROOT_LOCATION = 'stage_path_and_root_directory'.

Exigences en matière de contrôle d’accès

Si votre rôle ne possède pas les objets de la table suivante, votre rôle doit disposer des privilèges répertoriés sur ces objets :

Privilège

Objet

Remarques

CREATE STREAMLIT

Schéma dans lequel vous créez l’objet Streamlit

READ

Zone de préparation à partir de laquelle vous copiez les fichiers sources de l’application Streamlit

USAGE

Entrepôt utilisé par l’application Streamlit

USAGE

Pool de calcul utilisé par l’application Streamlit

Ce privilège n’est requis que si votre application utilise un runtime de conteneur.

USAGE

Intégrations d’accès externes utilisées par l’application Streamlit

Ce privilège n’est requis que si votre application utilise des intégrations d’accès externes. Pour les runtimes de conteneurs, ce privilège est nécessaire pour installer des paquets à partir d’index de paquets externes comme PyPI.

USAGE

Secrets utilisés par l’application Streamlit

Ce privilège n’est requis que si votre application utilise des secrets et ne s’applique qu’aux runtimes d’entrepôts.

CREATE STAGE

Schéma dans lequel vous créez l’objet Streamlit

Ce privilège n’est requis que pour créer des objets Streamlit avec le paramètre ROOT_LOCATION.

Pour effectuer une opération sur un objet dans un schéma, il est nécessaire de disposer d’au moins un privilège sur la base de données parente et d’au moins un privilège sur le schéma parent.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Vous devez initialiser l’application après l’avoir créée.

    Important

    Après avoir utilisé CREATE STREAMLIT, l’application Streamlit n’est pas active tant que vous n’avez pas effectué l’une des actions suivantes :

    • Exécutez ALTER STREAMLIT … ADD LIVE VERSION FROM LAST sur le nouvel objet Streamlit.

    • Consultez l’application dans Snowsight avec le rôle qui possède l’application.

  • Lorsque vous clonez un schéma ou une base de données contenant un objet Streamlit, l’objet Streamlit n’est pas cloné.

  • Pour spécifier les paquets utilisés par l’application Streamlit, incluez un fichier de dépendance dans les fichiers sources. Le format du fichier de dépendance dépend du type de runtime :

    • Runtime d’entrepôt : Utiliser un fichier environment.yml.

    • Runtime de conteneur : Utiliser un fichier pyproject.toml ou requirements.txt.

    Pour plus d’informations, voir Gérer les dépendances de votre application Streamlit.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

  • Les clauses OR REPLACE et IF NOT EXISTS s’excluent mutuellement. Elles ne peuvent pas être utilisées dans la même instruction.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

Exemples

Créer une application Streamlit avec des fichiers sources par défaut

Pour créer une application Streamlit avec un runtime de conteneur à partir de fichiers par défaut intégrés, exécutez la commande CREATE STREAMLIT comme indiqué dans l’exemple suivant :

CREATE STREAMLIT hello_streamlit
  RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
  COMPUTE_POOL = my_compute_pool
  QUERY_WAREHOUSE = my_warehouse;
Copy

Par défaut, les applications utilisent le dernier runtime d’entrepôt si RUNTIME_NAME n’est pas spécifié. Pour créer une application Streamlit avec un runtime d’entrepôt à partir de fichiers par défaut intégrés, exécutez la commande CREATE STREAMLIT comme indiqué dans l’exemple suivant :

CREATE STREAMLIT hello_streamlit
  QUERY_WAREHOUSE = my_warehouse;
Copy

Créer une application Streamlit à partir de fichiers sources personnalisés

Pour créer une application Streamlit avec un runtime de conteneur à partir de fichiers sources personnalisés, exécutez la commande CREATE STREAMLIT comme indiqué dans l’exemple suivant :

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;
Copy

Pour créer une application Streamlit avec un runtime d’entrepôt à partir de fichiers sources personnalisés, exécutez la commande CREATE STREAMLIT comme indiqué dans l’exemple suivant :

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

Créer une application Streamlit avec un runtime d’entrepôt avec des secrets

Pour créer une application Streamlit avec un runtime d’entrepôt avec des secrets, exécutez la commande CREATE STREAMLIT comme indiqué dans l’exemple suivant :

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);
Copy

Les applications Streamlit avec un runtime de conteneur doivent utiliser les fonctions SQL pour accéder aux secrets. Pour plus d’informations, voir Gérer les secrets et configurer votre application Streamlit.

Créer une application Streamlit à partir d’un référentiel Git

Pour créer une application Streamlit à partir d’un référentiel Git, exécutez la commande CREATE STREAMLIT comme indiqué dans l’exemple suivant :

CREATE STREAMLIT hello_streamlit
  FROM @streamlit_db.streamlit_schema.streamlit_repo/branches/streamlit_branch/
  MAIN_FILE = 'streamlit_main.py'
  QUERY_WAREHOUSE = my_warehouse;
Copy