Beispiel: Mehrseitige Streamlit-App¶
Achtung
This feature is available to accounts in AWS and Microsoft Azure commercial regions. AWS PrivateLink and Azure Private Link are not supported.
Dieses Thema enthält ein Beispiel für eine mehrseitige Streamlit-App. Die folgenden Beispiele zeigen eine mehrseitige Streamlit-App, die die folgenden Dateien enthält:
Die Haupt-Streamlit-App (
streamlit_main.py
): Dies ist die Streamlit-App, die Sie als Wert für die Eigenschaft MAIN_FILE des Befehls CREATE STREAMLIT angeben. Diese Datei wird auch standardmäßig angezeigt, wenn Sie die Streamlit-App in Snowsight aufrufen.data_frame_demo.py
: Zeigt einen Datenframe für die Anwendung an.plot_demo.py
: Zeigt eine Darstellung der Daten für die Anwendung an.
Bemerkung
Um eine mehrseitige Streamlit-App in Snowflake bereitzustellen, müssen Sie die Anwendung mithilfe von SQL-Befehlen erstellen. Weitere Informationen dazu finden Sie unter Erstellen einer Streamlit-App mit SQL.
streamlit_main.py¶
import streamlit as st
st.title('Multi-page app demo')
st.write('This is the landing page for the app. Click in the left sidebar to open other pages in the app')
data_frame_demo.py¶
import streamlit as st
from snowflake.snowpark.context import get_active_session
# Write directly to the app
st.title("Dataframe Demo App :balloon:")
# Get the current credentials
session = get_active_session()
# Use an interactive slider to get user input
hifives_val = st.slider(
"Number of high-fives in Q3",
min_value=0,
max_value=90,
value=60,
help="Use this to enter the number of high-fives you gave in Q3",
)
# Create an example dataframe
# Note: this is just some dummy data, but you can easily connect to your Snowflake data
# It is also possible to query data using raw SQL using session.sql() e.g. session.sql("select * from table")
created_dataframe = session.create_dataframe(
[[50, 25, "Q1"], [20, 35, "Q2"], [hifives_val, 30, "Q3"]],
schema=["HIGH_FIVES", "FIST_BUMPS", "QUARTER"],
)
# Execute the query and convert it into a Pandas dataframe
queried_data = created_dataframe.to_pandas()
# Create a simple bar chart
# See docs.streamlit.io for more types of charts
st.subheader("Number of high-fives")
st.bar_chart(data=queried_data, x="QUARTER", y="HIGH_FIVES")
st.subheader("Underlying data")
st.dataframe(queried_data, use_container_width=True)
plot_demo.py¶
import time
import numpy as np
import streamlit as st
from streamlit.hello.utils import show_code
def plotting_demo():
progress_bar = st.sidebar.progress(0)
status_text = st.sidebar.empty()
last_rows = np.random.randn(1, 1)
chart = st.line_chart(last_rows)
for i in range(1, 101):
new_rows = last_rows[-1, :] + np.random.randn(5, 1).cumsum(axis=0)
status_text.text("%i%% Complete" % i)
chart.add_rows(new_rows)
progress_bar.progress(i)
last_rows = new_rows
time.sleep(0.05)
progress_bar.empty()
# Streamlit widgets automatically run the script from top to bottom. Because
# this button is not connected to any other logic, it just causes a plain
# rerun.
st.button("Re-run")
st.set_page_config(page_title="Plotting Demo", page_icon="📈")
st.markdown("# Plotting Demo")
st.sidebar.header("Plotting Demo")
st.write(
"""This demo illustrates a combination of plotting and animation with
Streamlit. We're generating a bunch of random numbers in a loop for around
5 seconds. Enjoy!"""
)
plotting_demo()
show_code(plotting_demo)