Skip to content

Conectando Streamlit a Snowflake: Liberando el poder de las aplicaciones web impulsadas por datos

Updated on

Si te encuentras en el mundo del análisis de datos, desarrollo de software, o simplemente eres un entusiasta de la tecnología con interés en construir aplicaciones web con Python, esta guía completa está hecha a tu medida. A medida que el mundo de los datos crece, también crece la necesidad de herramientas eficientes para manejar y extraer información valiosa de ellos. Ahí es donde entran en juego Streamlit y Snowflake.

Streamlit, un framework web de código bajo en crecimiento rápido para Python, te permite construir aplicaciones web interactivas y basadas en datos con un código mínimo. Por otro lado, Snowflake, una plataforma de almacenamiento de datos basada en la nube, ofrece una solución robusta para el almacenamiento, procesamiento y análisis de datos. Juntos, forman una dupla impresionante que aporta comodidad y eficiencia en el mundo de los datos.

Marco de Aplicación Nativo de Snowflake

Antes de comenzar nuestra aventura, hagamos una parada en el centro del universo de Snowflake: el Marco de Aplicación Nativo. Imagina un conjunto de herramientas llenas de características como procedimientos almacenados, tareas, streams, UDFs, Snowpark y muchas otras. ¡Exactamente de eso se trata este marco!

Gracias a este arsenal de herramientas, los proveedores de aplicaciones pueden:

  • Utilizar las funcionalidades principales de Snowflake para crear sus propias aplicaciones.
  • Distribuirlas y monetizarlas en el Snowflake Marketplace (¡piensa en ello como una App Store!).
  • Desplegar las aplicaciones directamente en la cuenta de Snowflake de un cliente.

Una vez que se crea una aplicación, las sólidas capacidades de intercambio de datos de Snowflake pueden distribuirla por todo el mundo a través del Snowflake Marketplace. Los usuarios pueden luego desplegar directamente esta aplicación desde el Marketplace en su cuenta de Snowflake.

El Marco de Aplicación Nativo no es solo un conjunto de características, sino una puerta de entrada a un mundo de posibilidades. Cuando se combina con un framework de experiencia de usuario de bajo código como Streamlit, esta mezcla crea magia.

Streamlit en Snowflake

Sumergiéndonos en el mundo de Streamlit, este framework gratuito y de código abierto es un soplo de aire fresco para aquellos que buscan construir hermosas aplicaciones web para aprendizaje automático y ciencia de datos.

Creado con el objetivo de simplificar la vida de los científicos de datos o ingenieros de aprendizaje automático, Streamlit facilita la creación de aplicaciones fantásticas con solo unas pocas líneas de código.


¿Quieres conectar tu base de datos de Snowflake a RATH ahora? Consulta la Documentación de RATH para obtener una guía paso a paso de la integración con Snowflake: Guía paso a paso de integración con Snowflake.

Además de Snowflake, RATH admite una amplia gama de fuentes de datos. Aquí tienes algunas de las principales soluciones de bases de datos a las que puedes conectar con RATH: Bases de datos compatibles

¿Interesado? Prueba RATH ahora mismo en el sitio web de RATH (opens in a new tab).

Visualiza datos de Snowflake con RATH (opens in a new tab)

Cuando se integra con Snowflake (inteligentemente apodado como SiS, por sus siglas en inglés), te permite escribir código de Streamlit directamente dentro de Snowflake, utilizando Python. Simplemente creas un objeto Streamlit (como otros objetos de esquema en Snowflake), le das un nombre a tu aplicación, asignas un almacén y decides la ubicación de la aplicación. Como está anidado cómodamente dentro de Snowflake, se aplican consistentemente controles de acceso basados en roles.

¿Lo mejor de todo? Puedes desplegar tu aplicación de Streamlit, compartirla con otros usando un enlace e incluso verla en tu dispositivo móvil. Bastante interesante, ¿verdad?

Preparación para la Integración de Streamlit + Snowflake

Crea una Base de Datos Snowflake

Antes de sumergirnos en la creación de la aplicación web, es vital configurar una base de datos Snowflake a la que luego nos conectaremos con nuestra aplicación de Streamlit. Sigamos los pasos para crear una base de datos Snowflake:

  1. Regístrate para obtener una cuenta Snowflake en https://signup.snowflake.com (opens in a new tab).
  2. Revisa tu correo electrónico de "¡Bienvenido a Snowflake!" para obtener la URL de la cuenta para acceder a tu cuenta Snowflake. Usa el botón "LOG IN TO SNOWFLAKE" o copia la URL de la cuenta en tu navegador.
  3. Ingresa tus credenciales de Snowflake.
  4. Una vez que inicias sesión, llegarás al panel de Worksheets.
  5. Para crear una nueva hoja de trabajo SQL, sigue las instrucciones proporcionadas en la interfaz de Snowflake.
  6. Ingresa la siguiente consulta SQL en el cuadro de consulta para crear una base de datos simple llamada PETS y poblarla con algunos datos:
CREATE DATABASE PETS;
 
CREATE TABLE MYTABLE (
    NAME varchar(80),
    PET varchar(80)
);
 
INSERT INTO MYTABLE VALUES ('Mary', 'dog'), ('John', 'cat'), ('Robert', 'bird');
 
SELECT * FROM MYTABLE;
  1. Después de ejecutar la consulta, se creará la base de datos PETS. Regresa a la página principal.
  2. Desde la página principal, haz clic en la pestaña Data para ver la base de datos PETS que acabamos de crear.

Configura el Entorno

Ahora, procedamos a configurar nuestro entorno de programación con Anaconda.

conda create -n snowpark python=3.8
conda activate snowpark
pip install snowflake-snowpark-python streamlit

