KEEPFILTERS
Se aplica a:columna Calculadatabla calculadaMedidacálculo visual
Modifica cómo se aplican los filtros al evaluar una función CALCULATE o CALCULATETABLE.
Sintaxis
KEEPFILTERS(<expression>)
Parámetros
Término | Definición |
---|---|
expression |
Cualquier expresión. |
Valor devuelto
Tabla de valores.
Observaciones
Use KEEPFILTERS dentro del contexto CALCULATE y las funciones CALCULATETABLE, para invalidar el comportamiento estándar de esas funciones.
De forma predeterminada, los argumentos de filtro en funciones como CALCULATE se usan como contexto para evaluar la expresión y, como tales argumentos de filtro para CALCULATE reemplazar todos los filtros existentes en las mismas columnas. El nuevo contexto afectado por el argumento filter para CALCULATE afecta solo a los filtros existentes en las columnas mencionadas como parte del argumento filter. Los filtros en columnas distintas de las mencionadas en los argumentos de CALCULATE u otras funciones relacionadas permanecen en vigor y sin modificar.
La función KEEPFILTERS permite modificar este comportamiento. Cuando se usa KEEPFILTERS, los filtros existentes en el contexto actual se comparan con las columnas de los argumentos de filtro y la intersección de esos argumentos se usa como contexto para evaluar la expresión. El efecto neto sobre cualquier columna es que se aplican ambos conjuntos de argumentos: los argumentos de filtro usados en CALCULATE y los filtros de los argumentos de la función KEEPFILTER. Es decir, mientras que CALCULATE filtros reemplazan el contexto actual, KEEPFILTERS agrega filtros al contexto actual.
Esta función no se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas o reglas de seguridad de nivel de fila (RLS).
Ejemplo
En el ejemplo siguiente se describen algunos escenarios comunes que muestran el uso de la función KEEPFILTERS como parte de una fórmula de CALCULATE o CALCULATETABLE.
Las tres primeras expresiones obtienen datos simples que se usarán para las comparaciones:
Ventas por Internet para el estado de Washington.
Ventas por Internet para los estados de Washington y Oregon (ambos estados combinados).
Ventas por Internet para el estado de Washington y la provincia de Columbia Británica (ambas regiones combinadas).
La cuarta expresión calcula las ventas por Internet para Washington y Oregon, mientras que se aplica el filtro para Washington y Columbia Británica.
La siguiente expresión calcula Las ventas por Internet para Washington y Oregon, pero usa KEEPFILTERS; el filtro para Washington y Columbia Británica forma parte del contexto anterior.
EVALUATE ROW(
"$$ in WA"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
)
, "$$ in WA and OR"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, "$$ in WA and BC"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA and OR ??"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
,'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA !!"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
, KEEPFILTERS('Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
)
Cuando esta expresión se evalúa con la base de datos de ejemplo AdventureWorks DW, se obtienen los siguientes resultados.
Columna | Valor |
---|---|
[$$ in WA] |
$ 2,467,248.34 |
[$$ in WA and OR] |
$ 3,638,239.88 |
[$$ in WA and BC] |
$ 4,422,588.44 |
[$$ in WA and OR ??] |
$ 3,638,239.88 |
[$$ in WA !!] |
$ 2,467,248.34 |
Nota
Los resultados anteriores se daban formato a una tabla, en lugar de una sola fila, con fines educativos.
En primer lugar, examine la expresión [$$ in WA and OR ??]
. Es posible que se pregunte cómo esta fórmula podría devolver el valor de las ventas en Washington y Oregon, ya que la expresión de CALCULATE exterior incluye un filtro para Washington y Columbia Británica. La respuesta es que el comportamiento predeterminado de CALCULATE invalida los filtros externos en 'Geography'[State Province Code] y sustituye sus propios argumentos de filtro, ya que los filtros se aplican a la misma columna.
A continuación, examine la expresión [$$ in WA !!]
. Es posible que se pregunte cómo esta fórmula podría devolver el valor de las ventas en Washington y nada más, ya que el filtro de argumentos incluye Oregon y la expresión de CALCULATE exterior incluye un filtro en Washington y Columbia Británica. La respuesta es que KEEPFILTERS modifica el comportamiento predeterminado de CALCULATE y agrega un filtro adicional. Dado que se usa la intersección de filtros, ahora el filtro externo 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
se agrega al argumento de filtro 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
, . Dado que ambos filtros se aplican a la misma columna, el filtro resultante 'Geography'[State Province Code]="WA"
es el filtro que se aplica al evaluar la expresión.