ALTER STREAMLIT

Modifie les propriétés d’un objet Streamlit existant.

Voir aussi :

CREATE STREAMLIT, SHOW STREAMLITS, DESCRIBE STREAMLIT, DROP STREAMLIT

Syntaxe

ALTER STREAMLIT [ IF EXISTS ] <name> SET
  [ 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> [ , ... ] ) ]

ALTER STREAMLIT [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER STREAMLIT <name> COMMIT

ALTER STREAMLIT <name> PUSH [ TO <git_branch_uri> ]
  [
    {
      GIT_CREDENTIALS = <snowflake_secret>
      | USERNAME = <git_username> PASSWORD = <git_password>
    }
    NAME = <git_author_name>
    EMAIL = <git_author_email>
  ]
  [ COMMENT = <git_push_comment> ]

ALTER STREAMLIT <name> ABORT

ALTER STREAMLIT <name> PULL

ALTER STREAMLIT <name> ADD LIVE VERSION FROM LAST
Copy

For Streamlit objects created with ROOT_LOCATION, only the following syntax is supported:

Important

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.

ALTER STREAMLIT [ IF EXISTS ] <name> SET
  [ ROOT_LOCATION = '<stage_path_and_root_directory>' ]
  [ MAIN_FILE = '<path_to_main_file>']
  [ QUERY_WAREHOUSE = <warehouse_name> ]
  [ COMMENT = '<string_literal>']
  [ TITLE = '<app_title>' ]
  [ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]

ALTER STREAMLIT [ IF EXISTS ] <name> RENAME TO <new_name>
Copy

Paramètres

name

Identificateur de l’objet Streamlit. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

SET ...

Spécifie les propriétés à définir pour l’objet Streamlit :

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'.

    If your app was created with ROOT_LOCATION instead of FROM, then MAIN_FILE can be a path relative to ROOT_LOCATION even though ROOT_LOCATION only supports warehouse runtimes.

QUERY_WAREHOUSE = warehouse_name

Specifies the warehouse used by the Streamlit app. The behavior depends on the runtime type:

  • 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.

RUNTIME_NAME = 'runtime_name'

Spécifie l’environnement de runtime de l’application Streamlit. Utilisez ceci pour modifier le runtime d’entrepôt à conteneur, de conteneur à entrepôt, ou d’une version à une autre. 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

Important

Lorsque vous passez d’un runtime d’entrepôt à un runtime de conteneur, vous devez également définir le paramètre COMPUTE_POOL comme approprié. Les runtimes de conteneurs nécessitent un pool de calcul.

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.

COMMENT = 'string_literal'

Ajoute un commentaire ou écrase un commentaire existant pour l’objet Streamlit.

TITLE = 'app_title'

Ajoute un titre à afficher dans l’application Streamlit Snowsight.

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.

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.

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.

ROOT_LOCATION = 'stage_path_and_root_directory'

Specifies the root stage name and prefix containing the Streamlit Python files, media files, and environment.yml file. This parameter must point to a single directory inside a named internal stage.

RENAME TO new_name

Specifies the new identifier for the Streamlit object. The identifier must be unique for the schema where the object was created.

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

COMMIT

Valide les modifications en attente dans la version LIVE vers une nouvelle version LAST. Immédiatement après la validation, la version LIVE est identique à la version LAST.

PUSH

Pousse les dernières modifications validées vers le référentiel Git, en utilisant la branche stockée dans la version de base si TO git_branch_uri n’est pas spécifié.

If the base version is not based on a Git branch, this throws an error.

TO git_branch_uri

Pousse les modifications validées vers la branche spécifiée.

GIT_CREDENTIALS = snowflake_secret

Spécifie le secret Snowflake contenant les identifiants de connexion à utiliser pour s’authentifier auprès du référentiel.

USERNAME = git_username

Spécifie un nom d’utilisateur Git.

PASSWORD = git_password

Spécifie un mot de passe Git.

NAME = git_author_name

Spécifie le nom de l’auteur git à utiliser.

EMAIL = git_author_email

Spécifie une adresse électronique valide à utiliser comme nom d’auteur git.

COMMENT = git_push_comment

Spécifie un commentaire à inclure dans le push git.

ABORT

Supprime la version live actuelle de l’application, y compris toutes les modifications apportées dans Snowsight qui n’ont pas été validées.

PULL

Extrait les dernières modifications. Vous devez annuler la version live actuelle avant d’extraire.

ADD LIVE VERSION FROM LAST

Crée une nouvelle version live de l’application sur la base de la dernière version validée.

Lorsque le propriétaire d’une application Streamlit ouvre l’application dans Snowsight et qu’il n’existe pas de version live, cette commande est exécutée automatiquement. Si un autre utilisateur consulte l’application et qu’une version live n’existe pas, une erreur est renvoyée.

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

If your role does not own the objects in the following table, then your role must have the listed privileges on those objects:

Privilège

Objet

Notes

OWNERSHIP

Objet Streamlit que vous modifiez

USAGE

Entrepôt utilisé par l’application Streamlit

Ce privilège n’est requis que si vous définissez une nouvelle valeur pour QUERY_WAREHOUSE.

USAGE

Pool de calcul utilisé par l’application Streamlit

Ce privilège n’est requis que si vous définissez une nouvelle valeur pour COMPUTE_POOL.

USAGE

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

Ce privilège n’est requis que si vous définissez une nouvelle valeur pour EXTERNAL_ACCESS_INTEGRATIONS.

USAGE

Secrets utilisés par l’application Streamlit

Ce privilège n’est requis que si vous définissez une nouvelle valeur pour SECRETS.

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

  • Si vous supprimez la version live de l’application, un utilisateur ne peut pas consulter l’application tant que vous n’avez pas effectué l’une des actions suivantes :

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

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

  • If you run the ALTER STREAMLIT command while viewing a Streamlit app in Snowsight, the app reflects the changes differently depending on the runtime type:

    • Runtime d’entrepôt : L’application ne reflète pas les modifications tant que vous n’avez pas sélectionné Run.

    • Runtime de conteneur : L’application reflète les modifications immédiatement lors de la prochaine interaction avec l’application.

    Si vous souhaitez que vos modifications soient prises en compte dans l’application, vous devez recharger ou redémarrer l’application.

  • Lors de la migration du runtime d’entrepôt vers le runtime de conteneur :

    • Vous devez définir RUNTIME_NAME et COMPUTE_POOL.

    • Votre application doit utiliser Python 3.11 et Streamlit 1.49 ou une version supérieure.

    • Veillez à ce que le code de votre application soit « thread-safe » et optimisé pour les utilisateurs simultanés.

    • Remplacez get_active_session() par st.connection("snowflake").

    • Remplacez le module _snowflake par des équivalents Python natifs.

    Pour une liste de contrôle complète de la migration, voir Migration entre des environnements d’exécution.

  • 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.

Exemples

Modifier l’entrepôt de requêtes

Pour modifier l’entrepôt utilisé par une application Streamlit, exécutez la commande ALTER STREAMLIT comme indiqué dans l’exemple suivant :

ALTER STREAMLIT my_app
  SET QUERY_WAREHOUSE = new_warehouse;
Copy

Migrer d’un runtime d’entrepôt vers un runtime de conteneur

Pour migrer une application Streamlit de runtime d’entrepôt vers runtime de conteneur, exécutez la commande ALTER STREAMLIT comme indiqué dans l’exemple suivant :

ALTER STREAMLIT my_app SET
  RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
  COMPUTE_POOL = my_compute_pool
  EXTERNAL_ACCESS_INTEGRATIONS = (pypi_access_integration);
Copy

Les runtimes de conteneur nécessitent une intégration d’accès externe pour installer des paquets à partir d’index de paquets externes comme PyPI. Sinon, ils ne peuvent utiliser que les paquets préinstallés par défaut. Pour plus d’informations, voir Gérer les dépendances de votre application Streamlit.

Ajouter des secrets à une application de runtime d’entrepôt existante

Pour ajouter des secrets à une application Streamlit de runtime d’entrepôt existante, exécutez la commande ALTER STREAMLIT comme indiqué dans l’exemple suivant :

ALTER STREAMLIT my_app SET
  EXTERNAL_ACCESS_INTEGRATIONS = (my_access_integration)
  SECRETS = ('api_key' = my_database.my_schema.my_api_secret);
Copy

Les secrets sont uniquement disponibles dans les runtimes d’entrepôt et doivent être associés à une intégration d’accès externe. 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.

Rename a Streamlit app

Pour renommer une application Streamlit, exécutez la commande ALTER STREAMLIT comme indiqué dans l’exemple suivant :

ALTER STREAMLIT old_app_name
  RENAME TO new_app_name;
Copy