Definición: Función de filtro que evalúa una expresión en un contexto modificado por filtros. Puede modificar, agregar o eliminar el contexto de filtro.
<expresión>: expresión a evaluar en nuevo contexto.
<filtro>: expresión (opcional) booleana o de tabla que define filtro o modificador de filtro a aplicar.
Existen dos formas de escribir los filtros.
Sintaxis corta: especifica el filtro a aplicar como una condición, es decir, como una expresión booleana. CALCULATE_a.png28.19 KB
Sintaxis larga: llama a las funciones FILTER y ALL para crear una tabla virtual con el filtro a aplicar, es decir, utiliza una expresión de tabla como filtro. CALCULATE_b.png41.63 KB
Ambas sintaxis son equivalentes. En el trasfondo, la sintaxis corta se convierte en la sintaxis larga antes de ejecutarse el código. Cabe mencionar que no todos los filtros se pueden especificar como condiciones, y se requiere utilizar la sintaxis larga, como en el caso de usar medidas como filtros.
Existen además modificadores de filtro, utilizados como argumentos de filtro, que proporcionan control adicional sobre el contexto de filtro al momento de modificarlo. Estos modificadores pueden remover o agregar filtros, manteniendo filtros existentes, así como ajustar direcciones de propagación de filtros y activar o desactivar relaciones de tabla. Entre los más importantes destacan:
KEEPFILTERS, REMOVEFILTERS
ALL, ALLSELECTED, ALLEXCEPT
USERELATIONSHIP, CROSSFILTER
Detalles:
Se pueden especificar múltiples filtros. Todos los filtros se intersectan.
Los filtros no son condiciones, sino tablas.
Los filtros se calculan antes de que CALCULATE modifique el contexto de filtro.
Existen dos tipos de filtros:
Filtro externo: el contexto de filtro donde se invoca a CALCULATE.
Filtro interno: el contexto de filtro creado por CALCULATE luego de modificar el filtro externo.
Cuando se especifican filtros en los argumentos de la función, existen dos resultados estándar posibles para cada filtro:
Si no existe en el filtro externo, el filtro interno agrega el filtro al contexto de filtro.
Si ya existe en el filtro externo, el filtro interno sobrescribe el filtro en el contexto de filtro.
Cuando no se especifican filtros en los argumentos de la función, CALCULATE realiza la transición de contexto del contexto de fila al contexto de filtro para la expresión.
Partimos de la medida PI Anual, la cual calcula el promedio de ingresos por año, segmentada por Región en la siguiente matriz. CALCULATE_02.png38.02 KB
CALCULATE evalúa los argumentos de filtro, las condiciones Categoría = “Audio” y Clientes = {“Asia”, “Europa”}.
Se evalúa el modificador de filtro, KEEPFILTERS, manteniéndose en este caso el filtro para Región aplicado por la segmentación.
CALCULATE modifica el contexto de filtro, aplicando la condición y el modificador.
Se evalúa la expresión. La nueva medida, PI Anual Audio, muestra el Promedio de Ingresos Anual por Región para la categoría Audio, solo para las Regiones Asia y Europa. CALCULATE_03.png48.2 KB