ALTER STREAMLIT

Modifica as propriedades de um objeto Streamlit existente.

Consulte também:

CREATE STREAMLIT, SHOW STREAMLITS, DESCRIBE STREAMLIT, DROP STREAMLIT

Sintaxe

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

Para objetos Streamlit criados com ROOT_LOCATION, somente a seguinte sintaxe será aceita:

Importante

  • ROOT_LOCATION é um parâmetro legado e pode se tornar obsoleto em uma versão futura.

  • Para tempos de execução de contêiner, ROOT_LOCATION não é compatível.

  • Para apps Streamlit criados com ROOT_LOCATION, a edição de vários arquivos e a integração com o Git não são compatíveis.

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

Parâmetros

name

Identificador do objeto Streamlit. Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

SET ...

Especifica a propriedade a ser definida para o objeto Streamlit:

MAIN_FILE = 'filename'

Especifica o do arquivo de ponto de entrada do Streamlit. Os requisitos dependem do tipo de tempo de execução:

  • Tempos de execução de warehouse: esse arquivo deve estar na raiz do diretório de origem especificado em FROM. Somente um nome de arquivo é permitido, não um caminho.

  • Tempos de execução de contêiner: o arquivo pode estar na raiz ou em um subdiretório. Você pode especificar um caminho relativo da raiz do diretório de origem, como 'subdir/my_app.py'.

    Se o app foi criado com ROOT_LOCATION em vez de FROM, MAIN_FILE pode ser um caminho relativo a ROOT_LOCATION, mesmo que ROOT_LOCATION seja compatível apenas com tempos de execução de warehouse.

QUERY_WAREHOUSE = warehouse_name

Especifica o warehouse usado pelo app Streamlit. O comportamento depende do tipo de tempo de execução:

  • Tempos de execução de warehouse: especifica o warehouse para executar o código do app e consultas SQL. Trata-se do warehouse de código. É recomendável alternar manualmente para um warehouse diferente no código do app no caso de consultas.

  • Tempos de execução de contêiner: especifica o warehouse para executar consultas SQL emitidas pelo app. O código do app é executado no pool de computação especificado por COMPUTE_POOL.

RUNTIME_NAME = 'runtime_name'

Especifica o ambiente de tempo de execução para o app Streamlit. Use-o para mudar o tempo de execução de warehouse para contêiner, de contêiner para warehouse ou de uma versão para outra. Os nomes dos tempos de execução seguem o padrão SYSTEM$ST_<tipo>_RUNTIME_PY<version>.

  • Tempos de execução de warehouse: executar o app em um warehouse virtual. Cada visualizador recebe uma instância pessoal do app. Os seguintes tempos de execução de warehouse são válidos:

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_9

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_10

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11

  • Tempos de execução de contêiner: executar o app em um pool de computação do Snowpark Container Services. Todos os visualizadores compartilham uma única instância de longa execução do app. Os seguintes tempos de execução de contêiner são válidos:

    • SYSTEM$ST_CONTAINER_RUNTIME_PY3_11

Importante

Ao alterar de um tempo de execução de warehouse para um de contêiner, você também deve definir o parâmetro COMPUTE_POOL conforme apropriado. Os tempos de execução de contêiner exigem um pool de computação.

COMPUTE_POOL = compute_pool_name

Especifica o pool de computação em que o app Streamlit é executado. Esse parâmetro é necessário ao usar um tempo de execução de contêiner e é ignorado para tempos de execução de warehouse.

COMMENT = 'string_literal'

Adiciona um comentário ou substitui um comentário existente do objeto Streamlit.

TITLE = 'app_title'

Adiciona um título para o aplicativo Streamlit exibir em Snowsight.

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

O local (estágio), caminho e nome do(s) arquivo(s) a ser(em) importado(s). Isso se aplica apenas aos tempos de execução de warehouse e é ignorado para os tempos de execução de contêiner.

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

Os nomes das integrações de acesso externo necessárias para que o código do aplicativo Streamlit acesse redes externas.

Para tempos de execução de contêiner, as integrações de acesso externo são necessárias para instalar pacotes de índices de pacotes externos como PyPI. Para todos os tipos de tempo de execução, as integrações de acesso externo permitem que o app faça solicitações de rede de saída.

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

Mapeia os segredos do Snowflake para os nomes dos segredos que podem ser referenciados no código do app Streamlit. O nome do segredo (lado esquerdo) é como você faz referência ao segredo em seu código, e o objeto do segredo (lado direito) é o identificador do segredo do Snowflake.

Por exemplo: SECRETS = ('api_key' = my_database.my_schema.my_secret)

Os segredos só estão disponíveis em tempos de execução de warehouse por meio do módulo _snowflake e devem estar associados a uma integração de acesso externo em EXTERNAL_ACCESS_INTEGRATIONS. Nos tempos de execução de contêiner, esse parâmetro não é compatível e, em vez disso, você deve criar funções SQL para acessar os segredos. Para obter mais informações, consulte Gerenciamento de segredos e configuração do app Streamlit.

ROOT_LOCATION = 'stage_path_and_root_directory'

Especifica o nome do estágio raiz e o prefixo que contém os arquivos Streamlit Python, arquivos de mídia e arquivo environment.yml. Este parâmetro deve apontar para um único diretório dentro de um estágio interno nomeado.

RENAME TO new_name

Especifica o novo identificador do objeto Streamlit. Esse identificador deve ser exclusivo para o esquema em que o objeto foi criado.

Para obter mais detalhes sobre os identificadores de, consulte Requisitos para identificadores.

COMMIT

