Exemplo - Aplicativo Streamlit de várias páginas


Este recurso está disponível para contas em regiões comerciais do AWS e Microsoft Azure. AWS PrivateLink não é suportado.

Este tópico fornece um exemplo de um aplicativo Streamlit de várias páginas. Os exemplos a seguir mostram um aplicativo Streamlit de várias páginas que contém os seguintes arquivos:

  • O aplicativo Streamlit principal (streamlit_main.py): este é o aplicativo Streamlit que você fornece como valor para a propriedade MAIN_FILE do comando CREATE STREAMLIT. Este arquivo também é exibido por padrão quando você visualiza o aplicativo Streamlit em Snowsight.

  • data_frame_demo.py: exibe um dataframe para o aplicativo.

  • plot_demo.py: exibe um gráfico dos dados do aplicativo.


Para implantar um aplicativo Streamlit de várias páginas no Snowflake, você deve criar o aplicativo usando comandos SQL. Consulte Criação de um aplicativo Streamlit usando SQL para obter mais informações.


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')


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",
    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)


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)
        last_rows = new_rows


    # 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.set_page_config(page_title="Plotting Demo", page_icon="📈")
st.markdown("# Plotting Demo")
st.sidebar.header("Plotting Demo")
    """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!"""