(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo crear un slicer de Fecha relativo en Power BI: paso a paso

João Barros 04 de August de 2026 3 min de lectura

Vamos a crear un slicer de Fecha relativo en Power BI que permite al usuario elegir intervalos como Últimos 7, 30 o 90 días. Un slicer relativo hace los informes dinámicos — útil para dashboards operativos y análisis de tendencia sin tener que ajustar filtros manualmente. Esto es especialmente práctico en informes que se consultan diariamente por equipos que necesitan ver rápidamente el rendimiento de los últimos días hábiles: por ejemplo, resumen de ventas de los últimos 7 días o métricas de soporte de los últimos 30 días.

Prerequisitos

  • Power BI Desktop instalado (versión reciente).
  • Una tabla de hechos con una columna de Fecha (Date) o datetime. Idealmente la tabla tiene al menos 10k–500k filas; si tienes millones de filas puedes necesitar optimizar el modelo.
  • Conocimientos básicos de Power Query y DAX.

Paso 1: Crear una tabla calendario si no existe

Una tabla calendario es esencial para trabajar con filtros relativos y funciones de tiempo en DAX. Si ya tienes una Date table, salta al Paso 2. Abajo creamos una tabla sencilla en DAX llamada Calendar que cubre un intervalo plausible (por ejemplo 2020–2030). Puedes ajustar las fechas a tu historial real de datos.

Calendar =
ADDCOLUMNS(
    CALENDAR(DATE(2020,1,1), DATE(2030,12,31)),
    "Year", YEAR([Date]),
    "Month", FORMAT([Date], "yyyy-MM"),
    "DayOfWeek", WEEKDAY([Date])
)

Después de crear la tabla, márcala como Date table en Modelagem > Mark as date table y elige la columna Date. Esto mejora el rendimiento y la compatibilidad con funciones de time intelligence como TOTALYTD. Si tu dataset tiene fechas futuras (p. ej.: pedidos planificados), asegúrate de que la Calendar cubre ese rango.

Paso 2: Relacionar la tabla calendario con la tabla de hechos

Crea una relación entre Calendar[Date] y FactTable[Date] (1:*). La relación debe estar activa y con dirección de filtro single por defecto. Sin relación, el slicer no afectará las medidas correctamente. En escenarios con múltiples columnas de fecha (DataVenda, DataExpedição) considera crear relaciones inactivas y usar USERELATIONSHIP en las medidas cuando sea necesario.

Paso 3: Crear una tabla de opciones de intervalo (Slicer de períodos)

Vamos a crear una tabla manual con las opciones que queremos presentar al usuario. Esto facilita la lógica DAX después y permite añadir fácilmente más opciones como "Mes corriente" o "Trimestre corriente".

RelativePeriod =
DATATABLE(
    "PeriodLabel", STRING,
    "DaysBack", INTEGER,
    {
        {"Últimos 7 dias", 7},
        {"Últimos 30 dias", 30},
        {"Últimos 90 dias", 90},
        {"Año hasta hoy", 365}
    }
)

Coloca un slicer en el informe con RelativePeriod[PeriodLabel]. Recomiendo definir el slicer para permitir solo una selección (single select) si la lógica de la medida asume un único valor; si quieres permitir múltiples selecciones, ve el paso 5.

Paso 4: Crear una medida que aplique el filtro relativo

En lugar de filtrar todas las visualizaciones manualmente, creamos una medida que calcule, por ejemplo, Ventas en los últimos N días según la selección del slicer. La medida abajo asume que el contexto temporal está anclado en la fecha máxima visible (p. ej. hoy o la fecha más reciente en el conjunto de datos).

Vendas Últimos Períodos =
VAR SelectedDays = SELECTEDVALUE(RelativePeriod[DaysBack], 7)
VAR MaxDate = MAX('Calendar'[Date])
VAR MinDate = MaxDate - SelectedDays + 1
RETURN
CALCULATE(
    SUM(FactTable[Vendas]),
    FILTER(ALL('Calendar'), 'Calendar'[Date] >= MinDate && 'Calendar'[Date] <= MaxDate)
)

Explicación: SelectedDays lee el valor del slicer y asume 7 como valor por defecto si no se selecciona nada. Calculamos MinDate y usamos FILTER(ALL('Calendar')) para garantizar que el periodo se aplica independientemente de otros filtros en la visualización. Esto también evita que visuales con ejes de fecha sean truncados por filtros no deseados.

Paso 5: Usar la medida en las visualizaciones y tratar errores comunes

Arrastra la medida Vendas Últimos Períodos a una tarjeta o gráfico de tendencia. Prueba con datasets controlados: por ejemplo, si tu FactTable tiene 100.000 filas y 10.000 ventas en los últimos 30 días, verifica si la tarjeta muestra ese total. Errores comunes y soluciones:

  • SELECTEDVALUE devuelve BLANK si el usuario no elige nada — definimos 7 como valor por defecto en el ejemplo.
  • Si hay múltiples selecciones en el slicer, la medida puede no funcionar como se espera; puedes usar MAX/MIN para elegir un valor cuando hay múltiples selecciones:
-- Exemplo para permitir múltiplas selecções usando o maior período
SelectedDays =
MAX(RelativePeriod[DaysBack])

Otros cuidados: confirma que la relación entre tablas está activa; si las fechas de la tabla Calendar no cubren el intervalo del FactTable, verás valores inesperados. En modelos grandes, evita usar FILTER(ALL('Calendar')) en medidas muy frecuentes sin optimización, ya que puede afectar el rendimiento; alternativa: usar DATESINPERIOD para escenarios con mejores resultados de rendimiento.

Verificar el resultado

Para confirmar que está correcto: 1) Selecciona "Últimos 7 dias" y verifica si los números son coherentes con los últimos 7 días de tu dataset (p. ej.: 1.234 ventas); 2) Cambia a 30/90 días y observa la variación proporcional (p. ej.: 30 días ≈ 3.5× 7 días, dependiendo del negocio); 3) Prueba sin seleccionar nada — debe usar el valor por defecto. Puedes añadir tarjetas auxiliares con MAX('Calendar'[Date]) y MIN calculado para ver el intervalo actual y validar límites.

Conclusión

Has implementado un slicer de Fecha relativo en Power BI usando una tabla de períodos y una medida DAX que aplica el intervalo seleccionado. Este enfoque hace los informes más flexibles y amigables para los usuarios finales. Próximos pasos: añadir opciones personalizadas (mes corriente, trimestre), crear una medida que respete comparaciones año-a-año, o adaptar la lógica para múltiples fechas en la tabla de hechos. Consejo final: prueba siempre con fechas-límite (inicios/fines de mes, años bisiestos) y asegúrate de que la Date table cubre todo el histórico y futuro necesario para evitar recortes inesperados en los números.