Adição de experiência front-end a um aplicativo usando Streamlit¶
Este tópico descreve como incluir um aplicativo Streamlit em um Snowflake Native App.
Sobre Streamlit e o Snowflake Native App Framework¶
Streamlit é uma biblioteca Python de código aberto que facilita a criação e o compartilhamento de aplicativos da Web personalizados para aprendizado de máquina e ciência de dados. Ao usar o Streamlit, você pode criar e implantar rapidamente aplicativos de dados poderosos.
Para obter informações sobre a biblioteca de código aberto, consulte a documentação da biblioteca Streamlit.
Dentro do Snowflake Native App Framework você pode usar o Streamlit para realizar o seguinte:
Crie um aplicativo da web front-end que permita aos consumidores visualizar os dados fornecidos pelo seu Snowflake Native App.
Crie uma interface de usuário que permita aos consumidores conceder privilégios e criar referências a objetos em suas contas que são usados pelo Snowflake Native App.
Consulte Solicitação de acesso a objetos em uma conta de consumidor para obter mais informações.
Nota
Consulte Recursos Streamlit não suportados para obter mais informações sobre recursos Streamlit não suportados.
Versões suportadas da biblioteca Streamlit¶
Snowflake Native App Framework oferece suporte às seguintes versões da biblioteca Streamlit:
1.35.0
1.31.1
1.29.0
1.26.0
1.22.0
O suporte para versões mais recentes da biblioteca Streamlit será incluído à medida que forem lançadas.
Consulte Definição da versão do Streamlit para um aplicativo para obter informações sobre como definir a versão de um aplicativo Streamlit.
Pacotes externos suportados¶
Por padrão, um aplicativo Streamlit incluído em um Snowflake Native App inclui os pacotes python
, streamlit
e snowflake-snowpark-python
pré-instalados no ambiente do consumidor. O ambiente do consumidor também tem acesso às dependências exigidas por esses pacotes.
Recursos Streamlit não suportados¶
Os seguintes recursos do Streamlit não são suportados atualmente ao usar o Streamlit em um Snowflake Native App:
Componentes personalizados não são suportados.
Não há suporte para o uso do Azure Private Link para acessar um aplicativo Streamlit.
-
As propriedades
page_title
epage_icon
do comando st.set_page_config não são suportadas. Componentes personalizados, incluindo:
Os seguintes recursos experimentais:
HTML inseguro usando
unsafe_allow_html=True
não é suportado em st.markdown.Acesso à rede via internet
Links de âncora
Fluxo de trabalho para criar e testar um aplicativo Streamlit¶
Desenvolva seu aplicativo nativo.
Isso inclui adicionar o conteúdo de dados que você deseja que os consumidores acessem usando o Streamlit. Consulte Fluxo de trabalho do Snowflake Native App Framework para obter mais informações.
Revise as seções a seguir para entender a versão compatível da biblioteca Streamlit e os recursos não suportados:
Crie um aplicativo Streamlit.
Consulte a documentação da biblioteca Streamlit para obter informações sobre como usar a biblioteca de código aberto Streamlit.
Crie uma estrutura de diretório local para o aplicativo Streamlit.
Consulte Exemplo de estrutura de diretório de um aplicativo Streamlit para recomendações sobre como organizar seus arquivos Streamlit dentro da estrutura do aplicativo.
Adicione uma instrução CREATE STREAMLIT ao script de configuração.
Ao executar o comando CREATE APPLICATION, o script de configuração executa a instrução CREATE STREAMLIT para criar um objeto Streamlit. Este objeto contém o esquema e os arquivos Python exigidos pelo aplicativo Streamlit.
Configure o arquivo
environment.yml
para incluir bibliotecas adicionais em seu aplicativo Streamlit.Consulte Adição de pacotes adicionais a um aplicativo Streamlit para obter mais informações.
Opcional: Adicione o nome do objeto Streamlit como uma entrada no arquivo
manifest.yaml
para exibir o aplicativo Streamlit como o aplicativo padrão no Snowsight.Consulte Adição de um aplicativo Streamlit ao arquivo de manifesto para obter mais informações.
Faça upload dos arquivos Streamlit, arquivo
environment.yml
, script de configuração e arquivosmanifest.yml
para um estágio nomeado. Para incluir arquivos de código Streamlit em um pacote de aplicativos, os arquivos devem ser carregados em um estágio nomeado.Teste o pacote de aplicativo.
Depois de criar os arquivos exigidos pelo pacote de aplicativo e pelo aplicativo Streamlit, crie um objeto de aplicativo para testar o script de configuração e o arquivo
manifest.yml
.Consulte Teste o pacote de aplicativo que contém o aplicativo Streamlit para obter mais informações.
Veja o aplicativo Streamlit em Snowsight.
Para testar o aplicativo Streamlit, visualize-o em Snowsight. Consulte Teste do aplicativo Streamlit no Snowsight.
Exemplo de estrutura de diretório de um aplicativo Streamlit¶
Como outros módulos Python, para adicionar um aplicativo Streamlit a um pacote de aplicativo, você deve carregar seus arquivos de código Streamlit em um estágio nomeado. Consulte PUT para obter informações sobre como fazer upload de arquivos para um estágio.
Para contabilizar várias versões de um Snowflake Native App, considere usar uma estrutura de diretório semelhante à seguinte para manter seus aplicativos Streamlit e arquivos de aplicativos relacionados:
@test.schema1.stage1:
└── /
├── manifest.yml
├── readme.md
├── scripts/setup_script.sql
└── code_artifacts/
└── streamlit/
└── environment.yml
└── streamlit_app.py
Observe que a estrutura de diretórios que você cria depende dos requisitos do seu aplicativo e do ambiente de desenvolvimento.
Nota
O arquivo environment.yml
deve estar no mesmo nível do arquivo principal do aplicativo Streamlit.
Consulte Referência a arquivos de código externos para obter mais informações sobre caminhos relativos.
Criação do objeto Streamlit no script de configuração¶
O exemplo a seguir mostra como usar CREATE STREAMLIT no script de configuração de um aplicativo.
CREATE OR REPLACE STREAMLIT app_schema.my_test_app_na
FROM '/code_artifacts/streamlit'
MAIN_FILE = '/streamlit_app.py';
GRANT USAGE ON SCHEMA APP_SCHEMA TO APPLICATION ROLE app_public;
GRANT USAGE ON STREAMLIT APP_SCHEMA.MY_TEST_APP_NA TO APPLICATION ROLE app_public;
Este exemplo cria um objeto Streamlit em um esquema denominado app_schema
. O comando CREATE STREAMLIT usa o aplicativo Streamlit especificado na cláusula MAIN_FILE. A localização do diretório é especificada pelo valor da cláusula FROM.
Consulte Exemplo de estrutura de diretório de um aplicativo Streamlit para obter informações sobre como criar a estrutura de diretórios para um aplicativo Streamlit em um pacote de aplicativo.
Este exemplo também concede os privilégios necessários no esquema e no objeto Streamlit para uma função de aplicativo.
Adição de pacotes adicionais a um aplicativo Streamlit¶
Use o arquivo environment.yml
para adicionar pacotes Python adicionais a um aplicativo Streamlit. Por exemplo, para adicionar a biblioteca scikit-learn
a um aplicativo Streamlit, adicione o seguinte ao arquivo environment.yml
:
name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
As propriedades name
e channels
são obrigatórias.
Além disso, a chave - snowflake
é obrigatória na propriedade channels
. Isso indica o canal Snowflake Anaconda.
Nota
Você só pode instalar pacotes listados no Canal Snowflake Anaconda. O Snowflake não oferece suporte a canais externos do Anaconda no Streamlit.
Definição da versão do Streamlit para um aplicativo¶
O Snowflake Native App Framework oferece suporte a várias versões da biblioteca Streamlit. Para definir a versão do Streamlit dentro de um Snowflake Native App, adicione streamlit
à seção dependencies
do arquivo environment.yml
conforme mostrado no exemplo a seguir:
name: sf_env
channels:
- snowflake
dependencies:
- streamlit=1.22.0|1.26.0
A Snowflake recomenda definir explicitamente a versão do Streamlit para seu aplicativo. No entanto, atualmente, se você não definir explicitamente a versão da biblioteca Streamlit, a versão 1.22.0 do Streamlit será definida como padrão.
Adição de um aplicativo Streamlit ao arquivo de manifesto¶
Para especificar o aplicativo Streamlit padrão iniciado pelo aplicativo nativo, adicione as seguintes entradas no arquivo manifest.yml
.
artifacts:
...
default_streamlit: app_schema.streamlit_app_na
...
A entrada default_streamlit: app_schema.streamlit_app_na
especifica o local do esquema que contém seu aplicativo Streamlit.
Teste o pacote de aplicativo que contém o aplicativo Streamlit¶
Para testar o pacote de aplicativo que contém o aplicativo Streamlit, crie um objeto de aplicativo usando os arquivos em um estágio nomeado executando CREATE APPLICATION conforme mostrado no exemplo a seguir:
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package USING '@hello_snowflake_code.core.hello_snowflake_stage';
Dependendo do que você precisa testar, você pode criar o objeto de aplicativo usando outras formas do CREATE APPLICATION. Por exemplo, você pode querer testar o aplicativo Streamlit como parte de uma versão ou atualização. Consulte Instalação e teste um aplicativo localmente.
Teste do aplicativo Streamlit no Snowsight¶
Para testar o aplicativo Streamlit, visualize-o em Snowsight fazendo o seguinte:
Faça login no Snowsight.
No menu de navegação, selecione Data Products » Apps.
Selecione o aplicativo Streamlit que deseja visualizar.
O aplicativo Streamlit principal é aberto em Snowsight.
Opcional: se você estiver visualizando um aplicativo Streamlit de várias páginas, selecione uma guia para visualizar páginas adicionais.
Solução de problemas de um aplicativo Streamlit no Snowflake Native App Framework¶
Se o aplicativo exibir um erro desconhecido, certifique-se de ter tentado as soluções descritas nas seções a seguir.
Confirmação dos termos de serviço¶
Para usar o Streamlit e os pacotes fornecidos pela Anaconda no Snowflake, você deve confirmar os Termos de ofertas externas. Para saber mais, consulte Como usar pacotes de terceiros do Anaconda.
Lista de permissões de firewall¶
Cada aplicativo Streamlit usa um subdomínio exclusivo. Se você usar firewalls rígidos, adicione *.snowflake.app à sua lista de permissões de firewall. Adicionar esta entrada à sua lista de permissões permite que seus aplicativos se comuniquem com os servidores Snowflake sem quaisquer restrições.