Imaginemos que tenemos tres medidas:
Monto de ventas Monto de ventas Presupuesto Monto de ventas PY
Cuando miramos una tabla con estos números, vemos esto (suponiendo que tengamos datos actuales hasta finales de julio de 2025):
Si bien los resultados son correctos, es posible que mis usuarios necesiten dos vistas diferentes:
Vea solo los resultados según los datos existentes, incluidos los datos del presupuesto y los datos del año fiscal.
Tengo varias formas de hacerlo:
Cree elementos visuales separados con diferentes filtros. Cree dos páginas para las dos vistas, nuevamente usando filtros diferentes. Dígales a mis usuarios que usen la segmentación de calendario para filtrar los datos según sea necesario.
Pero quiero diseñar mis informes lo más fáciles de usar posible sin duplicar nada.
Por lo tanto, quiero agregar un Slicer para que los usuarios puedan elegir si incluyen datos futuros o solo ven los datos actuales.
Crear la tabla de filtro de fecha
La tabla Mi fecha incluye columnas de índice para diferentes períodos: días, semanas, meses, trimestres y años.
La fila con el período actual contiene un 0. Las filas de períodos pasados contienen números negativos. Las filas de períodos futuros contienen números positivos.
Veamos las filas de una pequeña muestra realizada en SQL usando la columna DayIndex:
Usando esta columna, construí una tabla con una columna adicional para que sirviera como segmentación.
Tomé todas las filas con un índice hasta 0 y las marqué como “Solo datos actuales”.
Luego agregué (UNION) todas las filas de la tabla Fecha y las marqué como “Datos futuros incluidos”.
Yo lo hice con SQL, pero puedes hacerlo en Power Query o cualquier otro lenguaje de tu elección.
Ahora, importé esta tabla a Power BI.
Ampliar el modelo de datos
Después de agregar esta tabla a Power BI, creé una nueva relación entre la nueva tabla y la tabla Fecha:
La Dirección del filtro cruzado se debe establecer en Ambos, ya que la columna DateKey en la tabla Filtro de fecha no es única:
Por lo tanto, la dirección del filtro sería Fecha -> Solo filtro de fecha, lo que no funcionará.
Quiero filtrar la tabla Fecha por la tabla Filtro de fecha. Por lo tanto, debo establecer la dirección del filtro en “Ambos”.
Resultado
A continuación, agregué una segmentación al informe:
Después de toda la preparación, el Slicer permite seleccionar los datos según sea necesario:
Los usuarios pueden usar esta segmentación para elegir qué datos quieren ver, independientemente de la selección en la segmentación de Calendario.
Seleccionar períodos completos
El ejemplo anterior es práctico cuando la selección debe ser a nivel de día.
Esto es útil especialmente cuando se comparan los datos actuales con el Presupuesto o el Año Año.
Imagínese el día 5 o 6 del mes. Tienes solo unos días de Ventas, pero lo comparas con el Presupuesto de todo el mes. Esto puede resultar engañoso.
Pero, ¿qué sucede cuando el filtro debe configurarse para períodos completos, como meses o años?
Aquí, una consulta modificada para configurar la columna DateFilter en función de años completos:
Ahora se muestra el año completo, cuando sólo deberían mostrarse los datos actuales:
Puede cambiar la tabla Filtro de fechas de la misma manera para filtrar por meses u otros períodos.
Esto se puede hacer muy fácilmente filtrando las filas de la tabla Fecha para la fecha actual.
Conclusión
Este enfoque es sencillo de implementar y fácil de utilizar para los consumidores de informes.
Evita escribir código DAX y se basa completamente en la información de la tabla Fecha.
El truco consiste en ampliar el modelo de datos para que admita los requisitos con el menor esfuerzo.
Si no tiene las columnas de índice como yo, puede utilizar un enfoque diferente para generar la tabla de filtro de fecha. Por ejemplo, utilice una función para obtener la fecha actual, como GETDATE() en T-SQL o Now() en otros lenguajes.
Las columnas de Índice me parecieron muy útiles, no sólo en este caso sino también en muchas otras situaciones donde el cliente requiere que filtre los datos por fechas relativas a la fecha actual.
Esto facilita la vida cuando la “fecha actual” no es hoy, sino que debe seguir una lógica específica (por ejemplo, el día de la semana anterior).
Bien, puede agregar filtros relativos al informe. En muchos casos son suficientes.
En otros casos, las columnas de Índice me dan más flexibilidad.
Referencias
Como en mis artículos anteriores, utilizo el conjunto de datos de muestra de Contoso. Puede descargar el conjunto de datos ContosoRetailDW de forma gratuita desde Microsoft aquí.
Los datos de Contoso se pueden utilizar libremente bajo la licencia MIT, como se describe en este documento. Cambié el conjunto de datos para cambiar los datos a fechas contemporáneas.