Exemplo: Criar um painel de dados personalizado

Este exemplo orienta você na criação de um app Streamlit in Snowflake que consulta dados do Snowflake, adiciona uma biblioteca de gráficos de terceiros e personaliza a exibição para cada visualizador. Ao final, você entenderá o ciclo de desenvolvimento principal: criar, implantar, editar e reimplantar.

O app usa um tempo de execução de contêiner. Antes de começar, certifique-se de ter concluído os pré-requisitos.

Configurar dados de amostra

Este exemplo usa um banco de dados chamado dashboard_demo. Você pode substituir por qualquer banco de dados e esquema aos quais tenha acesso; basta atualizar as referências no código do app e SQL para que correspondam.

Crie uma tabela com dados de receita de amostra. Execute o seguinte SQL em uma planilha ou sessão SQL:

CREATE OR REPLACE TABLE dashboard_demo.public.monthly_revenue (
   month DATE,
   region VARCHAR,
   revenue NUMBER(12, 2)
);

INSERT INTO dashboard_demo.public.monthly_revenue VALUES
   ('2026-01-01', 'North America', 125000.00),
   ('2026-01-01', 'Europe', 98000.00),
   ('2026-01-01', 'Asia Pacific', 87000.00),
   ('2026-02-01', 'North America', 132000.00),
   ('2026-02-01', 'Europe', 101000.00),
   ('2026-02-01', 'Asia Pacific', 93000.00),
   ('2026-03-01', 'North America', 141000.00),
   ('2026-03-01', 'Europe', 110000.00),
   ('2026-03-01', 'Asia Pacific', 99000.00);

Escrever o código do app

Em sua máquina local, em um diretório de projeto de sua escolha, crie um arquivo chamado streamlit_app.py com o seguinte código. Se você planeja usar o Snowsight, pode colar este código no editor após criar o app.

import streamlit as st
import plotly.express as px

st.title("Revenue Dashboard")
st.write(f"Welcome, {st.user.user_name}!")

conn = st.connection("snowflake")

df = conn.query("""
    SELECT month, region, revenue
    FROM dashboard_demo.public.monthly_revenue
    ORDER BY month
""")

selected_regions = st.multiselect(
    "Filter by region",
    options=df["REGION"].unique(),
    default=df["REGION"].unique(),
)

filtered = df[df["REGION"].isin(selected_regions)]

fig = px.bar(
    filtered,
    x="MONTH",
    y="REVENUE",
    color="REGION",
    barmode="group",
    title="Monthly Revenue by Region",
)
st.plotly_chart(fig, use_container_width=True)

st.dataframe(filtered, use_container_width=True)

Este app usa:

Declarar dependências

Os tempos de execução de contêiner instalam os pacotes listados em um arquivo requirements.txt. Crie um arquivo requirements.txt junto com o seu streamlit_app.py:

plotly
streamlit

Quando o app é iniciado, o tempo de execução de contêiner instala automaticamente os pacotes declarados. Para cenários de dependência mais complexos, você pode usar um arquivo pyproject.toml. Para obter mais informações, consulte Gerenciamento de dependências para o app Streamlit.

Implantar o app

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Projects » Streamlit.

  3. Selecione + Streamlit App.

  4. Insira revenue_dashboard como o nome do app.

  5. Selecione um banco de dados e um esquema.

  6. Selecione Run on container e, em seguida, escolha um pool de computação e um warehouse de consultas.

  7. Selecione Create.

  8. No editor, substitua o código inicial pelo código do app acima.

  9. Carregue ou crie o arquivo requirements.txt selecionando + (Adicionar) » Create new file, inserindo requirements.txt e colando o conteúdo.

  10. Selecione Run.

Fazer uma alteração

Experimente editar seu app para ver o ciclo de desenvolvimento em ação. Adicione uma métrica de resumo inserindo as duas linhas a seguir em streamlit_app.py, entre as linhas filtered = ... e fig = px.bar(...):

total = filtered["REVENUE"].sum()
st.metric("Total Revenue", f"${total:,.0f}")

Se você estiver editando no navegador, cole as linhas no editor e selecione Run.

Para obter mais informações sobre o fluxo de trabalho de edição, consulte Editar o app Streamlit.

Limpeza

Para remover os recursos criados neste exemplo, execute o seguinte SQL:

DROP STREAMLIT IF EXISTS dashboard_demo.public.revenue_dashboard;
DROP TABLE IF EXISTS dashboard_demo.public.monthly_revenue;

Qual é o próximo passo?