curso
Crear tablas en Snowflake: Tipos, ejemplos y buenas prácticas
Snowflake es una potente plataforma de almacenamiento de datos basada en la nube que ayuda a las organizaciones a almacenar, gestionar y analizar sus datos de forma eficaz. A diferencia de los almacenes de datos tradicionales, que requieren complejas configuraciones de hardware, Snowflake se ejecuta totalmente en la nube, lo que facilita a las empresas ampliar sus operaciones de datos según sea necesario.
Crear tablas en Snowflake es una habilidad fundamental que constituye la base de la gestión de datos. Las tablas son el lugar donde almacenas tus datos estructurados, lo que hace posible ejecutar consultas, generar informes y obtener información valiosa de tu información. Tanto si trabajas con datos de clientes, cifras de ventas o resultados analíticos, es esencial comprender cómo crear y gestionar tablas en Snowflake.
En este tutorial, aprenderás todo lo que necesitas saber sobre la creación de tablas en Snowflake. Cubriremos los distintos tipos de tablas, te mostraremos ejemplos paso a paso y compartiremos las mejores prácticas para el diseño de tablas. Al final, tendrás confianza para elegir el tipo de tabla adecuado a tus necesidades y crear tablas que sigan las normas del sector en cuanto a rendimiento y capacidad de mantenimiento.
Entender los tipos de tabla en Snowflake
Antes de sumergirnos en ejemplos de código sobre cómo crear tablas, vamos a explorar los distintos tipos de tablas en Snowflake, ya que cada una de ellas tiene propósitos únicos y características distintas en cuanto a persistencia de datos, accesibilidad y ubicación de almacenamiento.
Mesas permanentes
Las tablas permanentes son el tipo de tabla estándar en Snowflake. Persisten hasta que se abandonan explícitamente y se guardan en el almacenamiento interno de Snowflake. Estas tablas son ideales para almacenar los datos principales de tu empresa que deben conservarse a largo plazo y a los que se debe acceder en varias sesiones. Los datos de las tablas permanentes permanecen intactos entre sesiones y cualquier usuario autorizado puede acceder a ellos.
Tablas temporales
Las tablas temporales son tablas específicas de la sesión que se eliminan automáticamente cuando finaliza la sesión actual. Sirven como tablas de espacio de trabajo para pasos intermedios de procesamiento, ayudando a organizar transformaciones complejas de datos sin saturar tu almacenamiento permanente. Los datos de las tablas temporales sólo son visibles para la sesión que las creó y se limpian automáticamente cuando se cierra la sesión.
Tablas externas
Las tablas externas proporcionan una forma de consultar datos que residen fuera del almacenamiento de Snowflake. Actúan como una capa de metadatos que mapea los datos en ubicaciones de almacenamiento externas como AWS S3 o Azure Blob Storage. En lugar de ingerir los datos, las tablas externas crean una referencia a ellos, lo que te permite consultar directamente los datos externos. Este enfoque es especialmente valioso cuando se trabaja con datos que deben permanecer en su ubicación de origen o que requieren actualizaciones frecuentes desde sistemas externos.
Tablas dinámicas
Las tablas dinámicas son una potente función de Snowflake que mantiene automáticamente actualizados los resultados de una consulta. Actúan como vistas materializadas que se actualizan automáticamente en función de los cambios en las tablas fuente subyacentes. Cuando creas una tabla dinámica, la defines mediante una sentencia SELECT, y Snowflake gestiona automáticamente el proceso de actualización para garantizar que los datos se mantienen actualizados.
Las tablas dinámicas son especialmente útiles para:
- Construir cuadros de mando en tiempo real que necesiten datos frescos sin actualizaciones manuales
- Mantener versiones agregadas o transformadas de los datos fuente que se actualizan automáticamente
- Crear modelos de datos dependientes en los que las tablas descendentes deban reflejar los cambios ascendentes
- Optimizar el rendimiento de las consultas precalculando transformaciones complejas
Las principales características de las tablas dinámicas son
- Intervalos de actualización configurables (de 1 minuto a 24 horas)
- Seguimiento automático de las dependencias de las tablas de origen
- Ajustes del tiempo de retardo objetivo para controlar la frescura de los datos
- Procesamiento incremental para minimizar los costes de cálculo
- Capacidades integradas de supervisión y optimización
Cada tipo de tabla tiene una finalidad distinta en la arquitectura de datos. Las tablas permanentes forman la base de tu almacén de datos, las tablas temporales facilitan los flujos de trabajo de procesamiento de datos, las tablas externas permiten la integración con fuentes de datos externas y las tablas dinámicas proporcionan transformaciones de datos automatizadas y en tiempo real.
Comparar tablas de copos de nieve
En la tabla siguiente, hemos resumido los distintos tipos de tablas Snowflake en una guía concisa de referencia rápida:
Tipo de mesa |
Persistencia |
Visibilidad |
Lo mejor para |
Permanente |
Hasta que caiga |
Cualquier sesión |
Datos empresariales básicos |
Temporal |
Sólo para sesión |
Misma sesión |
Transformaciones intermedias |
Externo |
Almacenamiento externo |
Cualquier sesión |
Consulta de datos externos (por ejemplo, S3) |
Dinámico |
Auto-refrescante |
Cualquier sesión |
Análisis en tiempo real |
Crear tablas: Configurar Snowflake
Antes de ejecutar los ejemplos de este tutorial, necesitarás acceder a un entorno Snowflake. Aquí tienes varias formas de conectarte y ejecutar comandos Snowflake:
1. Interfaz web Snowflake (Snowsight)
La forma más sencilla de empezar es a través de la interfaz web de Snowflake:
- Accede a tu cuenta cuenta Snowflake
- Navegar a Hojas de cálculo
- Crear una nueva hoja de cálculo para ejecutar comandos SQL
2. SnowSQL (herramienta de línea de comandos)
Para acceder a la línea de comandos:
- Instala SnowSQL
- Conéctate utilizando:
snowsql -a <account> -u <username> -d <database> -w <warehouse>
Puedes encontrar las credenciales de tu cuenta Snowflake en los siguientes lugares:
- URL de la cuenta: Mira en tu correo electrónico de bienvenida o en la configuración de tu cuenta
- Nombre de usuario: Proporcionado durante la configuración de la cuenta
- Base de datos: Creado o asignado por tu administrador
- Almacén: Creado o asignado por tu administrador
Por seguridad, nunca compartas ni comprometas estas credenciales. Almacénalos de forma segura en variables de entorno o en un archivo de configuración.
3. Conexión Python
Si utilizas Python, puedes utilizar la biblioteca snowflake-connector-python
:
import snowflake.connector
conn = snowflake.connector.connect(
user='your_username',
password='your_password',
account='your_account',
warehouse='your_warehouse',
database='your_database',
schema='your_schema'
)
cur = conn.cursor()
cur.execute("SELECT current_version()")
Nota de seguridad importante:
- Nunca almacenes credenciales directamente en tu código
- Utiliza variables de entorno o gestión secreta segura
- Para la producción, considera el uso de la autenticación por pares de claves
- Sigue las políticas de seguridad de tu organización
Ahora que nuestra configuración está lista, ¡vamos a crear tablas!
Crear tablas en Snowflake: Ejemplos paso a paso
Ejemplo 1: Crear una tabla simple de Copo de Nieve
Vamos a crear una tabla para almacenar la información de los clientes. Este ejemplo muestra la creación de tablas básicas con distintos tipos de datos y restricciones.
-- Create a permanent table for customer data
CREATE OR REPLACE TABLE customers (
customer_id INTEGER PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
date_of_birth DATE,
created_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);
Puntos clave de este ejemplo:
CREATE OR REPLACE TABLE
- Crea una tabla nueva o la sustituye si ya existePRIMARY KEY
- Garantiza la identificación única de cada registroNOT NULL
- Evita los valores nulos en los campos obligatoriosUNIQUE
- Garantiza que las direcciones de correo electrónico no estén duplicadasTIMESTAMP_NTZ
- Marca de tiempo sin zona horariaDEFAULT
- Establece automáticamente la marca de tiempo de creación
Ejemplo 2: Crear una tabla temporal
Las tablas temporales son perfectas para el tratamiento intermedio de datos. Aquí tienes un ejemplo que crea una tabla temporal para analizar los pedidos de los clientes:
-- Create a temporary table for order analysis
CREATE OR REPLACE TEMPORARY TABLE temp_order_analysis (
order_date DATE,
total_orders INTEGER,
total_revenue DECIMAL(18,2)
)
AS
SELECT
DATE_TRUNC('day', order_date) as order_date,
COUNT(*) as total_orders,
SUM(order_amount) as total_revenue
FROM orders
GROUP BY 1;
Puntos clave sobre las tablas temporales:
- La palabra clave
TEMPORARY
indica que esta tabla sólo existirá dentro de la sesión actual. Esto significa que otros usuarios no pueden ver ni acceder a esta tabla. - Utilizar
CREATE TABLE AS
(CTAS) te permite crear y rellenar una tabla en un solo paso, combinando la definición de la tabla con una sentencia SELECT. - La tabla temporal se elimina automáticamente cuando finaliza tu sesión, lo que ayuda a mantener limpia la base de datos sin necesidad de limpieza manual.
- Las tablas temporales son útiles para almacenar resultados intermedios durante transformaciones complejas de datos o flujos de trabajo de análisis.
Ejemplo 3: Crear una tabla externa en Snowflake
Este ejemplo muestra cómo crear una tabla externa que lea datos de archivos almacenados en un cubo de almacenamiento en la nube:
-- Create file format for CSV files
CREATE OR REPLACE FILE FORMAT my_csv_format
TYPE = CSV
FIELD_DELIMITER = ','
SKIP_HEADER = 1
NULL_IF = ('NULL', 'null');
-- Create external stage
CREATE OR REPLACE STAGE my_external_stage
URL = 's3://my-bucket/data/'
CREDENTIALS = (AWS_KEY_ID = 'xxx' AWS_SECRET_KEY = 'xxx');
-- Create external table
CREATE OR REPLACE EXTERNAL TABLE ext_customer_data (
customer_id VARCHAR AS (VALUE:c1::VARCHAR),
purchase_date DATE AS (VALUE:c2::DATE),
product_id VARCHAR AS (VALUE:c3::VARCHAR),
amount DECIMAL(10,2) AS (VALUE:c4::DECIMAL(10,2))
)
WITH LOCATION = @my_external_stage/customers/
FILE_FORMAT = my_csv_format
PATTERN = '.*[.]csv';
La primera sentencia define una especificación de formato de archivo que indica a Snowflake cómo analizar archivos CSV externos, incluyendo el delimitador, el manejo de cabeceras y las representaciones de valores NULL.
La segunda sentencia crea un objeto stage que establece una conexión con el almacenamiento externo en la nube (en este caso, S3) utilizando las credenciales proporcionadas. Esta etapa actúa como punto de referencia para acceder a los archivos de datos externos.
La tercera sentencia crea la tabla externa propiamente dicha, utilizando definiciones de columna con cláusulas AS para convertir explícitamente los datos de cadena sin procesar del CSV en tipos de datos Snowflake adecuados. La cláusula WITH LOCATION apunta a la ruta concreta dentro de la etapa donde residen los archivos.
El parámetro PATTERN filtra los archivos que deben incluirse mediante la concordancia regex, garantizando que sólo se procesen los archivos CSV.
Requisitos previos para ejecutar esta consulta de creación de tablas externas:
1. Acceso a una cuenta Snowflake con permisos para:
- Crear formatos de archivo
- Crear etapas
- Crear tablas externas
2. Credenciales válidas de AWS (AWS_KEY_ID
y AWS_SECRET_KEY
) con permisos para:
- Leer del cubo S3
- Enumera los objetos del cubo
3. Requisitos de los datos de origen:
- Archivos CSV almacenados en un bucket S3
- Los archivos siguen un formato coherente con cuatro columnas
- Los datos de columna coinciden con los tipos especificados:
customer_id
como cadenapurchase_date
como fechaproduct_id
como cadenaamount
como decimal
4. Conectividad de red:
- Acceso de red a AWS S3
- Configuración adecuada del grupo de seguridad y del cortafuegos
5. Recursos informáticos:
- Almacén activo con capacidad informática adecuada
- Créditos/cuota de usuario suficientes
Ejemplo 4: Crear una tabla dinámica
Este ejemplo crea una tabla dinámica que mantiene un resumen actualizado de los datos de ventas:
-- Create a dynamic table for real-time sales analytics
CREATE OR REPLACE DYNAMIC TABLE daily_sales_summary
TARGET_LAG = '20 minutes'
WAREHOUSE = 'COMPUTE_WH'
AS
SELECT
DATE_TRUNC('day', sale_timestamp) as sale_date,
product_category,
SUM(sale_amount) as total_sales,
COUNT(DISTINCT customer_id) as unique_customers
FROM sales_transactions
GROUP BY 1, 2;
El parámetro TARGET_LAG
de "20 minutos" define el retraso máximo permitido entre las actualizaciones de la tabla de origen y el momento en que esos cambios se reflejan en la tabla dinámica. Esto garantiza la frescura de los datos dentro de ese intervalo de tiempo.
El parámetro WAREHOUSE
especifica qué recursos informáticos (en este caso COMPUTE_WH
) se utilizarán para refrescar periódicamente la tabla dinámica. Este almacén debe tener la capacidad adecuada para gestionar las operaciones de actualización.
La tabla dinámica actualiza automáticamente su contenido cuando cambia la tabla sales_transactions
subyacente, sin necesidad de intervención manual. Esto proporciona capacidades analíticas casi en tiempo real.
Al mantener resúmenes de ventas diarias pre-agregados y agrupados por categoría de producto, la tabla dinámica permite una consulta más rápida en comparación con el cálculo de estas métricas bajo demanda a partir de los datos brutos de las transacciones. Esto mejora el rendimiento de las consultas para los casos de uso de informes y análisis.
Cada uno de estos ejemplos muestra distintos escenarios de creación de tablas que puedes encontrar en aplicaciones del mundo real. Recuerda ajustar los nombres de las columnas, los tipos de datos y otros parámetros según tus necesidades específicas.
Buenas prácticas para crear tablas en Snowflake
Exploremos algunas de las mejores prácticas que se deben seguir al crear tablas en Snowflake para garantizar la mantenibilidad, el rendimiento y la calidad de los datos.
1. Convenciones de denominación
Utiliza siempre nombres claros y coherentes para tus tablas y columnas:
-- Good naming examples
CREATE TABLE customer_orders (
order_id INTEGER,
customer_email VARCHAR,
order_date DATE
);
-- Bad naming examples
CREATE TABLE Orders123 (
ID INTEGER,
email VARCHAR,
dt DATE
);
Consejos para nombrar:
- Utiliza letras minúsculas y guiones bajos (serpiente_case)
- Evita espacios y caracteres especiales
- Haz que los nombres sean descriptivos pero no demasiado largos
- Utiliza la forma singular para los nombres de las tablas (cliente no clientes)
- Añade prefijos para diferentes entornos (
dev_
,test_
,prod_
)
2. Tipos de datos de columna
Elige el tipo de datos adecuado para ahorrar almacenamiento y mejorar el rendimiento:
-- Good data type choices
CREATE TABLE products (
product_id INTEGER,
price DECIMAL(10,2), -- For money values
name VARCHAR(100), -- Set a reasonable limit
description TEXT, -- For very long text
is_active BOOLEAN -- Instead of VARCHAR or INTEGER
);
Tipos de datos habituales:
NUMBER/INTEGER
: Para números enterosDECIMAL/NUMERIC
: Para números decimales precisos (especialmente dinero)VARCHAR
: Para un texto con una longitud máxima conocidaTEXT
: Para texto de longitud ilimitadaTIMESTAMP_NTZ
: Para fechas y horas (sin zona horaria)BOOLEAN
: Para valores verdadero/falso
3. Utilizar claves de agrupación
Añade claves de agrupación para mejorar el rendimiento de la consulta:
CREATE TABLE sales (
sale_date DATE,
store_id INTEGER,
product_id INTEGER,
amount DECIMAL(10,2)
)
CLUSTER BY (sale_date, store_id);
Cuándo utilizar la agrupación:
- Para tablas grandes (más de 1 millón de filas)
- En columnas sobre las que filtras o unes con frecuencia
- Normalmente columnas de fecha más 1-2 columnas más
- No agrupes por columnas con demasiados valores únicos
4. Añadir restricciones de tabla
Utiliza restricciones para mantener limpios tus datos:
CREATE TABLE users (
user_id INTEGER PRIMARY KEY, -- Ensures unique IDs
email VARCHAR(255) UNIQUE, -- No duplicate emails
username VARCHAR(50) NOT NULL, -- Must have a value
age INTEGER CHECK (age >= 18) -- Must be 18 or older
);
Limitaciones importantes:
PRIMARY KEY
: Para identificadores únicosFOREIGN KEY
: Para enlazar tablasNOT NULL
: Para los campos obligatoriosUNIQUE
: Para campos que no pueden tener duplicadosCHECK
: Para una simple validación de datos
5. Errores comunes que debes evitar
No lo hagas:
-- Bad practice: No primary key
CREATE TABLE orders (
date VARCHAR, -- Wrong data type for dates
amount VARCHAR(10), -- Wrong data type for numbers
status text -- Inconsistent case with other columns
);
Haz esto en su lugar:
-- Good practice
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY,
order_date DATE,
amount DECIMAL(10,2),
status VARCHAR(20)
);
La versión mejorada garantiza la integridad de los datos con una clave primaria, utiliza tipos de datos correctos para las fechas y los números a fin de permitir un filtrado y unos cálculos eficaces, y mantiene la coherencia en las definiciones de las columnas para mejorar la legibilidad y la compatibilidad.
6. Consejos de actuación
Optimizar el rendimiento de las tablas en Snowflake puede mejorar significativamente la velocidad de consulta y reducir los costes de almacenamiento. Sigue estas prácticas recomendadas para garantizar que tus tablas sean eficientes y escalables.
- Crea tablas más pequeñas en lugar de una tabla enorme
- Añade descripciones de columna mediante COMENTARIO
- Establecer reglas automáticas de limpieza de datos
- Prueba el diseño de tu mesa con datos reales
- Controla el uso de la mesa y ajústalo según sea necesario
7. Buenas prácticas de seguridad
Unas medidas de seguridad adecuadas son esenciales para proteger los datos sensibles y controlar el acceso. Pon en práctica estas buenas prácticas para proteger tu entorno Snowflake de accesos no autorizados y violaciones de datos.
- Establece siempre permisos de acceso adecuados
- Utiliza la seguridad a nivel de fila cuando sea necesario
- Cifrar columnas sensibles
- Controla quién puede acceder a qué
- Revisa periódicamente los patrones de acceso
Recuerda: Una mesa bien diseñada facilita tu trabajo posterior. ¡Tómate tu tiempo para planificar la estructura de tu mesa antes de crearla!
Conclusión
En este tutorial, hemos cubierto los aspectos esenciales de la creación de tablas en Snowflake, incluyendo:
- Diferentes tipos de tablas (permanentes, temporales, externas y dinámicas)
- Ejemplos paso a paso para crear cada tipo
- Buenas prácticas para el diseño y la gestión de mesas
- Errores comunes que hay que evitar
Este conocimiento constituye la base para construir soluciones de datos eficientes y escalables en Snowflake.
Próximos pasos
Para profundizar tus conocimientos sobre Snowflake, consulta estos valiosos recursos:
1. Cursos interactivos:
- Introducción a Snowflake: Perfecto para principiantes
- Modelado de datos en Snowflake: Aprende diseño avanzado de mesas
2. Tutorías completas:
- Copo de nieve para principiantes: Una guía completa para principiantes
- Guía AI Cortex Copo de Nieve: Explora las capacidades de la IA
- Introducción al Snowpark: Conoce el marco para desarrolladores de Snowflake
- Tutorial de Copo de Nieve Ártico: Descubre las funciones para compartir datos
3. Recursos profesionales:
- Cómo aprender copo de nieve: Crea tu itinerario de aprendizaje
- Las mejores certificaciones de Snowflake: Planifica tu viaje de certificación
- Preguntas de la entrevista a Snowflake: Prepárate para las entrevistas de trabajo
No olvides que la mejor forma de aprender es haciendo. Empieza a crear tablas, experimenta con distintos tipos y construye proyectos reales. Cuando te encuentres con dificultades, consulta estos recursos y sigue explorando nuevas funciones de Snowflake.
Preguntas frecuentes sobre la mesa Crear copo de nieve
¿Cuáles son los distintos tipos de tablas en Snowflake?
Snowflake admite cuatro tipos principales de tablas: tablas permanentes para el almacenamiento de datos a largo plazo, tablas temporales para uso específico de la sesión, tablas externas para consultar fuentes de datos externas y tablas dinámicas para el mantenimiento automático de los resultados de las consultas.
¿Cómo creo una tabla básica en Snowflake?
Utiliza el comando CREATE TABLE
con el esquema que desees. Por ejemplo: "CREATE TABLE customers (customer_id INTEGER PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50))"
. Incluye tipos de datos y restricciones adecuados.
¿Qué es una tabla dinámica en Snowflake y cuándo debo utilizarla?
Las tablas dinámicas mantienen automáticamente actualizados los resultados de una consulta, de forma similar a las vistas materializadas. Son ideales para cuadros de mando en tiempo real, transformaciones automatizadas de datos y mantenimiento de datos agregados que necesitan actualizaciones frecuentes.
¿Cuáles son las mejores prácticas para dar nombre a las tablas en Snowflake?
Utiliza letras minúsculas con guiones bajos (snake_case), evita los espacios y los caracteres especiales, haz que los nombres sean descriptivos pero concisos, utiliza la forma singular para los nombres de las tablas y considera la posibilidad de añadir prefijos de entorno (dev_, test_, prod_).
¿Cómo puedo mejorar el rendimiento de las tablas en Snowflake?
Mejora el rendimiento utilizando claves de agrupación adecuadas, eligiendo tipos de datos correctos, estableciendo restricciones adecuadas, creando tablas centradas más pequeñas en lugar de grandes, y supervisando regularmente los patrones de uso de las tablas.

Soy un creador de contenidos de ciencia de datos con más de 2 años de experiencia y uno de los mayores seguidores en Medium. Me gusta escribir artículos detallados sobre IA y ML con un estilo un poco sarcastıc, porque hay que hacer algo para que sean un poco menos aburridos. He publicado más de 130 artículos y un curso DataCamp, y estoy preparando otro. Mi contenido ha sido visto por más de 5 millones de ojos, 20.000 de los cuales se convirtieron en seguidores tanto en Medium como en LinkedIn.
Los mejores cursos de DataCamp
curso
Introduction to Data Modeling in Snowflake
programa
Associate Data Engineer
blog
Las 32 mejores preguntas y respuestas de la entrevista sobre Snowflake para 2024

Nisha Arya Ahmed
20 min
tutorial
Creación y personalización de tablas dinámicas en Power BI
tutorial
Tutorial sobre cómo crear tablas de fechas en Power BI
tutorial
Cómo crear modelos de datos en Excel: Guía completa
tutorial
Tutorial de Modelado de datos en Power BI
tutorial
Introducción a los disparadores SQL: Guía para desarrolladores

Oluseye Jeremiah
13 min