Filtrar datos en fórmulas de DAX

Importante:  Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

Esta sección describe cómo crear filtros dentro de fórmulas de expresiones de análisis de datos (DAX). Puede crear filtros dentro de fórmulas para restringir los valores del origen de datos que se usa en los cálculos. Haga esto especificando una tabla como entrada de la fórmula y, a continuación, definir una expresión de filtro. La expresión de filtro que proporcione se usa para consultar los datos y devolver solo un subconjunto de los datos de origen. Se aplica el filtro dinámicamente cada vez que se actualicen los resultados de la fórmula, según el contexto actual de los datos.

En este artículo

Crear un filtro en una tabla utilizada en una fórmula

Filtros que eliminan duplicados

Cómo afecta el contexto a los filtros

Eliminar filtros

Anular todos los filtros con la función ALL

Anular filtros específicos con la función ALLEXCEPT

Crear un filtro en una tabla utilizada en una fórmula

Puede aplicar filtros en las fórmulas que tienen una tabla como entrada. En lugar de escribir un nombre de tabla, se utiliza la función FILTER para definir un subconjunto de filas de la tabla especificada. A continuación, este subconjunto se pasa a otra función para operaciones tales como agregaciones personalizadas.

Por ejemplo, suponga que tiene una tabla de datos que contiene información del pedido sobre los distribuidores y desea calcular cuánto vendió cada distribuidor. Sin embargo, supongamos que desea mostrar el importe de ventas solo de los distribuidores que vendieron varias unidades de sus productos de mayor valor. La siguiente fórmula, basada en el libro de ejemplo de DAX, es un ejemplo de cómo puede crear este cálculo mediante un filtro:

= SUMX (
filtro ('ResellerSales_USD', 'ResellerSales_USD' [Cantidad] > 5 & &
'ResellerSales_USD' [ProductStandardCost_USD] > 100),
'ResellerSales_USD' [SalesAmt]
)

  • La primera parte de la fórmula especifica una de las funciones de agregación Power Pivot, que tiene una tabla como un argumento. SUMX calcula una suma sobre una tabla.

  • La segunda parte de la fórmula, FILTER(table, expression),indica SUMX los datos que utilice. SUMX requiere una tabla o una expresión que da como resultado una tabla. A continuación, en lugar de usar todos los datos en una tabla, use la función FILTER para especificar que las filas de la tabla se usan.

    La expresión filter tiene dos partes: la primera parte designa la tabla a la que se aplica el filtro. La segunda parte define una expresión para usar como la condición de filtro. En este caso, está filtrando distribuidores que vendió unidades de más de 5 y productos que cuestan más de 100 $. El operador & &, es un operador lógico AND, lo que indica que deben cumplirse dos partes de la condición de la fila al que asignará el subconjunto filtrado.

  • La tercera parte de la fórmula indica a la función SUMX los valores que se deben sumar. En este caso, estará usando sólo el importe de ventas.

    Tenga en cuenta que las funciones como FILTER, que devuelven una tabla, nunca devuelven la tabla o las filas directamente, sino que siempre se incrustan en otra función. Para obtener más información acerca de FILTER y otras funciones que se usan para filtrar, junto con más ejemplos, vea Funciones de filtro (DAX).

    Nota: La expresión de filtro se verá afectada por el contexto en que se utiliza. Por ejemplo, si utiliza un filtro en una medida y la medida se usa en una tabla dinámica o gráfico dinámico, el subconjunto de datos que se devuelven puede se verá afectado por filtros adicionales o segmentaciones de datos que el usuario haya aplicado en la tabla dinámica. Para obtener más información acerca de contexto, vea contexto en las fórmulas DAX.

Filtros que eliminan duplicados

Además de filtrar por valores específicos, puede devolver un conjunto único de valores de otra tabla o columna. Esto puede resultar útil cuando desee contar el número de valores únicos de una columna o usar una lista de valores únicos para otras operaciones. DAX proporciona dos funciones para devolver valores distintos: Función DISTINCT y Función VALUES.

  • La función DISTINCT examina una sola columna que se especifique como argumento para la función, y devuelve una nueva columna que contiene solo los valores distintos.

  • La función de valores también devuelve una lista de valores únicos, pero también devuelve al miembro desconocido. Esto es útil cuando se utilizan los valores de dos tablas se unen por una relación, y un valor que faltan en una tabla y presentes en la otra. Para obtener más información sobre el miembro desconocido, vea contexto en las fórmulas DAX.

