Excel DAX: realización de cálculos complejos

Las fórmulas de DAX pueden realizar cálculos complejos que implican agregaciones personalizadas, filtrado y el uso de valores condicionales. Puede hacer lo siguiente con DAX:

  • Cree cálculos personalizados para una tabla dinámica.
  • Aplicar un filtro a una fórmula DAX.
  • Elimine los filtros de forma selectiva para crear una proporción dinámica.
  • Utilice un valor de un bucle externo.

Creación de cálculos personalizados para una tabla dinámica

Las funciones de DAX CALCULATE y CALCULATETABLE son potentes y flexibles. Son útiles para definir campos calculados. Estas funciones de DAX le permiten cambiar el contexto en el que se realizará el cálculo. También puede personalizar el tipo de agregación u operación matemática a realizar.

Función CALCULAR

CALCULAR (<expresión>, [<filtro 1>], [<filtro 2>]…)

La función CALCULAR evalúa la expresión dada en un contexto que es modificado por cero o más filtros especificados.

Si sus datos se han filtrado, la función CALCULAR cambia el contexto en el que se filtran los datos y evalúa la expresión en el nuevo contexto que especifique mediante los filtros. Eso significa que todos los filtros existentes en la columna especificada se eliminan y en su lugar se aplica el filtro utilizado en el argumento de filtro.

Ejemplo

Suponga que desea mostrar el porcentaje de medallas filtradas por deportes por nombre de país. Su cálculo debe obtener el valor porcentual anulando el filtro que aplica en País en la tabla dinámica.

  • Defina un campo calculado: porcentaje del recuento de medallas como se muestra en la siguiente captura de pantalla.

Con esta fórmula DAX, todas las filas de la tabla Resultados se tienen en cuenta en la función CALCULAR con el filtro que contiene la función TODOS. De esta forma, tienes el recuento total en el denominador.

Su tabla dinámica será como se muestra en la siguiente captura de pantalla.

En la captura de pantalla anterior, el país se filtra a EE. UU. Y los 18 valores principales se muestran en la tabla dinámica. A continuación, puede filtrar valores dinámicamente en la tabla dinámica. Sin embargo, los cálculos serán correctos según la fórmula DAX personalizada que utilizó.

La función CALCULAR toma una tabla de valores y realiza la misma acción que la función CALCULAR.

Filtrar datos en fórmulas

Puede crear filtros dentro de las fórmulas DAX para seleccionar los valores de los datos de origen para usarlos en los cálculos. Puede hacer esto definiendo una expresión de filtro y usándola junto con la tabla que es una entrada a la fórmula DAX.

La expresión de filtro le permite obtener un subconjunto de los datos de origen. El filtro se aplica dinámicamente cada vez que actualiza los resultados de la fórmula DAX, según el contexto actual de sus datos, y puede estar seguro de obtener resultados precisos y esperados.

La expresión de filtro normalmente contiene una función de filtro DAX que devuelve solo filas seleccionadas de la tabla, que luego se pueden usar como argumento para otra función DAX que esté usando para la agregación de datos.

Ejemplo

La siguiente captura de pantalla muestra la definición de un campo calculado que proporciona el recuento de medallas solo para los deportes de verano.

Con este campo calculado, la tabla dinámica se ve como se muestra en la siguiente captura de pantalla.

Como puede observar, los valores en la tabla dinámica en el lado derecho con el nuevo campo calculado coinciden con los que están en la tabla dinámica en el lado izquierdo con el filtro en el campo Temporada aplicado explícitamente.

Note - Las funciones de filtro y valor de DAX devuelven una tabla, pero nunca devuelven la tabla o las filas directamente al modelo de datos y, por lo tanto, siempre están integradas en otra función de DAX.

Para obtener más información sobre estas funciones de DAX, consulte el capítulo Funciones de filtro de DAX.

Agregar y eliminar filtros dinámicamente

Las fórmulas de DAX que usa en una tabla dinámica pueden verse afectadas por el contexto de la tabla dinámica. Sin embargo, puede cambiar el contexto de forma selectiva agregando o quitando filtros. Puede utilizar las funciones de DAX ALL y ALLEXCEPT para seleccionar dinámicamente las filas independientemente del contexto de la tabla dinámica.

Además, puede utilizar las funciones DAX DISTINCT y VALUES para devolver valores distintos.

Usar un valor de un bucle externo

Puede utilizar un valor de un ciclo anterior para crear un conjunto de cálculos relacionados con la función DAX EARLIER. Esta función DAX admite hasta dos niveles de bucles anidados.