Skip to content

Cómo seleccionar fácilmente todas las columnas desde un stage en Snowflake

Updated on

Snowflake, una plataforma de datos en la nube revolucionaria, está transformando el panorama de la ingeniería de datos, los almacenes de datos, los lagos de datos y la ciencia de datos. Una de las características clave de Snowflake es su capacidad para manejar stages, un componente fundamental en el almacenamiento de datos y el análisis. Este artículo te guiará en profundidad en el concepto de stages en Snowflake y, lo que es más importante, cómo seleccionar todas las columnas desde un stage.

Los stages en Snowflake sirven como un espacio intermedio donde se almacenan los archivos de datos antes de cargarlos en tablas. Esta característica es crucial para operaciones de datos masivos, por lo que es un tema esencial para los ingenieros de datos y analistas que trabajan con Snowflake. Pero antes de adentrarnos en los detalles de cómo seleccionar todas las columnas desde un stage, primero entendamos qué son los stages de Snowflake y por qué son importantes.

¿Quieres visualizar fácilmente los datos de Snowflake? ¡RATH (opens in a new tab) te ofrece la solución más sencilla para la visualización de datos impulsada por IA y un paquete completo para el análisis de datos automatizado!

Mira el siguiente video sobre cómo explorar fácilmente los conocimientos de los datos con RATH:


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

Comprendiendo los stages en Snowflake

En Snowflake, un stage es un objeto de base de datos con nombre que especifica dónde se almacenan los archivos de datos para agilizar la carga y descarga masiva de datos dentro y fuera de las tablas de la base de datos. Los stages desempeñan un papel fundamental en el almacenamiento de datos y el análisis, actuando como un puente entre los archivos de datos en bruto y las tablas de Snowflake.

Existen dos tipos de stages en Snowflake:

  • Stages internos: Estos stages almacenan datos internamente en tablas de Snowflake. Se crean automáticamente para cada tabla y esquema, y también puedes crearlos explícitamente.
  • Stages externos: Estos stages almacenan datos en una ubicación externa, como Amazon S3 buckets, Google Cloud Storage buckets o Microsoft Azure Blob storage. Los stages externos son de solo lectura, lo que significa que no se pueden realizar operaciones DML en ellos.

Comprender la diferencia entre estos dos tipos de stages es crucial cuando se trabaja con Snowflake, ya que influye en cómo interactúas con tus datos.

Trabajando con Metadata en Snowflake

Snowflake genera automáticamente metadata para archivos en stages internos y externos. Esta metadata incluye los nombres de los archivos, los IDs de versión y las propiedades asociadas, proporcionando información adicional sobre los archivos. La metadata en Snowflake actúa como una hoja de ruta para localizar el contenido de un almacén de datos, por lo que es un aspecto esencial de la búsqueda y el análisis de datos.

Aquí están las columnas clave de metadata en Snowflake que puedes consultar o cargar en tablas:

  • METADATA$FILENAME: Esta columna devuelve el nombre del archivo en stage, la fila a la que pertenece y la ruta del archivo.
  • METADATA$FILE_ROW_NUMBER: Esta columna devuelve el número de fila para cada registro en el archivo en stage.

Cómo consultar datos en stages de Snowflake

Ahora que tenemos una comprensión sólida de los stages y la metadata de Snowflake, adentrémonos en cómo consultar datos en stages de Snowflake. Te guiaré en una guía paso a paso sobre cómo consultar metadata de un stage externo y un stage interno, proporcionando ejemplos prácticos para ilustrar el proceso.

Consultando Metadata desde un Stage Externo

Empecemos con un ejemplo en el que tenemos un archivo CSV llamado 'Cars' en un stage externo en un bucket de Amazon S3. El archivo tiene tres columnas: id, nombre y ubicación. Así es como puedes consultar la metadata de este archivo en stage:

  1. Crea un stage en Snowflake: Primero, necesitas crear un stage que apunte al bucket de Amazon S3 donde se encuentra el archivo CSV. Puedes hacer esto usando el comando CREATE STAGE.

  2. Crea un formato de archivo: Luego, necesitas crear un formato de archivo que describa el formato del archivo CSV. Puedes hacer esto usando el comando CREATE FILE FORMAT.

  3. Consulta la metadata: Finalmente, puedes consultar la metadata y las columnas de datos regulares en el archivo en stage usando una declaración SELECT. La declaración SELECT debe incluir las columnas METADATA$FILENAME y METADATA$FILE_ROW_NUMBER, así como las columnas de datos regulares.

Aquí tienes un ejemplo de código que ilustra estos pasos:

-- Crea un stage
CREATE OR REPLACE STAGE cars_stage URL = 's3://tu_bucket/ruta/';
 
-- Crea un formato de archivo
CREATE OR REPLACE FILE FORMAT cars_format TYPE = 'CSV' FIELD_DELIMITER = ',';
 
