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

Next up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. 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
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

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.

March Power BI Update Carousel

Power BI Community Update - March 2026

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

Top Kudoed Authors