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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

La medida del año anterior no se totaliza correctamente en la jerarquía de fechas.

Hola Comunidad Power BI.

Agradecería su ayuda en el siguiente tema.

Tengo una medida de "ventas del año anterior" que no se suma correctamente en una jerarquía de calendario financiero personalizada. Sin embargo, mi medida regular de "ventas" es totalizar correctamente.

Aquí hay un ejemplo del problema:

Nombre de la división

Nombre del año

Nombre del barrio

Nombre del período

Nombre de la semana

Fecha

Importe de las ventas

Importe de ventas PY

Oeste

2023

P01

P01

W04

1/22/2023

$ 100,00

1/23/2023

$ 500,00

$ 400,00

1/24/2023

$ 400,00

$ 350,00

1/25/2023

$ 600,00

$ 500,00

1/26/2023

$ 200,00

$ 200,00

1/27/2023

$ 300,00

$ 50,00

Total

$2,000.00

$ 100,00

Como puede ver arriba, el total en el monto de ventas PY es de $ 100.00, la fila del 1/22/2023. Debe ser de $ 1600.00. Si tuviera que usar una rebanadora para filtrar el 22/01/2023, el total sería de $ 400.00, el valor para el 23/01/2023.

Todas las segmentaciones de datos parecen funcionar normalmente y filtran tanto el importe de ventas como el importe de ventas PY como se desee.

Las medidas existen en un conjunto de datos de base de datos tabular SSAS y se escriben en DAX. Me conecto al conjunto de datos a través de una conexión SSAS desde Power BI Desktop.

El cálculo de ventas del año anterior está diseñado para obtener las ventas del año anterior para un número de semana y un número de día de la semana. El número de semana y el número de día de la semana son columnas de la tabla del calendario. La tabla del calendario tiene una relación con la tabla de ventas en la fecha del calendario = a la fecha de la transacción de ventas. La tabla del calendario está marcada como una tabla de fechas.

Este es un ejemplo del comportamiento del informe

Aquí está la fórmula para cada medida:

Importe de las ventas

Importe de ventas:= SUMA('Ingresos'[Sales_Amount])

Importe de ventas PY

Importe de ventas PY:=

VAR curWeekDay = MIN ('Calendario'[Día de la semana No])

VAR curWeek = MIN ('Calendario'[Número de semana])

VAR curYear = MIN ('Calendario'[Año No])

VAR prevAño = curYear - 1

VAR pyDate =

CALCULAR (

MIN ('Calendario'[Fecha]),

FILTRO (

ALL('Calendario'),

'Calendario'[Año No] = prevAño &&

'Calendario'[Semana No] = curWeek &&

'Calendario'[Día de la semana No] = curWeekDay

)

)

VAR result = SUMX(CALCULATETABLE('Calendar', 'Calendar'[Date] = pyDate), 'Sales'[Sales Amount])

Resultado RETURN

También he intentado calcular el "resultado" de la siguiente manera:

Resultado VAR =

CALCULAR (

SUMA(«Ventas»[Sales_Amount]),

FILTRO (

ALL('Calendario'),

'Calendario'[Fecha] = pyDate

)

)

Y esto.

Resultado VAR =