Recuerda que puedes desactivar el entorno de Anaconda después de tu sesión de programación con conda deactivate.

Avancemos y configuremos los directorios y archivos para nuestra aplicación de Streamlit:

Primero, creamos un nuevo directorio para nuestro proyecto. Abre tu terminal y escribe:

mkdir streamlit-snowflake-app && cd streamlit-snowflake-app
touch main.py secrets.py .gitignore
  • El archivo main.py es donde escribiremos nuestra aplicación de Streamlit.
  • El archivo secrets.py almacenará nuestras credenciales de acceso a Snowflake.
  • El archivo .gitignore garantizará que no cometamos accidentalmente estas credenciales sensibles en un repositorio público.

Construyamos una Aplicación de Streamlit con Snowflake

Ahora viene la parte emocionante: construir la aplicación de Streamlit. Aquí consultaremos la base de datos PETS que creamos anteriormente y mostraremos los resultados en nuestra aplicación de Streamlit.

  1. Importa las bibliotecas necesarias en el archivo main.py:
import streamlit as st
from snowflake.snowpark import Session
from secrets import SNOWFLAKE_ACCOUNT, SNOWFLAKE_USER, SNOWFLAKE_PASSWORD
  1. Establece una sesión de Snowflake utilizando las credenciales almacenadas en secrets.py:
session = Session(url=SNOWFLAKE_ACCOUNT, user=SNOWFLAKE_USER, password=SNOWFLAKE_PASSWORD)
  1. Extrae datos de Snowflake:
df = session.sql("SELECT * FROM PETS.MYTABLE").to_pandas()
  1. Mostrar los datos en Streamlit:
st.write(df)
  1. Guardar las credenciales en secrets.toml
touch secrets.toml

En secrets.toml, añadir las credenciales de Snowflake:

[secrets]
SNOWFLAKE_ACCOUNT = "tu_cuenta"
SNOWFLAKE_USER = "tu_usuario"
SNOWFLAKE_PASSWORD = "tu_contraseña"

Actualizar el archivo main.py para usar el manejo de secretos de Streamlit:

session = Session(url=st.secrets["SNOWFLAKE_ACCOUNT"], user=st.secrets["SNOWFLAKE_USER"], password=st.secrets["SNOWFLAKE_PASSWORD"])

No olvides actualizar el archivo .gitignore también.

¡Voilà! Acabas de construir tu primera aplicación de Streamlit que se conecta a una base de datos de Snowflake. Para ejecutar la aplicación, utiliza streamlit run main.py en tu terminal.

Cómo implementar una aplicación de Streamlit

Con la aplicación lista y los secretos gestionados de forma segura, es hora de compartir tu trabajo con el mundo. Streamlit ofrece una plataforma llamada Streamlit Share para implementar aplicaciones:

  1. Haz un commit de tu proyecto en un repositorio público de GitHub (excluyendo el archivo secrets.toml).
  2. Visita share.streamlit.io (opens in a new tab) y haz clic en Deploy an app.
  3. Selecciona tu repositorio y rama de GitHub, luego especifica main.py como el archivo de aplicación.
  4. En la sección de Secrets, haz clic en Add a secret e introduce los pares clave-valor de secrets.toml.
  5. Haz clic en Deploy. Streamlit Share se encargará del resto.

Conclusión

Conectar Streamlit a Snowflake abre un mundo de posibilidades para crear aplicaciones web eficientes e interactivas con Python. Esta guía te ha mostrado un proceso paso a paso para integrar estas dos poderosas plataformas, desde la configuración de una base de datos de Snowflake y una aplicación de Streamlit, hasta la gestión de secretos y la implementación de la aplicación. Con un poco de creatividad, puedes adaptar este proceso para diferentes aplicaciones y flujos de trabajo.

Ahora que tienes este conocimiento, sigue adelante y crea aplicaciones basadas en datos que marquen la diferencia.

¿Quieres crear de forma gratuita una aplicación de análisis de datos y visualización de datos con Streamlit?

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a incrustar fácilmente una interfaz similar a Tableau en tu propia aplicación de Streamlit sin esfuerzo. ¡Mira este increíble video producido por Cómo explorar datos con PyGWalker en Python (opens in a new tab) que demuestra los pasos detallados para potenciar tu aplicación de Streamlit con esta potente biblioteca de visualización de datos en Python!


¡Un agradecimiento especial a Sven y su gran contribución (opens in a new tab) a la comunidad de PyGWalker!

Además, también puedes visitar la página de GitHub de PyGWalker (opens in a new tab) para obtener más ejemplos de PyGWalker.

Preguntas frecuentes

¿Qué es Snowflake en Streamlit?

Snowflake en Streamlit (SiS) se refiere a la integración de Streamlit dentro de la plataforma de Snowflake. SiS permite a los usuarios escribir código de Streamlit directamente en Snowflake, aprovechando las capacidades de almacenamiento, procesamiento y seguridad de Snowflake.

¿Streamlit es propiedad de Snowflake?

No, Streamlit es un proyecto independiente de código abierto y no es propiedad de Snowflake. Streamlit es ampliamente utilizado en la comunidad de ciencia de datos para construir aplicaciones web interactivas, mientras que Snowflake es una plataforma de datos basada en la nube.

¿Qué es Snowpark for Python y Streamlit?

Snowpark es una función en Snowflake que permite a los desarrolladores escribir código en diferentes lenguajes de programación. Snowpark para Python permite a los usuarios escribir código Python e integrarlo con las capacidades de procesamiento de datos de Snowflake. Streamlit en Snowflake aprovecha Snowpark para Python para permitir a los usuarios escribir código de Streamlit directamente dentro de Snowflake, creando aplicaciones interactivas de datos.