Función CALCULATE (DAX)
Evalúa una expresión en un contexto modificado por los filtros especificados.
Sintaxis
CALCULATE(<expression>,<filter1>,<filter2>…)
Parámetros
Término |
Definición |
---|---|
expression |
Expresión que se va a evaluar. |
filter1,filter2,… |
(opcional) Lista separada por comas de expresiones booleanas o una expresión de tabla que define un filtro. |
La expresión usada como el primer parámetro es, esencialmente, la misma que una medida.
Las siguientes restricciones se aplican a las expresiones booleanas que se usan como argumentos:
La expresión no puede hacer referencia a una medida.
La expresión no puede usar una función CALCULATE anidada.
La expresión no puede usar ninguna función que recorra una tabla o devuelva una tabla, incluidas las funciones de agregación.
Sin embargo, una expresión booleana puede usar cualquier función que busque un valor único o que calcule un valor escalar.
Valor devuelto
El valor que es el resultado de la expresión.
Comentarios
Si se han filtrado los datos, la función CALCULATE cambia el contexto en el que se filtran los datos y evalúa la expresión en el nuevo contexto que especifique. Por cada columna usada en un argumento de filtro, se quitan los filtros existentes en dicha columna y en su lugar se aplica el filtro usado en el argumento.
Ejemplo
Para calcular la proporción de ventas actuales de los vendedores en relación con las ventas totales de los vendedores, agregue una medida a la tabla dinámica que calcule la suma de las ventas de la celda actual (el numerador) y la divida por las ventas totales (el denominador). Para asegurarse de que el denominador permanece igual independientemente del modo en el que la tabla dinámica filtre o agrupe los datos, la parte de la fórmula que representa el denominador debe usar una función ALL para borrar cualquier filtro y crear el total correcto.
La tabla siguiente muestra los resultados cuando se crea la nueva medida, llamada All Reseller Sales Ratio, usando la fórmula de la sección de códigos.
Para ver su funcionamiento, agregue el campo CalendarYear al área Etiquetas de fila de la tabla dinámica, y agregue el campo ProductCategoryName al área Etiquetas de columna. A continuación, agregue la nueva medida al área Valores de la tabla dinámica. Para mostrar los números como porcentajes, aplique el formato de número de porcentaje al área de la tabla dinámica que contiene la nueva medida, All Reseller Sales Ratio.
Ventas de todos los distribuidores |
Etiquetas de columna |
|
|
|
|
---|---|---|---|---|---|
Row Labels |
Accessories |
Bikes |
Clothing |
Components |
Grand Total |
2001 |
0.02% |
9.10% |
0.04% |
0.75% |
9.91% |
2002 |
0.11% |
24.71% |
0.60% |
4.48% |
29.90% |
2003 |
0.36% |
31.71% |
1.07% |
6.79% |
39.93% |
2004 |
0.20% |
16.95% |
0.48% |
2.63% |
20.26% |
Grand Total |
0.70% |
82.47% |
2.18% |
14.65% |
100.00% |
=( SUM('ResellerSales_USD'[SalesAmount_USD]))
/CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
,ALL('ResellerSales_USD'))
La expresión CALCULATE en el denominador permite que la expresión de suma incluya todas las filas en el cálculo. Esto invalida los filtros implícitos para CalendarYear y ProductCategoryName que existen para la parte del numerador de la expresión.
Funciones relacionadas
Mientras que la función CALCULATE requiere como primer argumento una expresión que devuelva un valor único, la función CALCULATETABLE usa una tabla de valores.