CREATE STREAMLIT¶
Cria um novo objeto Streamlit no Snowflake ou substitui um objeto Streamlit existente no mesmo esquema.
- Consulte também:
SHOW STREAMLITS, DESCRIBE STREAMLIT, ALTER STREAMLIT, DROP STREAMLIT, UNDROP STREAMLIT
Sintaxe¶
A sintaxe a seguir é herdada:
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.
Parâmetros obrigatórios¶
nameEspecifica o identificador (ou seja, nome) do objeto Streamlit. Este novo identificador deve ser exclusivo para o esquema em que o objeto é criado.
Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a string do identificador esteja entre aspas duplas (por exemplo,
"My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.Para obter mais detalhes, consulte Requisitos para identificadores.
Parâmetros opcionais¶
FROM source_locationCopia os arquivos de origem do aplicativo do local especificado. O local deve estar dentro de um estágio nomeado interno. O caminho pode ser relativo ou totalmente qualificado. Por exemplo, se o estágio for nomeado
@streamlit_db.streamlit_schema.streamlit_stage, os locais de origem válidos podem incluir:Um caminho totalmente qualificado para a raiz do estágio:
FROM '@streamlit_db.streamlit_schema.streamlit_stage'Um caminho relativo para a raiz do estágio:
FROM '@streamlit_stage'Um caminho totalmente qualificado ou relativo para um subdiretório dentro do estágio:
FROM '@streamlit_db.streamlit_schema.streamlit_stage/subdir'
Os arquivos são copiados apenas uma vez quando o CREATE o comando é executado; Alterações futuras no local de origem não atualizam automaticamente o aplicativo Streamlit.
Se esse parâmetro não for especificado, o Snowflake copiará os arquivos de origem para um aplicativo padrão com um
streamlit_app.pyArquivo de ponto de entrada.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: o 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 você usa 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.
DEFAULT:
'streamlit_app.py'QUERY_WAREHOUSE = warehouse_nameEspecifica 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.
DEFAULT: sem valor
Nota
Embora você possa criar um objeto Streamlit sem esse parâmetro, o aplicativo não será executado até que você especifique um warehouse de consultas.
RUNTIME_NAME = 'runtime_name'Especifica o ambiente de tempo de execução para o app Streamlit. O tempo de execução determina onde e como o app é executado.
Tempo de execução de warehouse: executar o app em um warehouse virtual. Cada visualizador recebe uma instância pessoal do app. Use
SYSTEM$WAREHOUSE_RUNTIME. A versão Python é selecionada separadamente usando o arquivoenvironment.yml.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 nomes dos tempos de execução de contêiner incluem a versão Python. Os seguintes tempos de execução de contêiner são válidos:
SYSTEM$ST_CONTAINER_RUNTIME_PY3_11
O tempo de execução padrão é o do warehouse.
DEFAULT:
SYSTEM$WAREHOUSE_RUNTIMECOMPUTE_POOL = compute_pool_nameEspecifica o pool de computação em que o app Streamlit é executado. Esse parâmetro é utilizado apenas com tempos de execução de contêiner e é ignorado para tempos de execução de warehouse.
Se você omitir esse parâmetro ao usar um tempo de execução de contêiner, o Snowflake usará o pool de computação especificado pelo parâmetro DEFAULT_STREAMLIT_COMPUTE_POOL. Se o parâmetro DEFAULT_STREAMLIT_COMPUTE_POOL for atualizado após a criação do app Streamlit, isso não afetará o pool de computação utilizado pelo app.
DEFAULT: O pool de computação especificado pelo parâmetro de conta DEFAULT_STREAMLIT_COMPUTE_POOL.
COMMENT = 'string_literal'Especifica um comentário para o objeto Streamlit.
DEFAULT: sem valor
TITLE = 'app_title'Especifica um título para o objeto Streamlit exibir em Snowsight.
DEFAULT: O nome do objeto Streamlit passado para CREATE STREAMLIT.
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.
DEFAULT: sem valor
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.
DEFAULT: sem valor
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)Nos tempos de execução de warehouse, os segredos são acessados por meio do módulo
_snowflake. Nos tempos de execução de contêiner, os segredos são acessíveis por meio dest.secretse também são mapeados para variáveis de ambiente. Os segredos devem ser associados a uma integração de acesso externo em EXTERNAL_ACCESS_INTEGRATIONS. Para obter mais informações, consulte Gerenciamento de segredos e configuração do app Streamlit.DEFAULT: sem valor
ROOT_LOCATION = 'stage_path_and_root_directory'Especifica o caminho para a área de preparação nomeada que contém os arquivos Streamlit Python, arquivos de mídia e o arquivo
environment.yml, por exemplo:Neste exemplo, os arquivos Streamlit estão localizados em um estágio nomeado denominado
streamlit_stageem um banco de dados denominadostreamlit_dbe esquema denominadostreamlit_schema.Nota
Este parâmetro deve apontar para um único diretório dentro de um estágio interno nomeado.
Estágios externos não são suportados pelo Streamlit in Snowflake.
Se você estiver criando ou substituindo um objeto de aplicativo Streamlit dentro do Snowflake Native App Framework, use
FROM 'relative_path_from_stage_root_directory'em vez deROOT_LOCATION = 'stage_path_and_root_directory'.
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 |
|---|---|---|
CREATE STREAMLIT |
Esquema onde você cria o objeto Streamlit |
|
READ |
Estágio de onde você copia os arquivos de origem do aplicativo Streamlit |
|
USAGE |
Warehouse usado pelo app Streamlit |
|
USAGE |
Pool de computação usado pelo app Streamlit |
Esse privilégio será necessário apenas se seu app usar um tempo de execução de contêiner. |
USAGE |
Integrações de acesso externo usadas pelo app Streamlit |
Esse privilégio será necessário apenas se seu app usar integrações de acesso externo. Para tempos de execução de contêiner, esse privilégio é necessário para instalar pacotes de índices de pacotes externos como PyPI. |
USAGE |
Segredos usados pelo app Streamlit |
Esse privilégio será necessário apenas se seu app usar segredos e será aplicado somente a tempos de execução de warehouse. |
CREATE STAGE |
Esquema onde você cria o objeto Streamlit |
Este privilégio só é necessário para criar objetos Streamlit com o ROOT_LOCATION Parâmetro. |
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¶
Você deve inicializar o aplicativo após criá-lo.
Importante
Depois de usar a CREATE STREAMLIT, o aplicativo Streamlit não estará ativo até que você execute uma das seguintes ações:
Executar ALTER STREAMLIT … ADD LIVE VERSION FROM LAST no novo objeto Streamlit.
Acesse o aplicativo em Snowsight com a função proprietária do aplicativo.
Quando você clona um esquema ou banco de dados contendo um objeto Streamlit, o objeto Streamlit não é clonado.
Para especificar os pacotes usados pelo aplicativo Streamlit, inclua um arquivo de dependência nos arquivos de origem. O formato do arquivo de dependência depende do tipo de tempo de execução:
Tempo de execução de warehouse: use um arquivo
environment.yml.Tempo de execução de contêiner: use um arquivo
pyproject.tomlourequirements.txt.
Para obter mais informações, consulte Gerenciamento de dependências para o app Streamlit.
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.
As cláusulas OR REPLACE e IF NOT EXISTS são mutuamente exclusivas. Os dois não podem ser usados na mesma instrução.
Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.
Exemplos¶
Criação de app Streamlit com arquivos de origem padrão¶
Para criar um app Streamlit de tempo de execução de contêiner com base nos arquivos padrão integrados, execute o comando CREATE STREAMLIT como mostrado no exemplo a seguir:
Por padrão, os apps usam o tempo de execução de warehouse mais recente se RUNTIME_NAME não é especificado. Para criar um app Streamlit de tempo de execução de warehouse com base nos arquivos padrão internos, execute o comando CREATE STREAMLIT como mostrado no exemplo a seguir:
Criação de app Streamlit com base em arquivos de origem personalizados¶
Para criar um app Streamlit de tempo de execução de contêiner com base em arquivos de origem personalizados, execute o comando CREATE STREAMLIT como mostrado no exemplo a seguir:
Para criar um app Streamlit de tempo de execução de warehouse com base em arquivos de origem personalizados, execute o comando CREATE STREAMLIT como mostrado no exemplo a seguir:
Criação de app Streamlit de tempo de execução de warehouse com segredos¶
Para criar um app Streamlit de tempo de execução de warehouse com segredos, execute o comando CREATE STREAMLIT como mostrado no exemplo a seguir:
Para apps de tempo de execução de contêiner, os segredos são acessíveis por meio de st.secrets e como variáveis de ambiente. Para obter mais informações, consulte Gerenciamento de segredos e configuração do app Streamlit.
Criação de app Streamlit de um repositório Git¶
Para criar um app Streamlit de um repositório Git, execute o comando CREATE STREAMLIT conforme mostrado no exemplo a seguir:
