Como Filtrar todo en Power Query
El filtrado en Power Query reduce la tabla para incluir solo aquellos elementos que cumplen criterios específicos. Sin embargo, Power Query no tiene una opción de filtrado para incluir todos los elementos. En Excel, podemos utilizar el asterisco (*) como carácter comodín para hacer coincidir cualquier texto. Por lo tanto, si queremos incluir todos los elementos en un Filtro, simplemente usamos un único asterisco. Sin embargo, Power Query no tiene una funcionalidad equivalente. Entonces, en esta publicación, veremos un método para crear algo similar para filtrar todo en Power Query.
Esta publicación es en respuesta a una pregunta de un miembro de la academia que preguntaba sobre cómo filtrar una tabla.
"Necesito una opción 'todos'... de modo que si no seleccionan un nombre, obtendrán todos los registros".
Bien, veamos cómo podemos resolver esto.
Tabla de contenido
- El escenario
- Agregar los filtros a Power Query
- Aplicar el filtro en Power Query
- Probando la solución
- Conclusión
Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.
Nombre de archivo: 0071 Filtrar todo en Power Query.zip
Tener acceso
El escenario
Para demostrar el enfoque, he creado un libro que contiene dos filtros.
- Cuenta nos permite seleccionar un código de cuenta
- Categoría nos permite seleccionar una categoría
El libro incluye una consulta vinculada a un archivo CSV externo y cargada en una tabla. El archivo CSV está incluido en el archivo de descarga. Para trabajar con el ejemplo, deberá volver a dirigir la consulta al archivo CSV de origen en su PC.
En el libro de ejemplo, estos filtros actualmente no hacen nada. Pero queremos crear la funcionalidad para filtrar por Cuenta o Categoría, pero si alguna se deja en blanco, devolverá todos los elementos de ese elemento.
Agregar los filtros a Power Query
El primer paso es crear dos rangos con nombre:
- Celda C4 = Filtro de cuenta
- Celda D4 = Filtro de categoría
Ahora agreguemos ambos rangos con nombre a Power Query como parámetros
- Seleccione la celda D4 y haga clic en Datos de tabla/rango en la cinta
- Cambiar el tipo de datos a texto
- Reemplace los valores nulos con una cadena de texto en blanco haciendo clic en Transformar Reemplazar valores
- Haga clic derecho en la celda en blanco y seleccione Profundizar para llegar a un valor único.
Nota: Si el filtro de celda estaba en blanco, no verás ningún valor en tu pantalla (está bien, no te preocupes) - Cierre y cargue esta consulta en Excel solo como conexión.
Repita estos pasos para AccountFilter en la celda D4.
Aplicar el filtro en Power Query
Vuelva a Power Query, en la consulta de origen, seleccione la columna Cuenta y aplique un filtro de texto; Usa cualquier texto, no importa.
A continuación, en la barra de fórmulas, cambie la cadena de texto del filtro para que sea la consulta AccountFilter. Para hacer esto, cambie lo siguiente:
= Table.SelectRows(#"Tipo cambiado", cada uno ([Cuenta] = "Cuentas por pagar" ))
A esto:
= Table.SelectRows(#"Tipo cambiado", cada uno ([Cuenta] = AccountFilter ))
Si el filtro estaba vacío, la pantalla ahora se verá como la siguiente:
Si está trabajando junto con el ejemplo, los pasos aplicados contienen los siguientes elementos:
Ahora podemos agregar lógica a los pasos aplicados para devolver las tablas filtradas o sin filtrar.
Haga clic en el símbolo Fx para crear un nuevo paso. Ingrese la siguiente declaración en la barra de fórmulas.
= si AccountFilter = "" entonces #"Tipo modificado" más #"Filas filtradas"
Esto simplemente significa que si AccountFilter es una cadena de texto en blanco, entonces devuelva la tabla después del Tipo modificado (que no está filtrado); de lo contrario, devuelva la tabla después de las Filas filtradas (que están filtradas). Esto crea el efecto de un filtro en blanco que devuelve todos los elementos.
Repita las acciones anteriores para la columna Categoría y la consulta CategoryFilter.
Antes de crear la segunda declaración if, los pasos aplicados serán:
Por lo tanto, la declaración if será:
= si CategoryFilter = "" entonces Personalizado1 sino #"Filas filtradas1"
Finalmente, cierre y cargue la consulta Fuente como una tabla de Excel.
Probando la solución
Ahora, todo lo que tenemos que hacer es probarlo. Primero, ingrese algunos valores en cualquiera de los cuadros de filtro, luego haga clic en Actualizar datos todos en la cinta.
Si una o ambas celdas están en blanco, no se aplica ningún filtro a la tabla final para esos filtros.
La siguiente captura de pantalla muestra un filtro en la Categoría, pero ningún filtro aplicado a la columna Cuenta.
Agregué un botón de actualización de macro y listas desplegables de validación de datos en el archivo de ejemplo. Sin embargo, la lista de validación de datos ilustra cómo podría funcionar la solución; no es dinámico, por lo que no recogerá ningún valor adicional.
Conclusión
Power Query no tiene filtrado por comodines para que podamos incluir todos los elementos. Pero con un poco de lógica podemos crear un efecto similar.
Y tal vez en el proceso haya aprendido que puede escribir directamente en la barra de fórmulas y devolver fácilmente el estado de la consulta después de cada paso aplicado.
Deja una respuesta