KEEPFILTERS

La función KEEPFILTERS permite modificar el comportamiento de las funciones CALCULATE y CALCULATETABLE de forma que los filtros referenciados no sustituyan a los existentes en el contexto actual, sino que se añadan a él.

Sintaxis

KEEPFILTERS(
    expression
)

Parámetros
  • expression: Expresión que define el filtro a aplicar.
Valor devuelto

La función KEEPFILTERS devuelve una tabla de valores que se interpretará como filtro a añadir al contexto actual.

Información adicional

La función KEEPFILTERS se utiliza como argumento de las funciones CALCULATE y CALCULATETABLE para modificar su comportamiento por defecto: Normalmente, un filtro añadido como argumento de estas funciones modifica el contexto de filtro añadiéndose -si la columna referenciada no estaba ya considerada en el contexto de filtro- o sustituyendo parte del contexto de filtro -si la columna referenciada ya estaba siendo considerada-.

KEEPFILTERS, por su parte, añade el filtro indicado sin modificar el contexto de filtro existente. Esto significa que si en el contexto actual, por ejemplo, se está imponiendo la condición Country="Spain" y se añade mediante la función KEEPFILTERS la condición Country="France", ambas condiciones se considerarán en el contexto de filtro (es decir, solo los registros que satisfagan ambas condiciones serán incluidos en el cálculo).

Ejemplos

Supongamos que tenemos una tabla con ventas ("Movements") y una tabla de localizaciones geográficas asociadas a cada venta ("Geography"). La medida "Units sold" suma el campo Units de la tabla Movements (agregando el número de unidades vendidas):

Units sold = SUM(Movements[Units])

Medida Units Sold

Si llevamos a una visualización tipo tabla el campo Country de la tabla Geography y la medida creada, vemos el desglose de unidades vendidas por país:

Ventas por país

Si definimos una medida Units sold in Spain que, usando la función CALCULATE, imponga la condición de que Country = "Spain" y la llevamos a la visualización anterior, tenemos el resultado esperado:

Units sold in Spain = 
    CALCULATE(
        [Units sold],
        Geography[Country] = "Spain"
    )

Medida Units sold in Spain

...devolviéndose en todos los cálculos el número de unidades vendidas en España.

Si, por otro lado, replicamos la anterior medida añadiendo (no sustituyendo) el filtro mencionado de Country = "Spain", el resultado es bien diferente:

Units sold only in Spain = 
    CALCULATE(
        [Units sold],
        KEEPFILTERS(Geography[Country] = "Spain")
    )

Medida Units sold only in Spain

Vemos que, como resultado de la adición del nuevo filtro, solo los registros asociados a los dos países (al implicado en el contexto actual y a "Spain") se consideran en el cálculo. En este ejemplo cada venta está asociada a un único país, por lo que se muestran solo las ventas de España.

Funciones relacionadas
Categoría
Filtro
Enviado por admin el Dom, 07/07/2019 - 10:41