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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Problema con el total de ejecución que cambia los datos de años anteriores a la semana 53

Hola a todos

Tengo un conjunto de datos de ventas donde la información se actualiza cada semana. El número de semana en la tabla tiene una "fecha de inicio de la semana" asociada que está vinculada a la "Fecha" en una tabla de fechas. (mantiene el uno a muchos)

Mis cálculos de YTD para el año pasado (y todos los años anteriores) estaban funcionando hasta que ajustamos para este año y agregamos una semana 53 para 2021. Desde entonces, los datos de la semana 1 2020 se están recopilando como datos de la semana 53, y el cálculo total en ejecución está agregando este total fantasma de la semana 53 al número original de la semana 2 para obtener un nuevo total de la semana 1 (¿tiene sentido hasta ahora?). PERO solo cuando veo los totales de carrera por semana. Las cifras reales de ventas semanales funcionan bien.

Entonces, cuando creo un gráfico de clúster con semanas en el eje X, y las medidas variables de YTD en los valores, el total de LY YTD y LLY YTD tiene el total de la segunda semana, enumerado como el total de la semana 1. He agregado fotos de los tablles a continuación para tratar de ayudar a explicar.

No tengo idea de cómo puedo adaptarme a esto. Actualmente la fórmula es:

Running Total Retail Sales LY YTD = 
    CALCULATE ([Retail Sales],
                FILTER (ALLSELECTED ('Date_Table'), 'Date_Table'[Date] <= MAX('Date_Table'[Date]) - (365) ),
                     FILTER (ALLSELECTED ('Date_Table'), 'Date_Table'[Date] >= [Wk1 Start LY] )
                        )

Donde está el [Wk1 Start LY]:

Wk1 Start LY = Calculate( SELECTEDVALUE( 'Date_Table'[Start]), Filter( ALL('Date_Table') , 'Date_Table'[Wk_Year] = "1_"&Year(Today())-1 ))

Aquí hay un par de tablas que muestran los totales de ejecución y la semana 53 de los años anteriores que ha aparecido:pberger15_2-1643648965408.png

pberger15_1-1643648930493.png

Totales de ventas semanales:
pberger15_3-1643649568640.png
Espero que esto sea lo suficientemente claro, pero si necesita algo más para ayudarme a hacer esto bien, ¡hágamelo saber! ¡Me está volviendo loco en este momento!
Muchas gracias
1 ACCEPTED SOLUTION

@pberger15 espero que esto ayude. Atribuye una fecha al año del que debe formar parte. Esto debería ayudar a asignar una fecha de inicio y finalización para cada año de acuerdo con sus fechas. A su vez, puede configurar la Semana 1 para que se alinee con la columna AbYearStart. La salida será similar a la siguiente y la única principal es modificar AbYear como / cuando sea necesario (anualmente como máximo).

TheoC_0-1643753148577.png

Apliqué los siguientes pasos:

1. Creé una columna calculada en mi tabla de fechas para un inicio de año "anormal":

AbYear = 

DÓNDE _1 = 'Fecha'[Fecha]
DÓNDE _y2019 = FECHA ( 2018 , 12 , 17 )
DÓNDE _y2020 = FECHA ( 2019 , 12, 30 )
DÓNDE _y2021 = FECHA ( 2020 , 12 , 15 )
DÓNDE _y2022 = FECHA ( 2021 , 12 , 29 )

DEVOLUCIÓN

INTERRUPTOR (
VERDADERO ( ) ,
_1 < _y2020 , 2019 ,
_1 < _y2021 , 2020 ,
_1 < _y2022 , 2021 ,
2022 )

2. Creé una columna fecha de inicio para el AbYear:

AbYearStart = CALCULATE ( MIN ( 'Date'[Date] ) , ALLEXCEPT ( 'Date' , 'Date'[Date] ) )

3. Se creó una columna Fecha de finalización para abYear:

AbYearStart = CALCULATE ( MAX ( 'Date'[Date] ) , ALLEXCEPT ( 'Date' , 'Date'[Date] ) )


Además, para usted y @AdamBoltryk, hay dos excelentes guiones de Reza y Marco que cubrirán todo lo que probablemente necesite en una tabla de fechas: https://radacad.com/all-in-one-script-to-create-calendar-table-or-date-dimension-using-dax-in-power-...) y https://www.sqlbi.com/articles/reference-date-table-in-dax-and-power-bi/.

Espero que esto ayude a aparearse.

Seguir

View solution in original post

12 REPLIES 12
Syndicate_Admin
Administrator
Administrator

Hi TheoC,

¿Hay alguna razón particular por la que usas en tus medidas la lógica con var, si tu FI no tiene sentido para mí?
Si (el valor es cero,
es cero,
si no es cero, es valor).
Adán

¿ @AdamBoltryk

A menudo surgen situaciones en las que puede filtrar y la salida es un valor nulo o en blanco. Esto sucede a menudo cuando los filtros no se usan en una medida o crean que la medida se vuelva demasiado ilegible. Al agregar el IF... 0 , 0 , más... proporciona una base para que la salida BLANK muestre 0 en lugar de BLANk. Es posible que lo vea con imágenes de KPI o tarjeta si las usa con frecuencia. Todo se remonta al filtrado en períodos o filtros similares (es decir, masculino / femenino; filtros demográficos: divisiones; etc.) si está creando paneles / informes para 5-10 años de datos y proporcionando a los usuarios el control del filtrado de principio a fin de esos períodos.

Hágame saber si eso tiene sentido. Encantado de explicar más.

¡Gran pregunta!

Bien

Seguir

Syndicate_Admin
Administrator
Administrator

Gracias @TheoC

He usado una fórmula de cálculo y Dateadd para el YTD al probar y funciona, hasta cierto punto.

El problema es que trabajamos en "semanas", por lo que la semana 1 para 2020 comenzó el 30/12/2019, lo que significa que todas las ventas de esa semana se ignoran en el cálculo de DateAdd, ya que la semana 1 se ve como 2019 (ya que todas las ventas están "fechadas" según la fecha de inicio de la semana).

Esto causa problemas cuando las personas miran las listas de ventas y ven que la semana 1 tuvo 10,000 unidades vendidas en las listas de ventas semanales, pero la semana 1 YTD muestra cero.

Hi pberger15,

En nuestro modelo de datos también utilizamos la lógica de la semana de producción. Construimos esto como tabla DIM de calendario con relación estática entre fecha y semanas / meses. Intentamos hacer esto como tabla PBI de automantenimiento, pero fallamos. La tabla externa de Excel con calendario actualizado una vez al año funciona para nosotros.

Adán

@pberger15 , Adam @AdamBoltryk ha planteado un gran punto sobre la tabla fecha. Subiré un modelo detallado basado en PBIX dax para ambos por la mañana que puede (con suerte) ser útil para ambos. Se agota fuera del año calendario, pero también se ha modificado para incorporar el ejercicio financiero que finaliza el 30 de junio. Esperemos que sea de ayuda.

Gracias @TheoC , creo que otro problema es que el comienzo de la semana uno a veces falla en el año anterior - por lo que cuando ajusto por un año, la primera semana queda fuera del alcance. Estoy usando una "fecha ajustada", ¡donde la semana 1 es siempre el 1 de enero! Si eso funciona, creo que tendré una pequeña fiesta....

De lo contrario, ¡esperaré una solución más sensata, inteligente y elegante!

@pberger15 espero que esto ayude. Atribuye una fecha al año del que debe formar parte. Esto debería ayudar a asignar una fecha de inicio y finalización para cada año de acuerdo con sus fechas. A su vez, puede configurar la Semana 1 para que se alinee con la columna AbYearStart. La salida será similar a la siguiente y la única principal es modificar AbYear como / cuando sea necesario (anualmente como máximo).

TheoC_0-1643753148577.png

Apliqué los siguientes pasos:

1. Creé una columna calculada en mi tabla de fechas para un inicio de año "anormal":

AbYear = 

