Está en la página 1de 5

CALCULATE

La función CALCULATE evalúa una expresión en un contexto que es modificado por los filtros
que se ceden como argumentos

CALCULATE(<expresión>;<filtro1>;<filtro2>...)
Si definimos la medida Ventas como la suma de la columna SalesAmount:

Ventas = SUM(FactSales[SalesAmount])

Podemos crear una nueva medida basada en la función CALCULATE que modifique el
contexto de cálculo de forma que únicamente considere las ventas del año 2008:

Ventas 2008 = CALCULATE([Ventas];DimDate[CalendarYear]=2008)

ALL

La función ALL devuelve todas las filas de una tabla o todos los valores de una o varias
columnas, ignorando cualquier filtro que se haya aplicado.

Hay dos sintaxis posibles:

 ALL(Tabla)
 ALL(Columna1[; Columna2[; ...]])

SUMX(ALL(FactSales);FactSales[SalesAmount])
Este cálculo devolverá las ventas totales con independencia del contexto en el que se
aplique

FILTER

La función FILTER devuelve una tabla que representa un subconjunto de otra tabla.

FILTER(<tabla>;<filtro>)

Supongamos que hemos definido la medida


Ventas = SUM(FactSales[SalesAmount])
..que suma los importes de ventas. Imaginemos ahora que deseamos sumar las ventas de
aquellos productos cuyo precio sea superior al valor medio de los precios de venta

La solución pasa por añadir como argumento no la expresión compleja en cuestión, sino la
tabla de ventas una vez la hemos filtrado según ese mismo criterio:

Ventas por encima del promedio = CALCULATE(


[Ventas];
FILTER(
DimProduct;
DimProduct[UnitPrice]>AVERAGE(DimProduct[UnitPrice])
)
)
..lo que nos devuelve el resultado que buscábamos.

IF

La función IF comprueba si una condición se cumple y devuelve un valor en caso positivo


(si la evaluación de la condición devuelve el valor lógico TRUE) y otro en caso negativo (si
la evaluación de la condición devuelve el valor lógico FALSE).

IF(<condicion>; <valor_si_verdadero>[; <valor_si_falso>])

En este ejemplo se evalúa cada venta como "Gran venta" o "Pequeña venta" en función de
que el importe de la misma sea o no mayor que 100.000€:
COALESCE
La función COALESCE recibe como argumentos dos o más expresiones y devuelve el
resultado de la primera que no devuelva un BLANK.
COALESCE(<expression>, <expression>[, <expression>]…)

En este ejemplo, se añaden como parámetros la función BLANK() y varios escalares,


devolviéndose el primero encontrado ("A"):

resultado = COALESCE(BLANK(); "A"; BLANK(); "B")

SUMX

La función SUMX devuelve la suma de los valores que toma una expresión que se evalúa
para todas las filas de una tabla.
SUMX(<tabla>; <expresión>)
Supongamos que tenemos la siguiente tabla mostrando el listado de ventas, incluyendo el
número de elementos vendidos y su precio unitario:

Podemos definir la siguiente medida:

Ventas totales = SUMX(Ventas; Ventas[Cantidad]*Ventas[Precio])


...que realiza el cálculo Cantidad*Precio unitario para cada una de las filas y suma estos
valores. Si llevamos la medida a una visualización tipo "Card" obtenemos el resultado
deseado:
RELATED

La función RELATED devuelve el valor relacionado con la fila siendo considerada de una
columna de otra tabla (tabla remota), suponiendo que existe una relación entre la tabla en
la que se esté trabajando (tabla actual) y la remota, que esta relación sea de tipo "muchos
a uno" o "uno a uno" y que la tabla remota sea la correspondiente al lado "uno" -es decir,
que se trate de una tabla de dimensiones-.

Dicho con otras palabras, esta función permite, a partir de una tabla de hechos, extraer el
campo asociado a cada registro en una tabla de dimensiones.

RELATED(<columna>)
Si tenemos una tabla de ventas (Sales) que incluye una referencia al producto vendido, y
otra tabla de productos (Product) conteniendo el detalle de cada producto a la venta,
incluyendo su nombre en el campo ProductName, podemos añadir a la tabla Sales el
campo 'Product'[ProductName] con la siguiente expresión:

Product name = RELATED('Product'[ProductName])

AND

La función AND evalúa dos condiciones y devuelve el valor lógico TRUE si ambas son
ciertas, y el valor lógico FALSE en caso contrario
AND(<condición1>;<condición2>)
En este ejemplo se desea comprobar si el producto vendido es el "A" y su precio mayor de
1000€:

OR
La función OR evalúa dos condiciones y devuelve el valor lógico TRUE si alguna de ellas
es cierta, y el valor lógico FALSE en caso contrario.

OR(<condicion1>; <condicion2>)
En este ejemplo se desea evaluar que el producto sea el "D" o que el precio de venta sea
superior o igual a 2.000€.

También podría gustarte