Estas dos funciones devuelven una columna completa de valores; por lo tanto, se utilizan las funciones para obtener una lista de valores que se pasa después a otra función. Por ejemplo, puede usar la fórmula siguiente para obtener una lista de los distintos productos vendidos por un distribuidor concreto, haciendo uso de la clave única de producto, y, a continuación, contar los productos en dicha lista mediante la función COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

Volver al principio

Cómo afecta el contexto a los filtros

Al agregar una fórmula DAX a una tabla dinámica o gráfico dinámico, los resultados de la fórmula se pueden afectados por el contexto. Si está trabajando en una tabla de Power Pivot, el contexto es la fila actual y sus valores. Si está trabajando en una tabla dinámica o gráfico dinámico, el contexto significa el conjunto o subconjunto de datos definido por operaciones como división o filtrado. El diseño de la tabla dinámica o gráfico dinámico también impone su propio contexto. Por ejemplo, si crea una tabla dinámica que se agrupa las ventas por región y año, solo los datos que se aplica a las regiones y los años aparecen en la tabla dinámica. Por lo tanto, se calculan las medidas que se agregan a la tabla dinámica en el contexto de los filtros de la fórmula de medida además de los encabezados de columna y fila.

Para obtener más información, vea Contexto en fórmulas de DAX.

Volver al principio

Eliminar filtros

Al trabajar con fórmulas complejas, es posible que desee saber exactamente cuáles son los filtros actuales, o quizá desee modificar la parte de filtro de la fórmula. DAX proporciona varias funciones que permiten quitar filtros y decidir qué columnas se conservan como parte del contexto de filtro actual. En esta sección se proporciona una descripción general de cómo estas funciones afectan a los resultados de una fórmula.

Anular todos los filtros con la función ALL

Puede utilizar la función ALL para reemplazar los filtros que se aplicaron previamente y devolver todas las filas de la tabla a la función que está realizando la operación agregada u otra. Si usa una o más columnas, en lugar de una tabla, como argumentos para ALL, la función ALL devuelve todas las filas, pasando por alto los filtros de contexto.

Nota: Si está familiarizado con terminología de bases de datos relacionales, puede considerar que ALL genera la combinación externa izquierda natural de todas las tablas.

Por ejemplo, suponga que tiene las tablas, ventas y productos, y que desea crear una fórmula que calcule la suma de ventas para el producto actual dividido por las ventas de todos los productos. Debe tener en cuenta el hecho de que, si la fórmula se usa en una medida, el usuario de la tabla dinámica podría estar usando una segmentación de datos para filtrar por un producto específico, con el nombre de producto en las filas. Por lo tanto, para obtener el valor true del denominador independientemente de los filtros o segmentaciones de datos, debe agregar la función ALL para reemplazar los filtros. La siguiente fórmula es un ejemplo de cómo usar todos para reemplazar los efectos de filtros anterior:

= SUMA (ventas [Cantidad]) / SUMX (ventas [Cantidad] filtro (ventas, ALL(Products)))

  • La primera parte de la fórmula, SUM (Ventas[Cantidad]), calcula el numerador.

  • La suma tiene en cuenta el contexto actual, lo que significa que, si agrega la fórmula en una columna calculada, se aplica el contexto de fila y, si agrega la fórmula en una tabla dinámica como una medida, se aplican los filtros aplicados en la tabla dinámica (el contexto de filtro).

  • La segunda parte de la fórmula calcula el denominador. La función ALL invalida todos los filtros que se pueden aplicar a la tabla Products .

Para obtener más información, junto con ejemplos detallados, vea Función ALL.

Anular filtros específicos con la función ALLEXCEPT

La función ALLEXCEPT también anula los filtros existentes, pero se puede especificar que se conserven algunos de los filtros existentes. Las columnas que nombra como argumentos para la función ALLEXCEPT especifican qué columnas continuarán filtradas. Si desea anular los filtros de la mayoría de las columnas pero no de todas, ALLEXCEPT es más práctica que ALL. La función ALLEXCEPT es especialmente útil cuando crea tablas dinámicas que se filtran en muchas columnas diferentes, y desea decidir qué valores se usan en la fórmula. Para obtener más información, junto con un ejemplo detallado de cómo utilizar ALLEXCEPT en una tabla dinámica, vea Función ALLEXCEPT.

Volver al principio

Nota: Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×