referencia rápida · Power BI para finanzas
las 10 funciones DAX que más vas a usar.
agregación
iteradora
matemática
filtro y contexto
tiempo
lógica
FONDO GRIS = sintaxis· FONDO DE COLOR = ejemplo
SUM
AGREGACIÓN · DEVUELVE UN VALOR
01
Suma los valores visibles de una única columna del modelo
SUM ( Tabla[Columna] )
Ud vendidas =
SUM ( factPedidos[Ud] )
⚠ · no admite expresiones (Ud × precio) ni recorre filas. Sin filas visibles devuelve BLANK, no 0
truco · es muy rápida y la medida base ideal para reutilizar en otras.
MAX / MIN
AGREGACIÓN · DEVUELVE UN VALOR
02
El mayor o menor valor visible de una columna
MAX ( Tabla[Columna] ) · MAX ( expr1, expr2 )
Último día con pedidos =
MAX ( factPedidos[FechaPedido] )
⚠ · ignora BLANK y no itera. Para máx de una expresión fila a fila, usa MAXX
truco · guarda MAX ( dimFechas[Fecha] ) en VAR y úsala en acumulados
SUMX
ITERADORA · DEVUELVE UN VALOR
03
Recorre (itera) la tabla fila a fila (contexto de fila) y suma. Mismo patrón que AVERAGEX, MAXX, MINX, etc.
SUMX ( Tabla, Expresión )
Ventas =
SUMX (
factPedidos,
factPedidos[Ud] * factPedidos[precioVentaUd]
)
⚠ · dentro de la iteración evita poner IF o DIVIDE
truco · si es posible, tabla con pocos valores distintos (poca cardinalidad): usa VALUES(tabla[Columna])
DIVIDE
MATEMÁTICA · DEVUELVE UN VALOR
04
División segura: controla el denominador 0 o BLANK
DIVIDE ( numerador, denominador, [alternativa] )
Ud por cliente =
DIVIDE (
[Ud vendidas],
DISTINCTCOUNT ( factPedidos[ID_cliente] )
)
⚠ · no usar dentro de una iteración (ejem. SUMX), usa el operador / para dividir, si no hay riesgo de 0 o BLANK en denominador
truco · no pongas BLANK() como 3er arg (ya es BLANK () por defecto)
CALCULATE
CONTEXTO · DEVUELVE UN VALOR
05
Evalúa una expresión modificando el contexto de filtro
CALCULATE ( Expresión, filtro1, filtro2 … )
Ud 2025 =
CALCULATE (
[Ud vendidas],
dimFechas[Año] = 2025
)
⚠ · cada filtro sustituye al que hubiera en esa columna (prevalece)
truco · en 1er arg, pasa medidas base o expresiones calculables, NO variables (una variable contiene un valor fijo que no se calcula)
FILTER
contexto · devuelve tabla
06
Devuelve solo las filas que cumplen la condición
FILTER ( Tabla estrecha, Condición )
Días laborables con pedidos =
COUNTROWS (
FILTER (
ALL ( factPedidos[FechaPedido] ),
WEEKDAY ( factPedidos[FechaPedido], 2 ) <= 5 )
)
⚠ · nunca pases tabla entera: solo cols. de condiciones (usa ALL/VALUES).
truco · Si la condición no va fila a fila, mejor un filtro simple
ALL / ALLSELECTED
CONTEXTO · MODIFICA CONTEXTO
07
Quitan filtros. Fuera de CALCULATE, devuelven tabla única
ALL ( Tabla | Columnas… ) · ALLSELECTED ( Tabla | Columnas… )
% sobre total =
DIVIDE (
[Ud vendidas],
CALCULATE (
[Ud vendidas],
ALLSELECTED ( dimFechas[Trimestre] ) )
)
⚠ · ALL ignora todos los filtros. ALLSELECTED respeta los filtros externos)
truco · para acumulados con ALLSELECTED pásale (dimCalendario) entera
VALUES
contexto · devuelve tabla
08
Valores distintos visibles de una columna, como tabla
VALUES ( Tabla[Columna] )
Clientes con pedidos =
COUNTROWS ( VALUES ( factPedidos[ID_cliente] ) )
⚠ · puede añadir una fila BLANK si hay claves huérfanas en hechos
truco · es la tabla estrecha ideal para FILTER
DATEADD
tiempo · devuelve tabla
09
Fechas del contexto desplazadas N intervalos
DATEADD ( dimCalendario[Fecha], n, intervalo )
Ud año anterior =
CALCULATE (
[Ud vendidas],
DATEADD ( dimFechas[Fecha], -1, YEAR )
)
⚠ · se usa dentro de CALCULATE
truco · con periodos incompletos, devuelve mismo tramo comparado
IF
LÓGICA · DEVUELVE UN VALOR
10
No calcula: elige entre dos resultados según TRUE / FALSE
IF ( Condición, si_verdadero, [si_falso] )
Ud vendidas (solo si > 22) =
IF ( [Ud vendidas] > 22, [Ud vendidas] )
⚠ · Sin 3er arg devuelve BLANK(). No itera por sí sola. No devuelve tablas
truco · con tres ramas o más, SWITCH ( TRUE ( ), condición, valor, … ) se lee mucho mejor que IF anidados
VAR
palabra clave + RETURN
Optimiza cálculos y hace el código más ordenado y entendible
1Se evalúa una sola vez, donde se declara.
2Acumula y fija el valor del contexto (ese valor ya no cambia.)
3Toda medida con VAR debe terminar en un único RETURN.
consejo:nombra con guion bajo: _actual, _anterior, etc. (después, cuando quieras invocar variable, escribe el guion bajo)
Variación % Ud vs año anterior =
VAR _actual = [Ud_vend]
VAR _anterior = CALCULATE (
[Ud_vend],
DATEADD ( dimFechas[Fecha], -1, YEAR )
)
VAR _result = DIVIDE ( _actual - _anterior, ABS ( _anterior ) )
RETURN _result