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

O Snowflake Native App Framework oferece suporte à versão v1.22.0 da biblioteca Streamlit. O suporte para versões posteriores da biblioteca Streamlit será incluído à medida que forem lançadas.

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:

Fluxo de trabalho para criar e testar um aplicativo Streamlit

O fluxo de trabalho a seguir descreve um fluxo de trabalho típico para incluir um aplicativo Streamlit em um pacote de aplicativos. Dependendo dos requisitos do seu aplicativo, este pode ser um processo iterativo.

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

  2. Revise as seções a seguir para entender a versão compatível da biblioteca Streamlit e os recursos não suportados:

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

  4. 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 seu aplicativo.

  5. Adicione uma entrada para o aplicativo Streamlit ao arquivo manifest.yml.

    Para incluir um aplicativo Streamlit, você deve incluir o nome do arquivo Streamlit padrão no arquivo manifest.yml. Consulte Adição de um aplicativo Streamlit ao arquivo de manifesto para obter mais informações.

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

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

  8. Faça upload dos arquivos Streamlit, arquivo environment.yml, script de configuração e arquivos manifest.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.

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

  10. 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
Copy

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.

Adição de um aplicativo Streamlit ao arquivo de manifesto

Para incluir um arquivo Streamlit em um pacote de aplicativo, adicione as seguintes entradas no arquivo manifest.yml.

artifacts:
  ...
  extension_code: true
  default_streamlit: app_schema.streamlit_app_na
  ...
Copy

A entrada extension_code: true é necessária para habilitar qualquer código de extensão em seu aplicativo.

A entrada default_streamlit: app_schema.streamlit_app_na especifica o local do esquema que contém seu aplicativo Streamlit.

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

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
Copy

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.

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

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 Criação de um objeto de aplicativo.

Teste do aplicativo Streamlit no Snowsight

Para testar o aplicativo Streamlit, visualize-o em Snowsight fazendo o seguinte:

  1. Entre em Snowsight.

  2. Na barra de navegação à esquerda, selecione Streamlit.

  3. Selecione o aplicativo Streamlit que deseja visualizar.

    O aplicativo Streamlit principal é aberto em Snowsight.

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