CALCULAR (

SUMA(«Ventas»[Sales_Amount]),

FILTRO (

ALL('Calendario'),

'Calendario'[Año No] = prevAño &&

'Calendario'[Semana No] = curWeek &&

'Calendario'[Día de la semana No] = curWeekDay

)

Observo que eliminar el ALL del filtro devuelve un resultado en blanco.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Con un agradecimiento especial de @tobiaseld, se nos ocurrió una solución.

Por mi cuenta, me di cuenta de que sería óptimo agregar una nueva columna a mi tabla de calendario "PY_Date". Esta columna se rellenó con la fecha que coincidía con mis criterios del año anterior, la semana actual, el día actual de la semana. Esto facilitó el cálculo del DAX e inicialmente obtuve los resultados que quería. Aquí está ese cálculo usando la nueva columna:

Importe de ventas año anterior:=

VAR pyDate = CALENDAR(MIN('Calendar'[PY_Date]), MAX('Calendar'[PY_Date]))

Resultado VAR = CALCULAR (SUMA('Ingresos'[Sales_Amount]), ALL('Calendario'), 'Calendario'[Fecha] IN pyDate)

Resultado RETURN

Esto funcionó bien, pero no funcionó para fechas no contiguas. Si seleccioné las semanas 1, 2, 4 y omití la semana 3 de mi segmentación de datos de jerarquía de datos. Obtendría una suma total que aún incluía la semana 3.

@tobiaseld proporcionó el bit para que funcione para una fecha no contigua. Aquí hay modificación:

Importe de ventas año anterior:=

VAR pyDate = VALUES('Calendar'[PY_Date]) // Esto equivale a los datos filtrados por la segmentación de datos
VAR result = CALCULATE( SUM('Revenue'[GL_Amount]), ALL('Calendar'), 'Calendar'[Date] IN pyDate )
Resultado RETURN

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Con un agradecimiento especial de @tobiaseld, se nos ocurrió una solución.

Por mi cuenta, me di cuenta de que sería óptimo agregar una nueva columna a mi tabla de calendario "PY_Date". Esta columna se rellenó con la fecha que coincidía con mis criterios del año anterior, la semana actual, el día actual de la semana. Esto facilitó el cálculo del DAX e inicialmente obtuve los resultados que quería. Aquí está ese cálculo usando la nueva columna:

Importe de ventas año anterior:=

VAR pyDate = CALENDAR(MIN('Calendar'[PY_Date]), MAX('Calendar'[PY_Date]))

Resultado VAR = CALCULAR (SUMA('Ingresos'[Sales_Amount]), ALL('Calendario'), 'Calendario'[Fecha] IN pyDate)

Resultado RETURN

Esto funcionó bien, pero no funcionó para fechas no contiguas. Si seleccioné las semanas 1, 2, 4 y omití la semana 3 de mi segmentación de datos de jerarquía de datos. Obtendría una suma total que aún incluía la semana 3.

@tobiaseld proporcionó el bit para que funcione para una fecha no contigua. Aquí hay modificación:

Importe de ventas año anterior:=

VAR pyDate = VALUES('Calendar'[PY_Date]) // Esto equivale a los datos filtrados por la segmentación de datos
VAR result = CALCULATE( SUM('Revenue'[GL_Amount]), ALL('Calendar'), 'Calendar'[Date] IN pyDate )
Resultado RETURN

Syndicate_Admin
Administrator
Administrator

Hi Amitchandak.

Gracias por su respuesta. Las fórmulas que usted proporciona no satisfacen mis necesidades. Sin embargo, agradezco su comentario porque me ayuda a describir mejor el problema.

Lo que estoy buscando es una manera de correlacionar una fecha en particular por una fecha del año anterior relacionada por la misma semana y día de la semana. La semana y el día de la semana se suministran mediante una tabla de calendario personalizada.

Por ejemplo: Si estoy buscando la semana y el día de la semana que responden conjuntamente para la fecha 2023-01-23. Me gustaría ver que 2023-01-23 es el segundo día de la semana 4 en 2023. Así que necesito encontrar el segundo día de la semana 4 en 2022, que es 2022-01-17. Además, 2022-01-23 es el primer día de la semana 5.

Fiscal week example.PNG

Así que mi fórmula funciona en el nivel de fecha. Sin embargo, no se suma adecuadamente a un nivel jerárquico como se describe en mi declaración original.

Esto es importante porque tenemos un calendario fiscal personalizado 4-4-5 que comienza el 1 de enero. La fecha 01-23 es en diferentes períodos fiscales en cada año.

Syndicate_Admin
Administrator
Administrator

@oscarw , En la mayoría de estos cálculos, el total general será el último valor.

Si tiene fecha o puede crear fecha con ayuda de año, semana, etc., intente medidas como

Año detrás de las ventas = CALCULATE(SUMA(Ventas[Importe de ventas]),dateadd('Fecha'[Fecha],-1,Año))


Año detrás de las ventas = CALCULATE(SUMA(Ventas[Importe de ventas]),SAMEPERIODLASTYEAR('Fecha'[Fecha]))


semana Año detrás de las ventas = CALCULATE(SUMA(Ventas[Importe de ventas]),dateadd('Fecha'[Fecha],-364,DÍA))

Por qué falla la inteligencia del tiempo - Powerbi 5 Savior Steps for TI :https://youtu.be/OBf0rjpp5Hw
https://amitchandak.medium.com/power-bi-5-key-points-to-make-time-intelligence-successful-bd52912a5b...

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors