Tablas creadas con fórmulas DAX directamente en el modelo. Aprende sus casos de uso, los patrones más útiles y cuándo es mejor evitarlas
IntermedioAvanzado
🔍
¿Qué son las Tablas Calculadas?
Tablas definidas con DAX en lugar de Power Query
Una tabla calculada es una tabla que creas directamente en el modelo de datos usando una fórmula DAX, sin necesidad de cargar datos desde un origen externo. Se calcula durante la actualización del modelo y el resultado se almacena en memoria, como cualquier otra tabla.
Diferencias con tablas cargadas desde Power Query:
Se definen con DAX en la vista de datos o mediante el menú "Nueva tabla"
No tienen conexión con el origen de datos — se calculan a partir del modelo
Pueden referenciar otras tablas del modelo en su definición
Se recalculan en cada actualización del modelo
Aparecen con un icono especial (calculadora) en el panel de campos
💡 ¿Para qué sirven? Las tablas calculadas son útiles para crear tablas de soporte que no vienen del origen de datos: listas de opciones para slicers, tablas de parámetros, dimensiones derivadas de otras tablas, tablas auxiliares para RLS, etc.
💻
Sintaxis Básica
Formas de crear tablas calculadas
// 1. Tabla con datos fijos (DATATABLE)
TablaMeses =
DATATABLE(
"NumeroMes", INTEGER,
"NombreMes", STRING,
{
{1, "Enero"}, {2, "Febrero"}, {3, "Marzo"},
{4, "Abril"}, {5, "Mayo"}, {6, "Junio"},
{7, "Julio"}, {8, "Agosto"}, {9, "Septiembre"},
{10, "Octubre"}, {11, "Noviembre"}, {12, "Diciembre"}
}
)
// 2. Tabla derivada de otra tabla (SUMMARIZE)
ResumenCategorias =
SUMMARIZE(
DimProducto,
DimProducto[Categoria],
DimProducto[Subcategoria]
)
// 3. Tabla con todas las combinaciones posibles
ProductosXTienda =
CROSSJOIN(
SELECTCOLUMNS(DimProducto, "Producto", DimProducto[Nombre]),
SELECTCOLUMNS(DimTienda, "Tienda", DimTienda[Nombre])
)
// 4. Tabla que copia valores únicos (útil para slicers sin conexión)
TablaKPIs =
UNION(
ROW("KPI", "Ventas"),
ROW("KPI", "Margen"),
ROW("KPI", "Unidades"),
ROW("KPI", "Clientes Nuevos")
)
🔌
Tablas de Desconexión (Disconnected Tables)
El patrón más potente para slicers dinámicos
Una tabla de desconexión es una tabla calculada que no tiene ninguna relación con el resto del modelo. Se usa para crear slicers con opciones que el usuario puede seleccionar y que luego las medidas DAX leen con SELECTEDVALUE o ISFILTERED.
Ejemplo: slicer para seleccionar la métrica a mostrar
// 1. Crear la tabla de desconexión (sin relaciones)
SeleccionMetrica =
DATATABLE(
"ID", INTEGER,
"Metrica", STRING,
{
{1, "Ventas"},
{2, "Unidades"},
{3, "Margen"},
{4, "Ticket Medio"}
}
)
// 2. Medida que lee la selección del slicer
Metrica Seleccionada =
SWITCH(
SELECTEDVALUE(SeleccionMetrica[Metrica], "Ventas"),
"Ventas", [Ventas Totales],
"Unidades", [Unidades Totales],
"Margen", [Margen Total],
"Ticket Medio",[Ticket Medio],
[Ventas Totales] -- valor por defecto
)
// 3. En el visual, usa [Metrica Seleccionada] como valor
// y el slicer con SeleccionMetrica[Metrica]
// El usuario elige la métrica y el gráfico se actualiza solo
Este patrón es muy usado en dashboards ejecutivos donde el usuario quiere cambiar la métrica principal sin navegar a otra página.
🎲
Parámetros What-If
Tablas calculadas para análisis de escenarios
Power BI tiene la función "Parámetros what-if" (en la cinta Modelado) que automáticamente crea una tabla calculada con un rango de valores numéricos para simular escenarios.
// Lo que Power BI crea automáticamente al definir un parámetro what-if
// Parámetro: "Tasa de Descuento" del 0% al 30%, incremento 1%
Tasa Descuento =
GENERATESERIES(0, 0.30, 0.01) // Genera 0, 0.01, 0.02... 0.30
// Y crea automáticamente esta medida:
Valor Tasa Descuento =
SELECTEDVALUE('Tasa Descuento'[Tasa Descuento], 0)
// Uso en tus medidas:
Ventas con Descuento =
[Ventas Totales] * (1 - [Valor Tasa Descuento])
📌 Buena práctica: Puedes crear parámetros what-if manualmente con GENERATESERIES en lugar de usar el asistente — te da más control sobre el formato y el nombre. El asistente es útil para empezar rápido, pero el resultado es el mismo.
⚠️
Cuándo Evitar las Tablas Calculadas
No son la solución para todo
Las tablas calculadas son poderosas, pero tienen desventajas importantes que debes considerar:
Situaciones donde NO usar tablas calculadas:
Transformaciones de datos: Si puedes hacerlo en Power Query, hazlo ahí. Las transformaciones en PQ no consumen RAM del modelo ni ralentizan las actualizaciones.
Tablas grandes derivadas de hechos: Una tabla calculada que resume millones de filas se almacena completa en memoria. Mejor usar agregaciones o hacer el resumen en la fuente.
Datos que necesitan actualización frecuente: Las tablas calculadas se recalculan en cada actualización completa. Añaden tiempo al proceso.
Datos estáticos que podrías importar: Si la tabla tiene datos fijos (listas de países, meses, etc.), impórtala directamente desde un Excel o CSV en lugar de crearla con DATATABLE.
Regla de decisión:
¿Puedes crearlo en Power Query? → Hazlo en Power Query
¿Viene de datos externos? → Impórtala como tabla normal
¿Es una tabla auxiliar o de parámetros sin origen? → Usa tabla calculada DAX
⚠️ Ojo con esto: Las tablas calculadas no pueden contener columnas de tipo texto libre muy largo (memorias, comentarios) de forma eficiente. VertiPaq gestiona mal columnas con alta cardinalidad de texto largo. En esos casos, es mejor dejar esos campos en Power Query o en la fuente.
🚀 ¡Siguiente nivel! Con las tablas calculadas dominas la capa de datos del modelo. El siguiente paso avanzado es aprender Optimización de Rendimiento para asegurarte de que tu modelo escala bien. Para técnicas de análisis de escenarios más sofisticadas, explora los Patrones Avanzados de Modelado.