Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
columna Calculada
tabla calculada
Medida
cálculo visual
Evalúa una expresión en un contexto de filtro modificado.
Nota
También hay la función CALCULATETABLE. Realiza exactamente la misma funcionalidad, salvo que modifica el contexto de filtro aplicado a una expresión que devuelve un objeto de tabla .
Sintaxis
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parámetros
| Término | Definición |
|---|---|
expression |
La expresión que se va a evaluar. |
filter1, filter2,… |
(Opcional) Expresiones booleanas o expresiones de tabla que definen filtros o funciones modificadores de filtro. |
La expresión que se usa como primer parámetro funciona como una medida.
Los filtros pueden ser:
- Expresiones de filtro booleanas
- Expresiones de filtro de tabla
- Funciones de modificación de filtros
Cuando se usan varios filtros, puede evaluarlos mediante el AND operador lógico (&&), lo que significa que todas las condiciones deben ser TRUE, o por el OR operador lógico (||), lo que significa que cualquiera de las condiciones puede ser true. Para obtener más información, consulte DAX Operadores lógicos>.
Expresiones de filtro booleanas
Un filtro de expresión booleana es una expresión que se evalúa como TRUE o FALSE. Debe seguir varias reglas:
Puede hacer referencia a columnas de una sola tabla.
No puede hacer referencia a medidas.
No puede usar una función anidada CALCULATE .
No puede usar funciones que examinen o devuelvan una tabla a menos que se pasen como argumentos a las funciones de agregación.
Puede contener una función de agregación que devuelve un valor escalar. Por ejemplo:
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Expresión de filtro de tabla
Un filtro de expresión de tabla aplica un objeto de tabla como filtro. Podría ser una referencia a una tabla de modelo, pero es más probable que sea una función que devuelva un objeto table. Puede usar la FILTER función para aplicar condiciones de filtro complejas, incluidas las que no se pueden definir mediante una expresión de filtro booleana.
Funciones modificadores de filtro
Las funciones modificadores de filtro permiten hacer más que simplemente agregar filtros. Proporcionan un control adicional al modificar el contexto de filtro.
| Función | Propósito |
|---|---|
| REMOVEFILTERS | Quite todos los filtros o filtros de una o varias columnas de una tabla o de todas las columnas de una sola tabla. |
| ALL 1, ALLEXCEPT, ALLNOBLANKROW | Quite filtros de una o varias columnas o de todas las columnas de una sola tabla. |
| KEEPFILTERS | Agregue filtro sin quitar filtros existentes en las mismas columnas. |
| USERELATIONSHIP | Interactuar con una relación inactiva entre las columnas relacionadas, en cuyo caso la relación activa se vuelve inactiva automáticamente. |
| CROSSFILTER | Modifique la dirección del filtro (de ambos a único o de uno a ambos) o deshabilite una relación. |
1 La función ALL y sus variantes se comportan como modificadores de filtro y como funciones que devuelven objetos de tabla. Si la herramienta admite la REMOVEFILTERS función, úsela para quitar filtros.
Valor devuelto
Valor resultante de la expresión.
Observaciones
Al proporcionar expresiones de filtro, la CALCULATE función modifica el contexto de filtro para evaluar la expresión. Para cada expresión de filtro, existen dos resultados estándar cuando la expresión de filtro no está ajustada en la KEEPFILTERS función :
- Si las columnas o tablas no están en el contexto de filtro, se agregan nuevos filtros al contexto de filtro para evaluar la expresión.
- Si las columnas o tablas ya están en el contexto de filtro, los nuevos filtros sobrescriben los filtros existentes para evaluar la CALCULATE expresión.
El uso de la CALCULATE función sin filtros alcanza un requisito específico. Realiza la transición del contexto de fila al contexto de filtro. Esta transición es necesaria cuando es necesario evaluar una expresión (no una medida de modelo) que resume los datos del modelo en el contexto de fila. Este escenario puede ocurrir en una fórmula de columna calculada o cuando se evalúa una expresión en una función de iterador. Cuando se usa una medida de modelo en el contexto de fila, la transición de contexto es automática.
-
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).
Ejemplos
Los ejemplos de este artículo se pueden usar con el modelo de Power BI Desktop de Adventure Works 2020 de ejemplo. Para obtener el modelo, consulte DAX modelo de ejemplo.
La siguiente definición de medida Sales tabla genera un resultado de ingresos, pero solo para los productos que tienen el color azul.
Blue Revenue =
CALCULATE ( SUM ( Sales[Sales Amount] ), 'Product'[Color] = "Blue" )
| Categoría | Importe de ventas | Ingresos azules |
|---|---|---|
| Accesorios | $1,272,057,89 | $165,406.62 |
| Bicicletas | $94,620,526.21 | $8,374,313.88 |
| Ropa | $2,117,613.45 | $259,488.37 |
| Componentes | $11,799,076,66 | $803,642.10 |
| total de | $109.809.274.20 | $9.602.850.97 |
La función
La siguiente definición de medida Sales tabla genera una proporción de ventas por encima de las ventas de todos los canales de ventas.
Revenue % Total Channel =
DIVIDE (
SUM ( Sales[Sales Amount] ),
CALCULATE (
SUM ( Sales[Sales Amount] ),
REMOVEFILTERS ( 'Sales Order'[Channel] )
)
)
| Canal | Importe de ventas | Ingresos % canal total |
|---|---|---|
| Internet | $29,358,677.22 | 26.74% |
| Revendedor | $80,450,596.98 | 73.26% |
| total de | $109.809.274.20 | 100,00% |
La función DIVIDE divide una expresión que suma la tabla SalesSales Amount valor de columna (en el contexto de filtro) por la misma expresión en un contexto de filtro modificado. Es la función CALCULATE que modifica el contexto de filtro mediante la función REMOVEFILTERS, que es una función modificadora de filtro. Quita los filtros de la tabla Sales Order columna Channel.
La siguiente Customer definición de columna calculada clasifica a los clientes en una clase de fidelidad. Es un escenario muy sencillo: cuando los ingresos generados por el cliente son inferiores a 2500 USD, se clasifican como baja; de lo contrario, se alto.
Customer Segment =
IF (
CALCULATE (
SUM ( Sales[Sales Amount] ),
ALLEXCEPT ( Customer, Customer[CustomerKey] )
) < 2500,
"Low",
"High"
)
| Segmento de cliente | Recuento de clientes | Importe de ventas |
|---|---|---|
| Alto | 4,637 | $102,670,663.09 |
| Bajo | 13,848 | $7,138,611.11 |
| total de | 18,485 | $109.809.274.20 |
En este ejemplo, el contexto de fila se convierte en el contexto de filtro. Se conoce como transición de contexto. La función
Contenido relacionado
- de contexto de filtro de
- Contexto de fila
- CALCULATETABLE Función
- Funciones de filtro