Cómo crear un gráfico de barras que compare los datos de ‘Esta semana’, ‘Semana pasada’ y ‘Esta semana del año pasado’

Un usuario Pregunto ✅

jimbob741

Hola,

Acabo de empezar con Power BI y DAX hace muy poco, así que estoy bastante atascado en relación con este problema que tengo.

Me gustaría un gráfico de barras que muestre 3 resultados diferentes según el número de semana del año que he seleccionado. Me gustaría seleccionar la semana (p. ej., ‘semana 35’), luego, a partir de ahí, me gustaría calcular la semana anterior y la semana anterior del año pasado y mostrar los resultados uno al lado del otro.

Los datos son literalmente solo una columna de ‘Número de semana’ con un recuento de ‘Usuarios’ como valor.

Por favor, ¿alguien podría ayudarme con los pasos necesarios para lograr esto?

¡Muchas gracias de antemano!

@jimbob741

Me gustaría darle una muestra de la siguiente manera. El archivo .pbix se ha subido aquí. Supongo que tenemos una tabla como la siguiente.

Cómo crear un gráfico de barras que compare 'Esta semana', 'La semana pasada' y 'Esta semana el año pasado' data_1.jpg

Primero podemos crear una tabla de calendario y crear dos columnas con la siguiente fórmula. Cree una relación entre estas dos tablas con la clave Fecha.

Calendar = CALENDAR ( "1/1/2015", "12/31/2016" )
WeekNum = WEEKNUM ( 'Calendar'[Date] )
Year = YEAR ( 'Calendar'[Date] )

Cómo crear un gráfico de barras que compare 'Esta semana', 'La semana pasada' y 'Esta semana el año pasado' data_2.jpg

En la tabla original, cree también una columna WeekNum.

WeekNum = RELATED ( 'Calendar'[WeekNum] )

Luego, solo necesitamos crear dos medidas para obtener los datos de ‘La semana pasada’ y ‘Esta semana del año pasado’.

Last Week = 
VAR CurrentWeekNum =
    MAX ( 'Calendar'[WeekNum] )
VAR CurrentYear =
    MAX ( 'Calendar'[Year] )
RETURN
    (
        CALCULATE (
            SUM ( Table1[Users] ),
            FILTER (
                ALL ( 'Calendar' ),
                'Calendar'[Year] = CurrentYear
                    && 'Calendar'[WeekNum]
                    = CurrentWeekNum - 1
            )
        )
)
This Week Last Year = 
VAR CurrentWeekNum =
    MAX ( 'Calendar'[WeekNum] )
VAR CurrentYear =
    MAX ( 'Calendar'[Year] )
RETURN
    (
        CALCULATE (
            SUM ( Table1[Users] ),
            FILTER (
                ALL ( 'Calendar' ),
                'Calendar'[Year]
                    = CurrentYear - 1
                    && [WeekNum] = CurrentWeekNum
            )
        )
    )

Arrastre dos segmentaciones para Year & WeekNum y un gráfico de barras agrupadas al lienzo.

Cómo crear un gráfico de barras que compare 'Esta semana', 'La semana pasada' y 'Esta semana el año pasado' data_3.jpg

Atentamente,

Herbert

@jimbob741

Me gustaría darle una muestra de la siguiente manera. El archivo .pbix se ha subido aquí. Supongo que tenemos una tabla como la siguiente.

Cómo crear un gráfico de barras que compare 'Esta semana', 'La semana pasada' y 'Esta semana el año pasado' data_1.jpg

Primero podemos crear una tabla de calendario y crear dos columnas con la siguiente fórmula. Cree una relación entre estas dos tablas con la clave Fecha.

Calendar = CALENDAR ( "1/1/2015", "12/31/2016" )
WeekNum = WEEKNUM ( 'Calendar'[Date] )
Year = YEAR ( 'Calendar'[Date] )

Cómo crear un gráfico de barras que compare 'Esta semana', 'La semana pasada' y 'Esta semana el año pasado' data_2.jpg

En la tabla original, cree también una columna WeekNum.

WeekNum = RELATED ( 'Calendar'[WeekNum] )

Luego, solo necesitamos crear dos medidas para obtener los datos de ‘La semana pasada’ y ‘Esta semana del año pasado’.

Last Week = 
VAR CurrentWeekNum =
    MAX ( 'Calendar'[WeekNum] )
VAR CurrentYear =
    MAX ( 'Calendar'[Year] )
RETURN
    (
        CALCULATE (
            SUM ( Table1[Users] ),
            FILTER (
                ALL ( 'Calendar' ),
                'Calendar'[Year] = CurrentYear
                    && 'Calendar'[WeekNum]
                    = CurrentWeekNum - 1
            )
        )
)
This Week Last Year = 
VAR CurrentWeekNum =
    MAX ( 'Calendar'[WeekNum] )
VAR CurrentYear =
    MAX ( 'Calendar'[Year] )
RETURN
    (
        CALCULATE (
            SUM ( Table1[Users] ),
            FILTER (
                ALL ( 'Calendar' ),
                'Calendar'[Year]
                    = CurrentYear - 1
                    && [WeekNum] = CurrentWeekNum
            )
        )
    )

Arrastre dos segmentaciones para Year & WeekNum y un gráfico de barras agrupadas al lienzo.

Cómo crear un gráfico de barras que compare 'Esta semana', 'La semana pasada' y 'Esta semana el año pasado' data_3.jpg

Atentamente,

Herbert

eliotp

En respuesta a v-haibl-msft

@v-haibl-msftSolución increíble.

Estoy tratando de usar el mismo código; Lo tengo funcionando para mi propósito, excepto que parece que no puedo usar mi Datekey o una columna calculada en mi tabla de fechas, tengo que usar el valor WeekNum; de lo contrario, no funciona; ¿pensamientos?

jimbob741

En respuesta a v-haibl-msft

Muchas gracias Herbert, muy apreciado.

Su solución parece ser exactamente lo que busco, ¡lo intentaré y le diré cómo me fue!

En respuesta a jimbob741

@jimbob741

¿Se ha solucionado tu problema?

Atentamente,

Herbert

jimbob741

En respuesta a v-haibl-msft

Perfectamente Herbert, gracias! Disculpas por no confirmar antes.

ShawnPrecio

En respuesta a jimbob741

Estaba tratando de recrear esto y funciona bien, pero en lugar de que los Usuarios sean un número, tengo Representantes de llamadas, que es un campo de texto. ¿Puedo hacer algo como esto con eso? Parece que no puedo resolverlo. Gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *