Modificar el contexto de filtro

Completado

Puede usar la función CALCULATE para modificar el contexto de filtro en sus fórmulas. La sintaxis de la función CALCULATE es la siguiente:

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

La función requiere pasar una expresión que devuelve un valor escalar y tantos filtros como sea necesario. La expresión puede ser una medida (que es una expresión con nombre) o cualquier expresión que se pueda evaluar en el contexto de filtro.

Los filtros pueden ser expresiones booleanas o expresiones de tabla. También es posible pasar funciones de modificación de filtro que proporcionan más control cuando se modifica el contexto del filtro.

Cuando tiene varios filtros, se evalúan utilizando el operador lógico AND, lo que significa que todas las condiciones deben ser TRUE al mismo tiempo.

Nota

La función CALCULATETABLE hace exactamente lo mismo que la función CALCULATE, con la diferencia de que modifica el contexto de filtro que se aplica a una expresión que devuelve un objeto de tabla. En este módulo, las explicaciones y los ejemplos usan la función CALCULATE, pero tenga en cuenta que estos escenarios también podrían aplicarse a la función CALCULATETABLE.

Aplicar filtros de expresión booleana

Un filtro de expresión booleana es una expresión que se evalúa como TRUE o FALSE. Los filtros booleanos deben cumplir las siguientes reglas:

  • Solo pueden hacer referencia a una columna única.
  • No pueden hacer referencia a medidas.
  • No pueden usar las funciones que examinan o devuelven una tabla que incluya funciones de agregación, como SUM.

Para realizar las tareas de este ejemplo, descargue y abra el archivo Adventure Works DW 2020 M06.pbix. Luego, añada la siguiente medida en la tabla Sales, que filtra la medida Revenue mediante un filtro de expresión booleana para los productos rojos.

Revenue Red =
CALCULATE(
    [Revenue],
    'Product'[Color] = "Red"
)

Añada la medida Revenue Red al objeto visual de tabla que se encuentra en la página 1 del informe.

Captura de pantalla de una tabla con tres columnas (Region, Revenue y Revenue Red); la tabla muestra diez filas y un total

En el próximo ejemplo, la siguiente medida filtra la medida Revenue por varios colores. Observe el uso del operador IN, seguido de una lista de valores de color.

Revenue Red or Blue =
CALCULATE(
    [Revenue],
    'Product'[Color] IN {"Red", "Blue"}
)

La siguiente medida filtra la medida Revenue por productos caros. Los productos caros son aquellos con un precio de lista superior a 1000 dólares estadounidenses.

Revenue Expensive Products =
CALCULATE(
    [Revenue],
    'Product'[List Price] > 1000
)

Aplicar filtros de expresión de tabla

Un filtro de expresión de tabla aplica un objeto de tabla como un filtro. Podría ser una referencia a una tabla de modelo; sin embargo, es probable que sea una función de DAX que devuelve un objeto de tabla.

Normalmente, la función FILTER se usa para aplicar condiciones de filtro complejas, como aquellas que no pueden definirse mediante una expresión de filtro booleana. La función FILTER se clasifica como una función iteradora, por lo que, para cada fila de esa tabla, pasaría una tabla, o una expresión de tabla, y una expresión para la evaluación.

La función FILTER devuelve un objeto de tabla con exactamente la misma estructura que la tabla que se haya pasado. Sus filas son un subconjunto de esas filas que se han pasado, es decir, las filas donde la expresión se ha evaluado como TRUE.

El siguiente ejemplo muestra una expresión de filtro de tabla que usa la función FILTER:

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

En este ejemplo, la función FILTER filtra todas las filas de la tabla Product que están en el contexto de filtro. Cada fila de un producto cuyo precio de lista supera el doble de su coste estándar aparece como una fila de la tabla filtrada. Por tanto, la medida Revenue se evalúa para todos los productos devueltos por la función FILTER.

Todas las expresiones de filtro que se pasan a la función CALCULATE son expresiones de filtro de tabla. Una expresión de filtro booleana es una notación abreviada para mejorar la experiencia de lectura y escritura. En el ámbito interno, Microsoft Power BI traduce expresiones de filtro booleanas a expresiones de filtro de tabla, que es como traduce la definición de la medida Revenue Red.

Revenue Red =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[Color] = "Red"
    )
)

Comportamiento de filtro

Al añadir expresiones de filtro a la función CALCULATE, pueden ocurrir dos cosas:

  • Si las columnas (o tablas) no están en el contexto de filtro, se añaden nuevos filtros al contexto de filtro para evaluar la expresión CALCULATE.
  • Si las columnas (o tablas) ya están en el contexto de filtro, los nuevos filtros sobrescriben los filtros existentes para evaluar la expresión CALCULATE.

Los siguientes ejemplos muestran cómo funciona la adición de expresiones de filtro en la función CALCULATE.

Nota

En ninguno de los ejemplos se aplica un filtro al objeto visual de tabla.

Como ocurre en la actividad anterior, la medida Revenue Red se ha añadido a un objeto visual de tabla que agrupa por región y muestra los ingresos.

Captura de pantalla de una tabla con tres columnas (Region, Revenue y Revenue Red); la tabla muestra diez filas y un total

Dado que no se aplica ningún filtro en la columna Color de la tabla Product, la evaluación de la medida añade un nuevo filtro al contexto del filtro. En la primera fila, el valor de 2 681 324,79 USD es para los productos rojos que se vendieron en la región australiana.

Al cambiar la primera columna del objeto visual de tabla, de Region a Color, se genera un resultado diferente, ya que la columna Color en la tabla Product está ahora en el contexto de filtro.

Captura de pantalla de una tabla con tres columnas (Color, Revenue y Revenue Red); la tabla muestra diez filas y un total, y el valor de Revenue Red es el mismo para cada fila

La fórmula de la medida Revenue Red evalúa la medida Revenue añadiendo un filtro en la columna Color (a rojo), en la tabla Product. En este objeto visual que agrupa por color, la fórmula de medida sobrescribe el contexto del filtro con un nuevo filtro.

Este resultado puede ser el que usted desea o no. La siguiente unidad introduce la función KEEPFILTERS, que es una función de modificación de filtro que puede usar para conservar los filtros en lugar de sobrescribirlos.