Aunque, en el momento de escribir estas líneas, la integración Snowflake-Streamlit aún no está aquí, FrostyFriday considera que es una razón más para adelantarse a los acontecimientos y empezar a desarrollar sus habilidades con Streamlit.
Aunque Streamlit está basado en Python (le animamos a aprenderlo) este desafío es Python-opcional. El esqueleto de guión que aparece a continuación debería permitirte realizar este reto sin ningún conocimiento de Python.
Para obtener una guía sobre cómo empezar, dirígete aquí
Entonces… ¿cuál es el reto?
Bueno, una empresa tiene una bonita y sencilla tabla de pagos que puedes encontrar aquí. Quieren que FrostyData les ayude ingiriendo los datos y creando el siguiente gráfico de líneas.
Resultado:
- El script no debe exponer contraseñas, ya que esto sería muy inseguro, en su lugar, debe utilizar secrets Streamlit.
- El título debe ser «Pagos en 2021».
- Debe tener un filtro de «fecha mínima» que especifique la fecha más temprana que un usuario puede seleccionar, por defecto debe establecerse en la fecha más temprana posible.
- Debe tener un filtro de «fecha máxima» que especifique la fecha más tardía que un usuario puede seleccionar; por defecto, debe establecerse en la fecha más tardía posible.
- Debe tener un gráfico de líneas con las fechas en el eje X y el importe en el eje Y. Los datos deben agregarse a nivel semanal.
Script esqueleto para no usuarios de Python:
import streamlit as st
import pandas as pd
import snowflake.connector
# Normalmente, un archivo secrets debería ser guardado en la siguiente ruta: C:\Users\<your_user>\.streamlit
# como secrets.toml
ctx = snowflake.connector.connect(
user="""<introduzca username aquí usando el archive secrets.toml>""",
password="""< introduzca password aquí usando el archive secrets.toml>""",
account="""< introduzca account aquí usando el archive secrets.toml>"""
)
cs = ctx.cursor()
# WARNING – Cuando agregue las columnas en esta query, mantenga los mismos nombres de columnas.
query = """<Introduzca SQL aquí>"""
@st.cache # Esto mantiene el cache en un mismo lugar para que la query no tenga que estar constantemente ejecutándose.
def load_data():
"""
En Python, def() crea una función. Esta función en particular se conecta con tu cuenta de Snowflake y ejecuta la query anterior. Si no tienes experiencia con Python recomiendo dejarlo tal y como está.
"""
cur = ctx.cursor().execute(query)
payments_df = pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description])
payments_df['PAYMENT_DATE'] = pd.to_datetime(payments_df['PAYMENT_DATE'])
payments_df = payments_df.set_index('PAYMENT_DATE')
return payments_df
payments_df = load_data() # Esto crea el 'dataframe' que llamaremos payments_df, piensa en esto como
# una tabla. Para crear la table, usamos la función de más arriba. Por lo que básicamente,
# cada vez que escribas 'payments_df' en tu código, estarás referenciando
# el resultado de tu query.
def get_min_date():
"""
Esta función devuelve la fecha más temprana disponible en el dataset.
Cuando quiera usar este valor, simplemente escriba get_min_date().
"""
return min(payments_df.index.to_list()).date()
def get_max_date():
"""
Esta función devuelve la fecha más tardía disponible en el dataset.
Cuando quiera usar este valor, simplemente escriba get_max_date().
"""
return max(payments_df.index.to_list()).date()
def app_creation():
"""
Esta es la función que necesita editar.
"""
# <Cree un título aquí>
min_filter = # <Cree un slider para la fecha mínima>
max_filter = # <Cree un slider para la fecha máxima>
mask = (payments_df.index >= pd.to_datetime("""<your minimum filter should go here>""")) \
& (payments_df.index <= pd.to_datetime("""<your maximum filter should go here>"""))
payments_df_filtered = payments_df.loc[mask] #This line creates a new dataframe (table) that filters
# your results to between the range of your min
# slider, and your max slider.
# Cree un gráfico de líneas usando el nuevo payments_df_filtered dataframe.
app_creation() # Ahora se llama a la función anterior
Recuerda que si quieres participar:
- Regístrate como miembro de Frosty Friday. Puedes hacerlo haciendo clic en la barra lateral, y luego yendo a ‘REGISTRARSE‘ (ten en cuenta que unirte a nuestra lista de correo no te da una cuenta de Frosty Friday)
- Publica tu código en GitHub y ponlo a disposición del público (consulta nuestra guía si no sabes cómo hacerlo aquí )
- Publica la URL en los comentarios del reto.
Si tienes alguna pregunta técnica que quieras plantear a la comunidad, puedes hacerlo aquí en nuestro hilo dedicado. –
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.