Compartir a través de


CALCULATETABLE

Se aplica a:columna Calculadatabla calculadaMedidacálculo visual

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

Nota

También hay la función CALCULATE. Realiza exactamente la misma funcionalidad, salvo que modifica el contexto de filtro aplicado a una expresión que devuelve un valor escalar .

Sintaxis

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

Parámetros

Término Definición
expression Expresión de tabla 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 usada como primer parámetro debe ser una tabla de modelo o una función que devuelva una tabla.

Los filtros pueden ser:

  • Expresiones de filtro booleanas
  • Expresiones de filtro de tabla
  • Funciones de modificación de filtros

Cuando hay varios filtros, se evalúan mediante el operador lógico AND. Esto significa que todas las condiciones deben ser TRUE al mismo tiempo.

Expresiones de filtro booleanas

Un filtro de expresión booleana es una expresión que se evalúa como TRUE o FALSE. Hay varias reglas que deben cumplir:

  • Solo pueden hacer referencia a una sola columna.
  • 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 o 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 valor escalar.

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 función FILTER 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 volverá 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 función REMOVEFILTERS es compatible con la herramienta, es mejor usarlo para quitar filtros.

Valor devuelto

Tabla de valores.

Observaciones

  • Cuando se proporcionan expresiones de filtro, la función CALCULATETABLE modifica el contexto de filtro para evaluar la expresión. Para cada expresión de filtro, hay dos resultados estándar posibles cuando la expresión de filtro no está ajustada en la función KEEPFILTERS:

    • Si las columnas (o tablas) no están en el contexto de filtro, se agregarán 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 filtros existentes se sobrescribirán mediante los nuevos filtros para evaluar la expresión CALCULATETABLE.
  • 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 usa la función CALCULATETABLE para obtener la suma de las ventas por Internet de 2006. Este valor se usa más adelante para calcular la proporción de ventas por Internet en comparación con todas las ventas del año 2006.

La fórmula siguiente:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)

Da como resultado la tabla siguiente:

Etiquetas de fila Internet SalesAmount_USD CalculateTable 2006 Internet Sales Internet Sales to 2006 ratio
2005 $2,627,031,40 $5,681,440.58 0.46
2006 $5,681,440.58 $5,681,440.58 1.00
2007 $8.705.066.67 $5,681,440.58 1.53
2008 $9.041,288.80 $5,681,440.58 1.59
Total general $26.054.827.45 $5,681,440.58 4.59