Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now

Reply
migueldfr
Helper IV
Helper IV

Conseguir el valor de la semana actual del año actual en una medida si no hay ninguna seleccion

Buenas  a todos,

 

Estoy intentado llegar a la medida citada y de momento cumplo alfo pero no llego a lo que de verdad quiero:

AFLUENCIA

Cumple : 

1. Cuando selecciono me muestra lo que quiero 

No cumple:

1. Cuando no hay seleccion me muestra el ultimo valor que existe de la ultima semana del año 

migueldfr_0-1730155278260.png

migueldfr_1-1730155303586.png

 

 

v_Afluencia_Valor_Actual_Semana = 
VAR _SemanaSeleccionada = 
    SELECTEDVALUE('MasterCalendar'[Week Number], WEEKNUM(TODAY(), 2))  -- Usar la semana seleccionada o la actual

VAR _AnioSeleccionado = 
    SELECTEDVALUE('MasterCalendar'[Year], YEAR(TODAY()))  -- Usar el año seleccionado o el año actual

-- Definimos la fecha de inicio de la semana seleccionada en el año seleccionado
VAR _FechaInicial = 
    CALCULATE(
        MIN('MasterCalendar'[Date]), 
        'MasterCalendar'[Year] = _AnioSeleccionado, 
        'MasterCalendar'[Week Number] = _SemanaSeleccionada
    )

-- Definimos la fecha de fin de la semana seleccionada en el año seleccionado
VAR _FechaFinal = 
    CALCULATE(
        MAX('MasterCalendar'[Date]), 
        'MasterCalendar'[Year] = _AnioSeleccionado, 
        'MasterCalendar'[Week Number] = _SemanaSeleccionada
    )

-- Obtenemos el valor de afluencia para el rango de fechas de la semana seleccionada
VAR _ResultadoActual = 
    CALCULATE(
        [SumEnters], 
        'MasterCalendar'[Date] >= _FechaInicial && 
        'MasterCalendar'[Date] <= _FechaFinal
    )

-- Si el resultado actual es BLANK, buscamos el último año disponible con datos para la semana seleccionada
VAR _AnioDisponible = 
    IF(
        ISBLANK(_ResultadoActual),  -- Solo si no hay resultado
        CALCULATE(
            MAX('MasterCalendar'[Year]), 
            'MasterCalendar'[Week Number] = _SemanaSeleccionada,  -- Aseguramos que sea la semana seleccionada
            'MasterCalendar'[Year] < _AnioSeleccionado  -- Años menores al año seleccionado
        ),
        _AnioSeleccionado  -- Usamos el año seleccionado si hay resultado
    )

-- Definimos la fecha de inicio y fin de la semana en el año anterior encontrado
VAR _FechaInicialAnterior = 
    IF(
        NOT ISBLANK(_AnioDisponible),
        CALCULATE(
            MIN('MasterCalendar'[Date]), 
            'MasterCalendar'[Year] = _AnioDisponible,
            'MasterCalendar'[Week Number] = _SemanaSeleccionada
        ),
        BLANK()
    )

VAR _FechaFinalAnterior = 
    IF(
        NOT ISBLANK(_AnioDisponible),
        CALCULATE(
            MAX('MasterCalendar'[Date]), 
            'MasterCalendar'[Year] = _AnioDisponible,
            'MasterCalendar'[Week Number] = _SemanaSeleccionada
        ),
        BLANK()
    )

-- Intentamos obtener el valor de afluencia para el rango de fechas de la semana en el año anterior
VAR _ResultadoAnterior = 
    IF(
        NOT ISBLANK(_FechaInicialAnterior) && NOT ISBLANK(_FechaFinalAnterior),  -- Aseguramos que las fechas sean válidas
        CALCULATE(
            [SumEnters], 
            'MasterCalendar'[Date] >= _FechaInicialAnterior && 
            'MasterCalendar'[Date] <= _FechaFinalAnterior
        ),
        BLANK()  -- Retorna BLANK si las fechas no son válidas
    )

-- Retornamos el resultado final
RETURN
    IF(ISBLANK(_ResultadoActual), IF(ISBLANK(_ResultadoAnterior), 0, _ResultadoAnterior), _ResultadoActual)  -- Retorna 0 si no hay resultado, o el resultado encontrado

 