-- Consulta la metadata y las columnas de datos
SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, $1, $2, $3
FROM @cars_stage
(FILE_FORMAT => cars_format);

Esta consulta devolverá el nombre del archivo, el número de fila y los datos de cada columna para cada registro en el archivo CSV en stage.

Consultando Metadata desde un Stage Interno

La consulta de metadata desde un stage interno sigue un proceso similar, pero con algunas diferencias. Consideremos un ejemplo en el que tenemos un archivo JSON llamado 'Movies' en un stage interno de Snowflake. El archivo contiene objetos con dos propiedades: título y año. Así es como puedes consultar la metadata de este archivo en stage:

  1. Crea un stage en Snowflake: Al igual que con el stage externo, primero necesitas crear un stage. Sin embargo, como este es un stage interno, no necesitas especificar una URL.

  2. Crea un formato de archivo: Luego, necesitas crear un formato de archivo que describa el formato del archivo JSON. Esto se hace usando el comando CREATE FILE FORMAT, con el tipo establecido en 'JSON'.

  3. Coloca el archivo JSON en stage: Puedes colocar el archivo JSON desde tu directorio local al stage de Snowflake usando el comando PUT.

  4. Consulta la metadata: Finalmente, puedes consultar la metadata y los objetos en el archivo en stage usando una declaración SELECT. La declaración SELECT debe incluir las columnas METADATA$FILENAME y METADATA$FILE_ROW_NUMBER, así como la función PARSE_JSON para analizar los objetos JSON.

Aquí tienes un ejemplo de código que ilustra estos pasos:

-- Crear una etapa (stage)
CREATE OR REPLACE STAGE movies_stage;
 
-- Crear un formato de archivo
CREATE OR REPLACE FILE FORMAT movies_format TYPE = 'JSON';
 
-- Cargar el archivo JSON a la etapa (stage)
PUT file://path_to_your_file/movies.json @movies_stage;
 
-- Consultar los metadatos y las columnas de datos
SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, PARSE_JSON($1)
FROM @movies_stage
(FILE_FORMAT => movies_format);

Esta consulta devolverá el nombre del archivo, el número de fila y los objetos JSON analizados para cada registro en el archivo JSON en etapa.

Técnicas avanzadas para consultar datos en etapa

A medida que te sientas más cómodo consultando los datos en etapa en Snowflake, puedes comenzar a explorar técnicas más avanzadas. Por ejemplo, puedes usar el comando COPY INTO para cargar los datos de un archivo en etapa en una tabla de Snowflake. Este comando te permite realizar operaciones de datos masivas, que pueden ser mucho más rápidas que insertar los datos fila por fila.

Aquí tienes un ejemplo de cómo puedes usar el comando COPY INTO para cargar datos desde un archivo CSV en etapa en un cubo de Amazon S3 hacia una tabla de Snowflake:

-- Crear una tabla
CREATE OR REPLACE TABLE cars (id INTEGER, name STRING, location STRING);
 
-- Cargar datos desde el archivo en etapa hacia la tabla
COPY INTO cars
FROM @cars_stage
FILE_FORMAT => cars_format;

Este comando cargará todos los datos del archivo CSV en etapa a la tabla 'cars'. Luego puedes consultar los datos en la tabla usando comandos SQL regulares.

Preguntas frecuentes

1. ¿Puedo consultar datos en etapa en Snowflake sin cargarlos en una tabla?

Sí, puedes consultar los datos en etapa en Snowflake directamente sin cargarlos en una tabla. Puedes hacer esto usando la declaración SELECT, como se muestra en los ejemplos anteriores. Sin embargo, ten en cuenta que consultar grandes cantidades de datos en etapa directamente puede ser más lento que consultar datos cargados en una tabla.

2. ¿Qué tipos de archivos puedo poner en etapa en Snowflake?

Snowflake admite poner en etapa una variedad de tipos de archivos, incluyendo CSV, JSON, Avro, Parquet y ORC. Puedes especificar el tipo de archivo cuando creas un formato de archivo.

3. ¿Puedo poner en etapa datos desde un archivo local en Snowflake?

Sí, puedes poner en etapa datos desde un archivo local en Snowflake utilizando el comando PUT. Este comando carga el archivo local a una etapa interna de Snowflake, desde donde puedes consultar los datos o cargarlos en una tabla.

Conclusión

Seleccionar todas las columnas desde una etapa en Snowflake es una operación poderosa que te permite consultar y analizar grandes cantidades de datos de manera eficiente. Al comprender los conceptos de etapas y metadatos en Snowflake, y al dominar las técnicas para consultar datos en etapa, puedes aprovechar al máximo el potencial de tus datos y obtener conocimientos más profundos. Ya sea que seas un ingeniero de datos, un analista de datos o simplemente alguien interesado en la ciencia de datos, dominar estas habilidades sin duda será una valiosa adición a tu arsenal de herramientas.