Una de las preguntas más habituales cuando se diseñan procesos de carga en Microsoft Fabric Data Warehouse es si resulta más eficiente utilizar un CREATE TABLE AS SELECT (CTAS) o un INSERT INTO…SELECT para copiar datos entre tablas. La respuesta corta es: depende de si la tabla destino ya existe y del objetivo de la carga. Sin embargo, entender las diferencias puede marcar una gran diferencia en tiempos de ejecución cuando trabajamos con cientos de millones de registros.
¿Qué es CTAS?
CTAS (Create Table As Select) permite crear una nueva tabla a partir del resultado de una consulta:
CREATE TABLE dbo.FactSales_NewASSELECT *FROM dbo.FactSales_Stage;
Según Microsoft, Warehouse en Fabric ejecuta las operaciones CTAS de forma paralela, convirtiéndolo en un mecanismo altamente eficiente para transformaciones de datos y creación de nuevas tablas.
La principal ventaja es que el motor puede optimizar simultáneamente:
- La creación física de la tabla.
- La distribución de los datos.
- La escritura paralela.
- La generación de metadatos.
Todo ello en una única operación.
¿Qué es INSERT… SELECT?
Por el contrario, cuando la tabla destino ya existe, normalmente se utiliza:
INSERT INTO dbo.FactSalesSELECT *FROM dbo.FactSales_Stage;
Este patrón es imprescindible cuando:
- La tabla ya forma parte del modelo dimensional.
- Existen permisos asignados.
- Hay dependencias con procesos downstream.
- Necesitamos conservar la estructura existente.
Microsoft clasifica esta aproximación como una de las opciones estándar para ingerir datos en tablas existentes utilizando T-SQL ya que los INSERT masivos están optimizados.
La diferencia fundamental
El diferencial clave es que CTAS crea una tabla nueva, mientras que INSERT carga datos en una tabla existente. Por lo tanto, si la tabla destino ya está creada, técnicamente no se está comparando exactamente «peras con peras»:
| Operación | Crea tabla | Inserta datos | Optimización paralela |
|---|---|---|---|
| CTAS | Sí | Sí | Sí |
| INSERT…. SELECT | No | Sí | Menos optimizada |
| COPY INTO | No | Sí | Máxima para ficheros |
La propia documentación de Fabric destaca CTAS para generación de nuevas tablas derivadas de otras tablas, Lakehouses o incluso ficheros externos mediante OPENROWSET.
¿Por qué suele ser más rápido CTAS?
Cuando se analiza el comportamiento de los motores MPP (Massively Parallel Processing) que inspiran Fabric Warehouse, la principal ventaja de CTAS es que el motor no necesita gestionar una estructura preexistente, por lo que durante la operación puede:
- Crear simultáneamente almacenamiento y metadatos
- Escribir directamente en la estructura óptima
- Distribuir la carga entre los nodos de ejecución
- Aprovechar procesos masivos de escritura paralela
Microsoft indica explícitamente que CTAS ejecuta la ingestión «in parallel», convirtiéndolo en una opción altamente eficiente para constuir tablas derivadas.
Escenarios reales
Escenario 1: Regeneración completa de una tabla
El sistema cada noche necesita reconstruir una tabla de hechos de algo más de 500 millones de registros. Para ello, muchos equipos implementan:
TRUNCATE TABLE dbo.FactSales;INSERT INTO dbo.FactSalesSELECT ...
Sin embargo, una alternativa frecuentemente más eficaz consiste en:
CREATE TABLE dbo.FactSales_NewASSELECT ...
y posteriormente reemplazar la tabla anterior.
NOTA: Este patrón minimiza el tiempo de carga y permite incluso implementar estrategias de rollback más sencillas.
Escenario 2: Carga incremental
Si únicamente se deben añadir los pedidos generados durante el día:
INSERT INTO dbo.FactSalesSELECT *FROM dbo.StagingSalesWHERE LoadDate = CURRENT_DATE;
En este caso CTAS no aporta ventajas ya que se necesita conservar la tabla de destino.
Escenario 3: Creación de agregados
Para crear una tabla analítica:
CREATE TABLE dbo.CustomerRevenueASSELECT CustomerKey, SUM(Revenue) AS TotalRevenueFROM dbo.FactSalesGROUP BY CustomerKey;
Este es precisamente uno de los casos de uso recomendados por Microsoft para CTAS.
¿Y qué ocurre con COPY INTO?
Es la tercera opción que mucha veces pasa desapercibida.
Cuando el origen son ficheros CSV, Parquet o datos almacenados en OneLake, Microsoft recomienda utilizar:
COPY INTO dbo.FactSalesFROM '...'
Es el mecanismo que proporciona mayor throughout de ingestión para cargas masivas desde almacenamiento. Por lo tanto:
- COPY INTO para cargar datos desde ficheros
- CTAS para generar nuevas tablas a partir de consultas
- INSERT…. SELECT para alimentar tablas existentes
Recomendación práctica para arquitectos de datos
En proyectos de modern data platform donde se utilizan Fabric Data Warehouse, Databricks o Synapse, suelo aplicar la siguiente regla:
Utiliza CTAS cuando:
✅ Vas a crear una tabla nueva.
✅ Necesitas transformar grandes volúmenes de datos.
✅ Vas a reconstruir una tabla completa.
✅ Buscas el máximo rendimiento posible.
Utiliza INSERT…SELECT cuando:
✅ La tabla ya existe.
✅ Realizas cargas incrementales.
✅ Debes conservar permisos y dependencias.
✅ La tabla forma parte del modelo productivo.
Utiliza COPY INTO cuando:
✅ El origen son ficheros.
✅ Estás realizando ingestiones masivas en bruto.
✅ El objetivo es maximizar throughput de carga.
Conclusión
Aunque ambas opciones pueden copiar exactamente los mismo datos, no están pensadas para el mismo propósito. CTAS suele ofrecer el mejor rendimiento cuando necesitamos crear una tabla nueva, ya que Fabric ejecuta la carga de forma paralela y optimizada para este escenario. Por el contrario, INSERT…SELECT sigue siendo la opción correcta cuando la tabla destino ya existe y queremos conservar su estructura y dependencias.
La recomendación práctica es sencilla: si tu proceso reconstruye completamente una tabla muy grande, considera utilizar un patrón CTAS + swap. Si realizas cargas incrementales sobre tablas existentes, mantén INSERT…SELECT. Y si los datos proceden de ficheros, evalúa COPY INTO, que actualmente es la opción de mayor rendimiento para ingesta masiva en Fabric Data Warehouse.
Referencias
Documentación oficial
Microsoft. (2026). Ingest data into the warehouse. Microsoft Learn. https://learn.microsoft.com/en-us/fabric/data-warehouse/ingest-data
Microsoft. (2026). Ingest data into your warehouse using Transact-SQL. Microsoft Learn. https://learn.microsoft.com/en-us/fabric/data-warehouse/ingest-data-tsql
Fuentes complementarias
Drive Data Science. (s.f.). Fabric warehouse advanced: COPY INTO, CTAS, dynamic management views, query insights, visual query editor, SSMS connectivity, and T-SQL with notebooks. Drive Data Science. https://www.drivedatascience.com/fabric-warehouse-advanced-copy-into-ctas-dmv-ssms-optimization/
Foto de portada gracias a Ann H: https://www.pexels.com/es-es/foto/zapatos-pavimento-zapatillas-flechas-2646530/