(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo crear una Materialized View en Warehouse en Microsoft Fabric

João Barros 24 de October de 2026 6 min de lectura

Este tutorial muestra cómo crear una Materialized View en Warehouse en Microsoft Fabric para acelerar consultas T-SQL sobre datos de un Lakehouse. Una Materialized View guarda resultados pre-calculados, reduce latencia y evita repetir transformaciones pesadas en cada consulta. En escenarios con millones de filas (por ejemplo, 50–200M de registros de ventas), una Materialized View puede reducir tiempos de respuesta de segundos/minutos a décimas de segundo, dependiendo del tamaño del Warehouse.

Prerequisitos

  • Cuenta con acceso a un workspace en Microsoft Fabric y permisos para crear un Warehouse (rol con privilegios de Owner o Contributor en el workspace).
  • Un Lakehouse con una tabla Delta ya cargada (p. ej.: sales_delta). Idealmente, la tabla debe tener índices de partición por fecha o columnas que faciliten el filtrado (p. ej. sales_date, region).
  • Conocimientos básicos de T-SQL y del concepto de Materialized View. Conocer los costes de cómputo (p. ej.: Small/Medium/Large o vCores) ayuda a elegir el Warehouse correcto.
  • Estimación de volumen: por ejemplo, 10M a 200M de filas, con una media de 5–20 columnas. Esto condiciona la frecuencia de refresh y el espacio usado por la Materialized View.

Paso 1: Crear o abrir un Warehouse

La Materialized View residirá en un Warehouse. Si ya tiene un Warehouse, ábralo; en caso contrario, cree uno nuevo en el workspace. Configure el tamaño según la carga esperada: para pruebas, un tamaño Small o 2 vCores es suficiente; para producción con informes concurrentes, considere Medium/4 vCores o más. Recuerde que los costes por hora aumentan con el tamaño, por lo que debe equilibrar rendimiento y coste. Configure también el auto-pause si está disponible, para reducir costes durante periodos de inactividad.

Paso 2: Verificar la tabla base en el Lakehouse

Compruebe que la tabla Delta en el Lakehouse es accesible desde el Warehouse. En el Warehouse, abra una query T-SQL y haga una consulta simple para validar los datos y obtener estimaciones de cardinalidad.

SELECT TOP 10 *
FROM lakehouse.your_lakehouse.sales_delta;

Haga también un conteo aproximado para evaluar el impacto:

SELECT COUNT(*) AS total_rows
FROM lakehouse.your_lakehouse.sales_delta;

Si devuelve, por ejemplo, 125000000, sepa que estamos en el orden de 125M de filas — eso influye en la estrategia de refresh y de partición.

Paso 3: Elegir la consulta para materializar

Piense qué consulta quiere acelerar: agregaciones, joins o transformaciones pesadas. Simplifique la lógica a la versión que tenga sentido materializar. Priorice columnas y periodos más usados por los informes (p. ej.: últimos 90 días). Ejemplos concretos ayudan: si los informes muestran total de ventas por día y región para los últimos 90 días, materialice solo ese intervalo y esas columnas.

-- Ejemplo de consulta que vamos a materializar
SELECT
  sales_date,
  region,
  SUM(amount) AS total_amount,
  COUNT(*) AS transactions
FROM lakehouse.your_lakehouse.sales_delta
WHERE sales_date >= DATEADD(day, -90, CURRENT_DATE)
GROUP BY sales_date, region;

Esta elección reduce espacio y tiempo: en lugar de guardar las 20 columnas de la tabla original, guarda solo 4 columnas agregadas para 90 días * número de regiones (p. ej. 90 * 10 = 900 registros por periodo).

Paso 4: Crear la Materialized View en el Warehouse

En el Warehouse, ejecute un CREATE MATERIALIZED VIEW con la consulta elegida. Dé un nombre claro y defina las columnas resultantes. Verifique que la consulta es determinista y evita funciones volátiles que impidan una materialización eficiente.

CREATE MATERIALIZED VIEW mv_sales_daily_region
AS
SELECT
  sales_date,
  region,
  SUM(amount) AS total_amount,
  COUNT(*) AS transactions
FROM lakehouse.your_lakehouse.sales_delta
WHERE sales_date >= DATEADD(day, -90, CURRENT_DATE)
GROUP BY sales_date, region;

Tras crearla, valide el tamaño en disco y los metadatos del MV (en unos minutos, dependiendo del volumen inicial puede tardar segundos o minutos en poblarse).

Paso 5: Programar actualizaciones (Refresh) de la Materialized View

Decida si la Materialized View se actualizará manualmente o automáticamente. En el Fabric Warehouse, puede usar REFRESH MATERIALIZED VIEW para forzar la actualización; para automatizar, cree una programación con Pipelines, Tasks o Jobs externos. Frecuencias comunes: cada 15 minutos para informes casi en tiempo real, cada hora para dashboards operativos, o diaria para análisis históricos.

-- Refresh manual
REFRESH MATERIALIZED VIEW mv_sales_daily_region;

-- Si desea automatizar con T-SQL dentro del Warehouse (ejemplo simplificado)
-- Puede integrarse con un Pipeline o un Job programado en su entorno.

Considere refreshes incrementales, cuando estén soportados, para reducir coste. Monitorice el tiempo de refresh — si tarda más de, por ejemplo, 5 minutos para un refresh horario, revise la estrategia (particiones, filtros o dimensionamiento del Warehouse).

Paso 6: Consultar la Materialized View para acelerar informes

Reemplace consultas pesadas por la Materialized View. Esto reduce tiempo de respuesta y coste computacional. En lugar de agregaciones sobre 125M de filas, estará leyendo 900–10k filas pre-aggregadas, dependiendo del periodo y de la cardinalidad.

SELECT sales_date, region, total_amount
FROM mv_sales_daily_region
WHERE sales_date BETWEEN '2026-01-01' AND '2026-01-31'
ORDER BY sales_date;

Esto es especialmente útil para Power BI u otras herramientas que realizan muchas consultas ad-hoc: tiempos de respuesta más rápidos y menos carga en el Warehouse.

Verificar el resultado

Compare tiempos de ejecución entre la consulta original y la consulta a la Materialized View usando EXPLAIN o midiendo la duración. Verifique también que los valores agregados coinciden tras un REFRESH. Ejemplos de comprobaciones:

-- Medir tiempo y plan
EXPLAIN SELECT * FROM mv_sales_daily_region WHERE sales_date = '2026-01-15';

-- Comparar totales
SELECT SUM(amount) FROM lakehouse.your_lakehouse.sales_delta WHERE sales_date = '2026-01-15';
SELECT total_amount FROM mv_sales_daily_region WHERE sales_date = '2026-01-15' AND region = 'North';

Si hay diferencias, haga REFRESH y revalide. Registre también métricas de coste y latencia durante algunas semanas para cuantificar ganancias (p. ej.: reducción de 70–95% en el tiempo de CPU para consultas agregadas).

Conclusión

Las Materialized Views en Warehouse en Microsoft Fabric son útiles para acelerar consultas analíticas y reducir costes de procesamiento repetido. Próximos pasos: probar políticas de refresh (frecuencia e incremental), automatizar el refresh con Pipelines o Jobs y monitorizar el impacto en coste/rendimiento. Consejo práctico: pruebe a materializar solo las columnas y periodos más usados (p. ej. últimos 30–90 días) para optimizar espacio y velocidad; haga pruebas A/B antes de aplicarlo a toda la producción.