Confirma as edições pendentes no LIVE versão para um novo LAST versão. Imediatamente após a confirmação, o LIVE A versão do é idêntica à do LAST versão.

PUSH

Envia as últimas alterações confirmadas para o repositório Git, usando a ramificação armazenada na versão base se TO git_branch_uri não for especificado.

Se a versão base não for baseada em uma ramificação do Git, isso gera um erro.

TO git_branch_uri

Envia as alterações confirmadas para o ramo especificado.

GIT_CREDENTIALS = snowflake_secret

Especifica o segredo do Snowflake contendo as credenciais a serem usadas para autenticação no repositório.

USERNAME = git_username

Especifica um nome de usuário do Git.

PASSWORD = git_password

Especifica uma senha do Git.

NAME = git_author_name

Especifica o nome do autor do git a ser usado.

EMAIL = git_author_email

Especifica um endereço de e-mail válido para ser usado como o nome do autor do git.

COMMENT = git_push_comment

Especifica um comentário a ser incluído no git push.

ABORT

Remove a versão ativa atual do aplicativo, incluindo todas as edições feitas em Snowsight que não foram comprometidos.

PULL

Extrai as alterações mais recentes. Você deve anular a versão ativa atual antes de removê-la.

ADD LIVE VERSION FROM LAST

Cria uma nova versão ativa do aplicativo com base na última versão confirmada.

Quando o proprietário de um aplicativo Streamlit abre o aplicativo em Snowsight e não existir uma versão ativa, esse comando será executado automaticamente. Se um usuário diferente visitar o aplicativo e uma versão ativa não existir, um erro será retornado.

Requisitos de controle de acesso

Se sua função não possuir os objetos na tabela a seguir, sua função deverá ter os privilégios listados sobre esses objetos:

Privilégio

Objeto

Notas

OWNERSHIP

Objeto Streamlit que você altera

USAGE

Warehouse usado pelo app Streamlit

Esse privilégio será necessário apenas se você definir um novo valor para QUERY_WAREHOUSE.

USAGE

Pool de computação usado pelo app Streamlit

Esse privilégio será necessário apenas se você definir um novo valor para COMPUTE_POOL.

USAGE

Integrações de acesso externo usadas pelo app Streamlit

Esse privilégio será necessário apenas se você definir um novo valor para EXTERNAL_ACCESS_INTEGRATIONS.

USAGE

Segredos usados pelo app Streamlit

Esse privilégio será necessário apenas se você definir um novo valor para SECRETS.

A operação em um objeto de esquema requer pelo menos um privilégio no banco de dados pai e um privilégio no esquema pai.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Se você remover a versão ativa do aplicativo, um usuário não poderá visitar o aplicativo até que você execute uma das seguintes ações:

    • Executar ALTER STREAMLIT … ADD LIVE VERSION FROM LAST no objeto Streamlit.

    • Acesse o aplicativo em Snowsight com a função proprietária do aplicativo.

  • Se você executar o comando ALTER STREAMLIT ao visualizar um app Streamlit no Snowsight, o app refletirá as alterações de forma diferente, dependendo do tipo de tempo de execução:

    • Tempo de execução de warehouse: o app não reflete as alterações até você selecionar Run.

    • Tempo de execução de contêiner: o app refletirá as alterações imediatamente na próxima vez que você interagir com o app.

    Se você deseja que suas alterações sejam refletidas no aplicativo, você deve recarregar ou reiniciar o aplicativo.

  • Ao migrar do tempo de execução de warehouse para o de contêiner:

    • Você deve definir ambos RUNTIME_NAME e COMPUTE_POOL.

    • O app deve usar o Python 3.11 e o Streamlit 1.50 ou versões mais recentes.

    • Garanta que o código do seu app seja thread-safe e otimizado para visualizadores simultâneos.

    • Substitua get_active_session() por st.connection("snowflake").

    • Substitua o módulo _snowflake pelos equivalentes nativos do Python.

    Para uma lista de verificação completa de migração, consulte Migração entre ambientes de tempo de execução.

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Alteração do warehouse de consulta

Para alterar o warehouse usado por um app Streamlit, execute o comando ALTER STREAMLIT como mostrado no exemplo a seguir:

ALTER STREAMLIT my_app
  SET QUERY_WAREHOUSE = new_warehouse;
Copy

Migração do tempo de execução de warehouse para o de contêiner

Para migrar um app Streamlit do tempo de execução de warehouse para o de contêiner, execute o comando ALTER STREAMLIT como mostrado no exemplo a seguir:

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

Os tempos de execução de contêiner exigem uma integração de acesso externo para instalar pacotes de índices de pacotes externos como PyPI. Caso contrário, eles só poderão usar os pacotes pré-instalados padrão. Para obter mais informações, consulte Gerenciamento de dependências para o app Streamlit.

Adição de segredos a um app de tempo de execução de warehouse existente

Para adicionar segredos a um app Streamlit de tempo de execução de warehouse existente, execute o ALTER STREAMLIT como mostrado no exemplo a seguir:

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

Os segredos estão disponíveis apenas em tempos de execução de warehouse e devem ser associados a uma integração de acesso externo. Os apps Streamlit de tempo de execução de contêiner devem usar funções SQL para acessar segredos. Para obter mais informações, consulte Gerenciamento de segredos e configuração do app Streamlit.

Renomeação de um aplicativo Streamlit

Para renomear um app Streamlit, execute o comando ALTER STREAMLIT como mostrado no exemplo a seguir:

ALTER STREAMLIT old_app_name
  RENAME TO new_app_name;
Copy