# app.py
import streamlit as st
from databricks import sql
import os
import pandas as pd
st.set_page_config(page_title="매출 대시보드", layout="wide")
st.title("📊 일별 매출 대시보드")
# SQL Warehouse 연결
@st.cache_resource
def get_connection():
return sql.connect(
server_hostname=os.environ["DATABRICKS_HOST"],
http_path=os.environ["DATABRICKS_SQL_WAREHOUSE_HTTP_PATH"],
credentials_provider=lambda: {
"Authorization": f"Bearer {os.environ['DATABRICKS_TOKEN']}"
}
)
conn = get_connection()
# 데이터 조회
@st.cache_data(ttl=300) # 5분 캐시
def load_data():
cursor = conn.cursor()
cursor.execute("""
SELECT sale_date, total_revenue, total_orders, unique_customers
FROM main.ecommerce.gold_daily_kpi
ORDER BY sale_date DESC
LIMIT 90
""")
return cursor.fetchall_arrow().to_pandas()
df = load_data()
# KPI 카드
col1, col2, col3 = st.columns(3)
col1.metric("총 매출", f"₩{df['total_revenue'].sum():,.0f}")
col2.metric("총 주문", f"{df['total_orders'].sum():,}건")
col3.metric("고유 고객", f"{df['unique_customers'].sum():,}명")
# 차트
st.line_chart(df.set_index("sale_date")["total_revenue"])
st.dataframe(df, use_container_width=True)