Leer en inglés

Compartir a través de


CALCULATE

Se aplica a:columna CalculadaTabla calculadaMeasurecálculo visual

Evalúa una expresión en un contexto de filter modificado.

Nota

También hay la función CALCULATETABLE. Realiza exactamente la misma funcionalidad, except modifica el contexto filter aplicado a una expresión que devuelve un objeto de tabla de .

Sintaxis

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

Parámetros

Término Definición
expression Expresión que se va a evaluar.
filter1, filter2,… (Opcional) Las expresiones booleanas or expresiones de tabla que definen filters, orfilter funciones modificadores.

La expresión usada como parámetro first es esencialmente la misma que una measure.

Filters puede ser:

  • Expresiones de filter booleanas
  • Expresiones de filter de tabla
  • funciones de modificación de Filter

Cuando hay varios filters, se pueden evaluar mediante el AND (&&) operador lógico, lo que significa que las condiciones de all deben ser TRUE, or por el operador lógico OR (||), lo que significa que cualquiera de las condiciones puede ser true.

Expresiones de filter booleanas

Una expresión booleana filter es una expresión que se evalúa como TRUEorFALSE. Hay varias reglas que deben cumplir:

  • Pueden hacer referencia a columnas de una sola tabla.
  • No pueden hacer referencia a medidas.
  • No pueden usar una función CALCULATE anidada.

A partir de la versión de septiembre de 2021 de Power BI Desktop, también se aplica lo siguiente:

  • No pueden usar funciones que examinan or devuelven una tabla a menos que se pasen como argumentos a las funciones de agregación.
  • pueden contener una función de agregación que devuelve un valueescalar. Por ejemplo
    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

Expresión de filter de tabla

Una expresión de tabla filter aplica un objeto table como filter. 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 función FILTER para aplicar condiciones de filter complejas, incluidas las que no se pueden definir mediante una expresión de filter booleana.

funciones modificadores de Filter

Filter funciones modificadores permiten hacer más que simplemente agregar filters. Proporcionan control adicional al modificar filter contexto.

Función Propósito
REMOVEFILTERS Quite allfilters, orfilters de una or más columnas de una tabla or de all columnas de una sola tabla.
ALL 1, ALLEXCEPT, ALLNOBLANKROW Quite filters de una or más columnas, or de all columnas de una sola tabla.
KEEPFILTERS Agregue filter sin quitar los filters existentes en las mismas columnas.
USERELATIONSHIP Interactuar con una relación inactiva entre related columnas, en cuyo caso la relación activa se volverá inactiva automáticamente.
CROSSFILTER Modifique filter dirección (de ambos a únicos or de single a ambos) or deshabilite una relación.

1 La función ALLand sus variantes se comportan como modificadores filterand como funciones que devuelven objetos de tabla. If la función REMOVEFILTERS es compatible con la herramienta, es mejor usarlo para quitar filters.

Devolver value

El value que es el resultado de la expresión.

Observaciones

  • Cuando se proporcionan expresiones filter, la función CALCULATE modifica el contexto de filter para evaluate la expresión. Para cada expresión de filter, hay dos posibles resultados estándar cuando la expresión de filter se not encapsulada en la función KEEPFILTERS:

    • If las columnas (tablas deor) no están en el contexto de filter, se agregarán nuevas filters al contexto de filter para evaluate la expresión.
    • If las columnas (tablas deor) ya están en el contexto de filter, el nuevo filters sobrescribirá la nueva filtersfilters para evaluate la expresión CALCULATE.
  • La función CALCULATE usada sin filters logra un requisito específico. Realiza la transición del contexto de fila a filter contexto. Es necesario cuando una expresión (not un modelo measure) que resume los datos del modelo debe evaluarse en el contexto de fila. Este escenario puede ocurrir en una fórmula de columna calculada or cuando se evalúa una expresión en una función de iterador. Tenga en cuenta que cuando se usa un modelo measure en el contexto de fila, la transición de contexto es automática.

  • 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).

Ejemplos

La siguiente tabla Salesmeasure definición genera un resultado de ingresos, pero solo para los productos que tienen el color azul.

Los ejemplos de este artículo se pueden usar con el modelo de sample Adventure Works DW 2020 Power BI Desktop. Para obtener el modelo, consulte DAXsample modelo.

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 CALCULATE evalúa el sum de la tabla SalesSales Amount en un contexto de filter modificado. Se agrega un nuevo filter a la tabla de Productcolumna Color(or, el filter sobrescribe cualquier filter que ya se haya aplicado a la columna.

La siguiente tabla Salesmeasure definición genera una proporción de ventas por encima de las ventas de all canales de ventas.

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%
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

La función DIVIDE divide una expresión que suma la tabla Salescolumna Sales Amountvalue (en el contexto de filter) por la misma expresión en un contexto de filter modificado. Es la función CALCULATE que modifica el contexto de filter mediante la función REMOVEFILTERS, que es una función modificadora filter. Quita de la tabla 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"
)

En este ejemplo, el contexto de fila se convierte en el contexto de filter. Se conoce como transición de contexto. La función ALLEXCEPT quita filters de allcolumnas de tabla Customerexcept la columna CustomerKey.

de contexto de
de contexto de fila
CALCULATETABLE función
funciones de