DÓNDE _1 = 'Fecha'[Fecha]
DÓNDE _y2019 = FECHA ( 2018 , 12 , 17 )
DÓNDE _y2020 = FECHA ( 2019 , 12, 30 )
DÓNDE _y2021 = FECHA ( 2020 , 12 , 15 )
DÓNDE _y2022 = FECHA ( 2021 , 12 , 29 )

DEVOLUCIÓN

INTERRUPTOR (
VERDADERO ( ) ,
_1 < _y2020 , 2019 ,
_1 < _y2021 , 2020 ,
_1 < _y2022 , 2021 ,
2022 )

2. Creé una columna fecha de inicio para el AbYear:

AbYearStart = CALCULATE ( MIN ( 'Date'[Date] ) , ALLEXCEPT ( 'Date' , 'Date'[Date] ) )

3. Se creó una columna Fecha de finalización para abYear:

AbYearStart = CALCULATE ( MAX ( 'Date'[Date] ) , ALLEXCEPT ( 'Date' , 'Date'[Date] ) )


Además, para usted y @AdamBoltryk, hay dos excelentes guiones de Reza y Marco que cubrirán todo lo que probablemente necesite en una tabla de fechas: https://radacad.com/all-in-one-script-to-create-calendar-table-or-date-dimension-using-dax-in-power-...) y https://www.sqlbi.com/articles/reference-date-table-in-dax-and-power-bi/.

Espero que esto ayude a aparearse.

Seguir

Gracias @TheoC , he marcado su solución como aceptada, es mucho más elegante que la chapuza que he forzado a mis datos.

Mi chapuza es una idea similar, ya que ajusta la fecha a la que está vinculada la semana: agregué una nueva columna de "fecha" en mi tabla de "semanas", que es la fecha de "mitad de semana", efectivamente 4 días después de la fecha de inicio de la semana. Esta es la fecha en que luego me uní a la tabla de fechas.

Esto lleva a que cada semana 1 esté vinculada al año correcto en la tabla de fechas. No tengo ninguna duda de que tendré problemas en el futuro, ¡pero necesitaba poner en marcha el tablero lo antes posible!

Gracias de nuevo a ti y a @AdamBoltryk .

@pberger15 eres un compañero de leyenda. ¡Me gusta el enfoque que has tomado! ¡Mucha suerte con tu viaje de Power BI big fella!

Jaja @pberger15 encanta!

No hace mucho tiempo, proporcioné una solución sobre la Comunidad que tenía períodos trimestrales anormales. Estoy seguro de que un enfoque similar le dará lo que está buscando.

Saludos de nuevo y espero ser invitados a esa pequeña fiesta jaja. ¡Me encanta!

@pberger15 Si no tienes una solución por la mañana, te pondré algo mañana. En este momento por teléfono y es de noche aquí en Australia.

Syndicate_Admin
Administrator
Administrator

¿ @pberger15

Si buscas totales acumulados para el año fiscal / financiero completo, te recomiendo simplificar las medidas del año actual y del año pasado. A continuación, hay tres medidas:

Esta es su medida de ventas minoristas (ajuste la tabla y la columna Cantidad para que coincidan con sus datos):

m1 Retail Sales = SUM ( Table[Amount] )  

Este es el cálculo del año actual a la fecha y debe usar una tabla de fechas / calendario siempre que sea posible:

m2 Retail Sales (CurYr) = 
VAR _1 = CALCULATE ( [m1 Retail Sales] , DATESYTD ( 'Date'[Date] ) )
RETURN
IF ( _1 = 0 , 0 , _1 )

Este es el cálculo del último año y debe usar una tabla de fechas / calendario siempre que sea posible:

m3 Retail Sales (LstYr) = 
VAR _2 = CALCULATE ( [mm1 Retail Sales] , DATEADD ( 'Date'[Date] , -1 , YEAR ) )
RETURN
IF ( _2 = 0 , 0 , _2 )

Espero que lo anterior pueda ayudar. Si no, házmelo saber.

¡Todo lo mejor!
Theo 🙂

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.

Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.