KEEPFILTERS
Se aplica a:columna CalculadaTabla calculadaMeasurecálculo visual
Modifica cómo se aplican los filters al evaluar una función CALCULATEorCALCULATETABLE.
Sintaxis
KEEPFILTERS(<expression>)
Parámetros
Término | Definición |
---|---|
expression |
Cualquier expresión. |
Devolver value
Tabla de values.
Observaciones
Use KEEPFILTERS dentro del contexto CALCULATEandCALCULATETABLE funciones para invalidar el comportamiento estándar de esas funciones.
De forma predeterminada, filter argumentos de funciones como CALCULATE se usan como contexto para evaluar la expresión, and como argumentos de filter para CALCULATEreplaceallfilters existentes en las mismas columnas. El nuevo contexto afectado por el argumento filter para CALCULATE afecta solo a los filters existentes en las columnas mencionadas como parte del argumento filter. Filters en columnas distintas de las mencionadas en los argumentos de CALCULATEor otras funciones de related permanecen en effectand sin modificar.
La función KEEPFILTERS permite modificar este comportamiento. Cuando se usa KEEPFILTERS, cualquier filters existente en el contexto actual se compara con las columnas de los argumentos de filter, and la intersección de esos argumentos se usa como contexto para evaluar la expresión. El effect neto en cualquier columna es que se aplican ambos conjuntos de argumentos: ambos argumentos de filter usados en CALCULATEand el filters en los argumentos de la función KEEPFILTER. Es decir, mientras que CALCULATEfiltersreplace el contexto actual, KEEPFILTERS agrega filters al contexto actual.
Esta función se not se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas or 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 CALCULATEorCALCULATETABLE.
La first tres expresiones obtienen datos simples que se usarán para comparaciones:
Ventas por Internet para el estado de Washington.
Ventas por Internet para los estados de Washington and Oregon (ambos estados combinados).
Ventas por Internet para el estado de Washington and la provincia de Columbia Británica (ambas regiones combinadas).
La cuarta expresión calcula Internet Sales for Washington and Oregon, mientras que se aplica el filter para Washington and Columbia Británica.
La expresión next calcula internet Sales for Washington and Oregon, pero usa KEEPFILTERS; el filter de Washington and 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 respecto a la base de datos de sample AdventureWorks DW, se obtienen los siguientes resultados.
Columna | Value |
---|---|
[$$ 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.
First, examine la expresión [$$ in WA and OR ??]
. Es posible que se pregunte cómo esta fórmula podría devolver el value para las ventas en Washington and Oregon, ya que la expresión exterior de CALCULATE incluye un filter para Washington and Columbia Británica. La respuesta es que el comportamiento predeterminado de CALCULATE invalida el filters externo en "Geography"[State Province Code] and sustituye sus propios argumentos filter, ya que el filters se aplica a la misma columna.
Next, examine la expresión [$$ in WA !!]
. Es posible que se pregunte cómo esta fórmula podría devolver el value para las ventas en Washington and nada más, ya que el argumento filter incluye Oregon and la expresión de CALCULATE exterior incluye un filter en Washington and Columbia Británica. La respuesta es que KEEPFILTERS modifica el comportamiento predeterminado de CALCULATEand agrega un filteradicional. Dado que se usa la intersección de filters, now se agrega el filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
externo al argumento filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
, . Dado que ambas filters se aplican a la misma columna, el filter'Geography'[State Province Code]="WA"
resultante es el filter que se aplica al evaluar la expresión.
contenido de Related
funciones de FilterCALCULATE funciónCALCULATETABLE