Función CALCULATETABLE
Evalúa una expresión de tabla en un contexto modificado por los filtros dados.
Sintaxis
CALCULATETABLE(<expression>,<filter1>,<filter2>,…)
Parámetros
Término |
Definición |
---|---|
Expression |
La expresión de tabla que se va a evaluar |
filter1,filter2,… |
Expresión booleana o expresión de tabla que define un filtro |
La expresión usada como primer parámetro debe ser una función que devuelva una tabla.
Las siguientes restricciones se aplican a las expresiones booleanas que se usan como argumentos:
La expresión no puede hacer referencia a una medida.
La expresión no puede usar una función CALCULATE anidada.
La expresión no puede usar ninguna función que recorra una tabla o devuelva una tabla, incluidas las funciones de agregación.
Sin embargo, una expresión booleana puede usar cualquier función que busque un valor único o que calcule un valor escalar.
Valor devuelto
Una tabla de valores.
Comentarios
La función CALCULATETABLE cambia el contexto en el que se filtran los datos y evalúa la expresión en el nuevo contexto que especifique. Por cada columna usada en un argumento de filtro, se quitan los filtros existentes en dicha columna y en su lugar se aplica el filtro usado en el argumento.
Esta función es un sinónimo de la función RELATEDTABLE.
Ejemplo
En el siguiente ejemplo se usa la función CALCULATETABLE para obtener la suma de Internet Sales para 2006. Este valor se usa después para calcular la proporción de Internet Sales en comparación con todas las ventas del año 2006.
La siguiente tabla muestra los resultados a partir de la fórmula 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 |
Grand Total |
$26,054,827.45 |
$5,681,440.58 |
4.59 |
=SUMX( CALCULATETABLE('InternetSales_USD', 'DateTime'[CalendarYear]=2006)
, [SalesAmount_USD])