Applications Streamlit multi-pages¶
Cette rubrique présente un exemple d”application Streamlit multi-pages. Les exemples suivants montrent une application Streamlit multi-pages qui contient les fichiers suivants :
L’application Streamlit principale (
streamlit_main.py
) : Il s’agit de l’application Streamlit que vous fournissez comme valeur à la propriété MAIN_FILE de la commande CREATE STREAMLIT. Ce fichier est également affiché par défaut lorsque vous visualisez l’application Streamlit dans Snowsight.data_frame_demo.py
: affiche un cadre de données pour l’application.plot_demo.py
: affiche un graphique des données de l’application.
Note
Pour déployer une application Streamlit multi-pages dans Snowflake, vous devez créer l’application en utilisant les commandes SQL. Consultez Créer et déployer des applications Streamlit à l’aide de SQL pour plus d’informations.
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
# Write directly to the app
st.title("Dataframe Demo App :balloon:")
# Get the current credentials
session = st.connection('snowflake').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)