Y tambien estoy intentado conseguir el valor anterior.

y se comporta igual , es decir para el año anterior a la actual para que haga la diferencia

 

v_Afluencia_Valor_Anterior_Semana = 
VAR _SemanaSeleccionada = 
    SELECTEDVALUE('MasterCalendar'[Week Number], WEEKNUM(TODAY(), 2))  -- Semana seleccionada o actual

VAR _AnioSeleccionado = 
    SELECTEDVALUE('MasterCalendar'[Year], YEAR(TODAY()))  -- Año seleccionado o actual

-- Determinar el año a usar: si no hay selección, usar el año anterior al actual
VAR _AnioParaCalculo = 
    IF(
        ISBLANK(SELECTEDVALUE('MasterCalendar'[Year])), 
        YEAR(TODAY()) - 1, 
        _AnioSeleccionado
    )

-- Intentamos obtener el valor actual
VAR _ResultadoActual = 
    CALCULATE(
        Afluencia[Total_Afluencia_Sencurso], 
        'MasterCalendar'[Week Number] = _SemanaSeleccionada,
        'MasterCalendar'[Year] = _AnioParaCalculo
    )

-- Si el resultado actual es BLANK, buscamos el último año disponible con datos para la semana seleccionada
VAR _AnioDisponible = 
    IF(
        ISBLANK(_ResultadoActual), 
        CALCULATE(
            MAX('MasterCalendar'[Year]), 
            FILTER(
                ALL('MasterCalendar'), 
                'MasterCalendar'[Week Number] = _SemanaSeleccionada && 
                'MasterCalendar'[Year] < _AnioParaCalculo &&
                NOT ISBLANK([Total_Afluencia_Sencurso])
            )
        ),
        _AnioParaCalculo
    )

-- Definimos el año anterior al año disponible
VAR _AnioAnterior = 
    IF(NOT ISBLANK(_AnioDisponible), _AnioDisponible - 1, BLANK())

-- Definimos la fecha de inicio de la semana seleccionada en el año anterior encontrado
VAR _FechaInicial = 
    IF(
        NOT ISBLANK(_AnioAnterior),
        CALCULATE(
            MIN('MasterCalendar'[Date]), 
            FILTER(
                ALL('MasterCalendar'), 
                'MasterCalendar'[Year] = _AnioAnterior &&
                'MasterCalendar'[Week Number] = _SemanaSeleccionada
            )
        ),
        BLANK()
    )

-- Definimos la fecha de fin de la semana seleccionada en el año anterior encontrado
VAR _FechaFinal = 
    IF(
        NOT ISBLANK(_AnioAnterior),
        CALCULATE(
            MAX('MasterCalendar'[Date]), 
            FILTER(
                ALL('MasterCalendar'), 
                'MasterCalendar'[Year] = _AnioAnterior &&
                'MasterCalendar'[Week Number] = _SemanaSeleccionada
            )
        ),
        BLANK()
    )

-- Intentamos obtener el valor del total de afluencia para el rango de fechas de la misma semana del año anterior
VAR _ResultadoAnterior = 
    IF(
        NOT ISBLANK(_FechaInicial) && NOT ISBLANK(_FechaFinal),  -- Aseguramos que las fechas sean válidas
        CALCULATE(
            Afluencia[Total_Afluencia_Sencurso], 
            'MasterCalendar'[Date] >= _FechaInicial && 
            'MasterCalendar'[Date] <= _FechaFinal
        ),
        BLANK()  -- Retorna BLANK si las fechas no son válidas
    )

-- Retornamos el resultado final
RETURN
    IF(ISBLANK(_ResultadoActual), _ResultadoAnterior, _ResultadoActual)  -- Retorna 0 si no hay resultado, o el resultado encontrado

 

 

PD: Cuando seleccione un año posterior a la semana actual, no habra datos para esa semana, quiero que me coja el ultimo valor que haya dispoible para el actual, y para el anterior, justamente el año anterior 

Y esta es la tabla que tengo para mostra junto al KPI:

migueldfr_2-1730155512277.png



Muchas gracias por cualquier ayuda.

 

 

 

0 REPLIES 0

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

February Power BI Update Carousel

Power BI Monthly Update - February 2026

Check out the February 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.