示例:构建个性化数据仪表板

本示例将引导您构建一个 Streamlit in Snowflake 应用程序,该程序可查询 Snowflake 数据、添加第三方图表库,并为每个查看者实现个性化显示。最后,您将了解核心开发周期:创建、部署、编辑和重新部署。

该应用程序使用容器运行时。在开始之前,请确保您已完成 先决条件

设置示例数据

本示例使用名为 dashboard_demo 的数据库。您可以替换为任何有权访问的数据库和架构,只需更新 SQL 和应用程序代码中的引用以保持一致即可。

创建一个包含示例收入数据的表。在工作表或 SQL 会话中运行以下 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);

编写应用程序代码

在本地计算机上,在您选择的项目目录中,创建一个名为 streamlit_app.py 的文件并包含以下代码。如果您计划使用 Snowsight,您可以在创建应用程序后将此代码粘贴到编辑器中。

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)

此应用程序使用:

声明依赖关系

容器运行时会安装 requirements.txt 文件中列出的包。在您的 streamlit_app.py 旁边创建一个 requirements.txt 文件:

plotly
streamlit

应用程序启动时,容器运行时会自动安装声明的包。对于更复杂的依赖关系场景,可以改用 pyproject.toml 文件。有关更多信息,请参阅 管理 Streamlit 应用程序的依赖项

部署应用程序

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Projects » Streamlit

  3. 选择 + Streamlit App

  4. 输入 revenue_dashboard 作为应用程序名称。

  5. 选择数据库和架构。

  6. 选择 Run on container,然后选择一个计算池和查询仓库。

  7. 选择 Create

  8. 在编辑器中,将起始代码替换为上面的应用程序代码。

  9. 通过选择 + (Add) » Create new file,输入 requirements.txt 并粘贴内容,来上传或创建 requirements.txt 文件。

  10. 选择 Run

进行更改

尝试编辑您的应用程序以查看开发周期的实际运行情况。通过在 streamlit_app.py 中的 filtered = ... 行和 fig = px.bar(...) 行之间插入以下两行来添加摘要指标:

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

如果您在浏览器中进行编辑,请将这些行粘贴到编辑器中并选择 Run

有关编辑工作流的更多信息,请参阅 编辑 Streamlit 应用程序

清理

要移除此示例中创建的资源,请运行以下 SQL:

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

下一步是什么?