예: 개인 설정 데이터 대시보드 빌드

이 예제에서는 Snowflake 데이터를 쿼리하고, 서드 파티 차트 라이브러리를 추가하고, 각 뷰어에 맞게 디스플레이를 개인 설정하는 Streamlit in Snowflake 앱을 빌드하는 과정을 안내합니다. 이 과정을 완료하면 핵심 개발 주기인 생성, 배포, 편집, 재배포를 이해하게 됩니다.

이 앱은 Container Runtime을 사용합니다. 시작하기 전에 :ref:`전제 조건 <label-streamlit_prereqs>`을 완료했는지 확인합니다.

샘플 데이터 설정

이 예제에서는 ``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);

앱 코드 작성

로컬 컴퓨터에서 선택한 프로젝트 디렉터리에 다음 코드를 사용하여 :file:`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)

이 앱은 다음을 사용합니다.

  • Snowflake에서 데이터를 쿼리하기 위한 conn.query(). 결과는 자동으로 캐시되므로 캐시가 만료될 때까지 쿼리가 한 번만 실행됩니다. 자세한 내용은 시크릿 관리 및 Streamlit 앱 구성하기 섹션을 참조하십시오.

  • 현재 뷰어를 환영하는 st.user.user_name. 자세한 내용은 사용자 정보로 Streamlit 앱 개인 설정 섹션을 참조하십시오.

  • 다음 단계에서 선언하는 외부 종속성인 대화형 차트의 경우 plotly.

종속성 선언

Container Runtime은 requirements.txt 파일에 나열된 패키지를 설치합니다. streamlit_app.py`와 함께 :file:`requirements.txt 파일을 생성합니다.

plotly
streamlit

앱이 시작되면 Container Runtime이 선언된 패키지를 자동으로 설치합니다. 더 복잡한 종속성 시나리오의 경우 pyproject.toml 파일을 대신 사용할 수 있습니다. 자세한 내용은 Streamlit 앱의 종속성 관리하기 섹션을 참조하십시오.

앱 배포

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Projects » Streamlit 를 선택합니다.

  3. + Streamlit App 를 선택합니다.

  4. 앱 이름으로 ``revenue_dashboard``를 입력합니다.

  5. 데이터베이스와 스키마를 선택합니다.

  6. :ui:`Run on container`를 선택한 다음 컴퓨팅 풀과 쿼리 웨어하우스를 선택합니다.

  7. Create 를 선택합니다.

  8. 편집기에서 스타터 코드를 위의 앱 코드로 바꿉니다.

  9. +`(추가) |raa| :ui:`Create new file`을 선택하고, ``requirements.txt``를 입력하고, 해당 내용을 붙여넣어 :file:`requirements.txt 파일을 업로드하거나 생성합니다.

  10. Run 을 선택합니다.

변경

앱을 편집하여 개발 주기가 실제로 작동하는지 확인합니다. 다음 두 줄을 filtered = ... 줄과 fig = px.bar(...) 줄 사이의 :file:`streamlit_app.py`에 삽입하여 요약 메트릭을 추가합니다.

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

브라우저에서 편집하는 경우 해당 줄을 편집기에 붙여넣고 :ui:`Run`을 선택합니다.

편집 워크플로에 대한 자세한 내용은 Streamlit 앱 편집 섹션을 참조하세요.

정리

이 예제에서 생성된 리소스를 제거하려면 다음 SQL을 실행합니다.

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

다음에는 무엇을 해야 합니까?