Filtrar datos en fórmulas de DAX

Nota:  Nos gustaría proporcionarle el contenido de ayuda actual lo más rápido posible en su idioma. Esta página se ha traducido mediante un sistema automático y es posible que contenga imprecisiones o errores gramaticales. Nuestro objetivo es que este contenido sea útil para usted. ¿Puede informarnos sobre si la información le ha sido útil al final de la página? Aquí tiene el artículo en inglés para que pueda consultarlo fácilmente.

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.

    Observe que funciones como filtro, que devuelven una tabla, nunca devuelvan las filas o la tabla directamente, pero siempre están incrustadas en otra función. Para obtener más información acerca de filtro y otras funciones que se usan para el filtrado, incluidos 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 ser útil cuando desea contar el número de valores únicos de una columna, o use 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 las fórmulas 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 (Sales[Amount]), 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 reemplaza también filtros existentes, pero puede especificar que se deben conservar algunos de los filtros existentes. Las columnas que nombre como argumentos para la función ALLEXCEPT especifican qué columnas seguirá pueden filtrarse. Si desea reemplazar desde la mayoría de las columnas, pero no todos los filtros, ALLEXCEPT es más cómodo que todos. La función ALLEXCEPT es especialmente útil cuando se va a crear las tablas dinámicas que se pueden filtrar en muchas columnas diferentes y desea controlar los valores que se usan en la fórmula. Para obtener más información, un ejemplo detallado de cómo usar ALLEXCEPT en una tabla dinámica, vea Función ALLEXCEPT.

Volver al principio

Ampliar sus conocimientos de Office
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.

×