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 está la función CALCULATE. Hace exactamente lo mismo, 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 de modificador de filtro. |
La expresión usada como primer parámetro debe ser una tabla de modelo o una función que devuelve una tabla.
Los filtros pueden ser:
- Expresiones de filtro booleanas
- Expresiones de filtro de tabla
- Funciones de modificación de filtro
Cuando hay varios filtros, se evalúan mediante el operador lógico AND. Esto significa que todas las condiciones deben ser "true" a la vez.
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 lo siguiente:
- Solo pueden hacer referencia a una única 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 analicen o devuelvan 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 un filtro. Podría ser una referencia a una tabla de modelo, pero lo más probable es que sea una función que devuelva un objeto de tabla. 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 de modificador de filtro
Las funciones del modificador de filtro permiten hacer algo más que simplemente agregar filtros. Proporcionan un control adicional al modificar el contexto de filtro.
Función | Finalidad |
---|---|
REMOVEFILTERS | Quitar todos los filtros, o los filtros de una o varias columnas de una tabla o de todas las columnas de una sola tabla. |
ALL1, ALLEXCEPT, ALLNOBLANKROW | Quitar los filtros de una o varias columnas, o de todas las columnas de una sola tabla. |
KEEPFILTERS | Agregar un filtro sin quitar los existentes en las mismas columnas. |
USERELATIONSHIP | Activar una relación inactiva entre las columnas relacionadas, en cuyo caso la relación activa se convertirá automáticamente en inactiva. |
CROSSFILTER | Modificar la dirección del filtro (de ambas a única o de única a ambas) o deshabilitar 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 función REMOVEFILTERS, es mejor usarla para quitar filtros.
Valor devuelto
Una tabla de valores.
Comentarios
Cuando se proporcionan expresiones de filtro, la función CALCULATETABLE modifica el contexto de filtro para evaluar la expresión. Cuando la expresión de filtro no está incluida en la función KEEPFILTERS, para cada expresión de filtro hay dos posibles resultados estándar:
- Si las columnas (o tablas) no están en el contexto de filtro, para evaluar la expresión se agregarán filtros nuevos al contexto de filtro.
- Si las columnas (o tablas) ya están en el contexto de filtro, para evaluar la expresión CALCULATETABLE los filtros nuevos sobrescribirán los existentes.
Esta función no se admite para su uso en el modo DirectQuery cuando se utiliza en columnas calculadas o en 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 posteriormente para calcular la relación de ventas por Internet con respecto a 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 |