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

Año actual y anterior año por semana de mes basado en calendarios fiscales

Hola

El comportamiento del gráfico de líneas siguiente es lo que estoy intentando volver a crear en Power BI cuando no se selecciona ningún valor de segmentación de datos de fecha. El gráfico tiene una línea del año actual (azul) para la ganancia bruta y una segunda línea (naranja) para la ganancia bruta del año anterior, ambas en el eje y con la semana del mes en el eje x. El calendario Dim que se utiliza es un calendario fiscal que puede variar entre diferentes organizaciones y cómo se ve su calendario fiscal (por ejemplo, calendario 4-4-5, calendario 4-5-4, etc.). Por ejemplo, Org. A podría tener un calendario fiscal que contenga 4 semanas para mayo de 2022, mientras que la Org. B tiene 5 semanas para mayo de 2022.

Quiero que la fecha de vigencia de los datos que es única para cada organización impulse el cálculo de la ganancia bruta para la línea gráfica del año actual y la línea gráfica del año anterior a través de la lógica DAX mientras se muestran todas las semanas en la propia imagen para el mes fiscal particular al que se refiere la fecha de vigencia de los datos. Por ejemplo, si la fecha de vigencia de los datos es el 19/5/22 (que cae dentro de la semana 4 de mayo de 2022 en el calendario fiscal) y el calendario fiscal contiene un total de 5 semanas para mayo de 2022, entonces quiero que el gráfico visual muestre las 5 semanas del mes donde la línea del año actual muestra la ganancia bruta de cada semana hasta la semana 4 (la línea no se extenderá a la semana 5 debido a los datos. Fecha de entrada en vigor del 19/5/22 como se ve en el gráfico a continuación). Además, quiero que la línea del año anterior muestre la ganancia bruta de cada semana hasta la semana 5, ya que la línea representa la ganancia bruta de mayo de 2021 y las 5 semanas dentro de ese mes.

¿Cómo lograría este comportamiento si no se seleccionan segmentaciones de datos de fecha? Basándome en lo que describí aquí, ¿puedo incluso lograr este comportamiento sin que se seleccionen segmentaciones de datos para filtrar el objeto visual en sí? Siento que la lógica DAX en sí misma no es suficiente para lograr el comportamiento que estoy buscando y se necesita algún tipo de filtro en el visual en sí, ya sea a través de una segmentación de datos o un filtro en el propio visual a través del panel Filtros.

Por favor, hágamelo saber si necesita más detalles sobre lo que estoy tratando de lograr. La relación del modelo de datos es una relación estándar de 1 a M entre el calendario Tenue (fiscal) y la tabla de transacciones Fct.

CY and PY by Week of Month - Intended Behavior.png

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

@Magellan2022 Gracias por comunicarse, y otros grandes miembros de la comunidad lo están ayudando. Basado en su publicación inicial, es factible sin usar ninguna rebanadora, etc. Recomendaría crear un archivo pbix de muestra con la salida esperada y compartirlo usando una / unidad de Google, ayudará a proporcionar la solución.

Syndicate_Admin
Administrator
Administrator

@SpartaBI , @tamerj1 , @Jihwan_Kim , @PaulDBrown , @parry2k , @MFelix , @AlexisOlson

Me estoy comunicando con usted específicamente para ver si se podría proporcionar alguna orientación desde su perspectiva, por favor. ¡Cualquier ayuda sería apreciada! Incluso una explicación de alto nivel de los fundamentos de cómo funciona Power BI que explicaría si lo que estoy tratando de hacer es posible para no sería bienvenida también. ¡¡Gracias!!

@Magellan2022 ,

No estoy muy seguro de si entendí su configuración y configuración del modelo, pero creo que mi principal confusión proviene del hecho de que usted refiere la fecha de vigencia y obtengo algo de lo que perdí.

Puedo suponer que tiene las columnas fiscales para el año / mes / semana en año / semana en el mes fiscal, si ese es el caso, hacer su rebanadora basada en el año y mes fiscxal y el gráfico de la semana basada en la semana en el mes fiscal debería darle el cálculo necesario.

Lo he dicho antes de perderme en la parte de la fecha de vigencia, pero los conceptos principales deben funcionar se ha descrito anteriormente, por supuesto que los cálculos deben hacerse utilizando las columnas fiscales.

¿Tiene sentido? ¿Puede por favor elaborar un poco más, si lo desea puede enviar un mensaje privado para que nos arranje un poco de tiempo para discutir?

@MFelix

¡Gracias por su respuesta!

El [Fecha de entrada en vigor de los datos]..... medida en el modelo -> MAX ('Dim Organization'[_MAX_ROW_EFFECTIVE_DATE)..... se basa en la última vez que los datos se cargaron en el modelo de datos de una organización determinada. El informe de Power BI se incrusta en un sitio web y cuando un usuario inicia sesión en el informe, solo se muestran los datos del informe relacionados con la organización a la que pertenece el usuario. Este filtrado se realiza a través de la seguridad a nivel de fila basada en el nombre principal de usuario del usuario que ve el informe.

Cuando no se seleccionan valores de segmentación de datos de fecha fiscal en el informe, quiero que la medida [Fecha de vigencia de los datos] impulse los cálculos de DAX para las líneas Año actual y Año anterior en el gráfico de líneas visual. Tiene razón en que cuando se seleccionan los valores de la segmentación de datos de fecha fiscal, obtengo el comportamiento correcto previsto. Estoy tratando de obtener el mismo comportamiento previsto cuando no se seleccionan valores de segmentación de datos de fecha fiscal donde la [Fecha de efectividad de datos] impulsa la lógica DAX para mostrar números precisos en el gráfico de líneas visual.

Si mi explicación no es suficiente, entonces le enviaré un mensaje en privado para una mayor discusión.

@Magellan2022 ,

Créanme ahora que entiendo lo que necesitan, en este caso necesitan forzar sus medidas para recoger los datos fiscales de la fecha de entrada en vigor.

Deberías probar algo similar a esto:

VAR EffectDate =
IF(ISFILTERED('Calendar'[Date]), MAX ( 'Calendar'[Date] ), MAX(Table[EffectiveDate]) )
VAR MaxFiscalYearMonth =
    LOOKUPVALUE (
        'Calendar'[FiscalYearMonth],
        'Calendar'[Date], EffectDate
    )
RETURN
    CALCULATE (
        [Measure], --measure to be calculated
        'Calendar'[FiscalYearMonth] = MaxFiscalYearMonth,
        ALL ( 'Calendar' )
    )

Tenga en cuenta que esto puede necesitar algunos cambios y adaptación, ya que he hecho un cambio de un modelo que uso, pero básicamente debe elegir el valor de la fecha si el calendario está filtrado, de lo contrario recogerá la fecha de vigencia y luego en función de eso recogerá la fecha fiscal correspondiente y la usará para devolver el resultado que necesita para su medida.

Una vez más, esto depende de la configuración de su modelo.

@MFelix ,

Creo que estamos en la misma página o muy cerca. No usé su lógica DAX que publicó aquí, pero tengo mi propio DAX que ya armé que casi me lleva al comportamiento deseado con el gráfico de líneas visual. A continuación se describen los problemas que estoy viendo...

-- Inicio del escenario 1 --

-- Este escenario es para demostrar lo que sucede cuando NO se seleccionan valores de segmentación de datos de fecha fiscal y solo la medida [Fecha de vigencia de datos] impulsa la lógica DAX.

Referenciado en el gráfico mide (CY y PY) como una variable.

v_MaxMonthID = 
VAR MaxWeek = [v_MaxWeekID]
RETURN
MAXX(FILTER('Dim Calendar','Dim Calendar'[Week ID] = MaxWeek),'Dim Calendar'[Month ID])

Debajo de DAX se hace referencia en la medida de v_MaxMonthID anterior. El valor de data effective date para todo lo que estoy explicando aquí en esta publicación es 5/19/22 (esto cae dentro de la Semana del Mes 4), que es lo que en última instancia impulsa toda la lógica DAX que ves.

v_MaxWeekID = 
VAR MaxData = [Data Effective Date]
RETURN
MAXX(FILTER('Dim Calendar','Dim Calendar'[Date] <= MaxData),'Dim Calendar'[Week ID])

Medida CY

Graph - Gross Profit (CY) = 
VAR vMaxMonthID = [v_MaxMonthID]
RETURN 
    CALCULATE (
        [Transaction Amt GP*],
        FILTER (  'Dim Calendar'  , 'Dim Calendar'[Month ID] = vMaxMonthID )
    )

Medida PY

Graph - Gross Profit (PY) = 
VAR vMaxMonthID1 = [v_MaxMonthID]
VAR vDataEffYear =
    CALCULATE (
        MAX ( 'Dim Calendar'[Year] ),
        FILTER ( ALL ( 'Dim Calendar' ), 'Dim Calendar'[Date] <= [Data Effective Date] )
    )
VAR vNumofWeeksPY =
    MAXX (
        FILTER ( ALL ( 'Dim Calendar' ), 'Dim Calendar'[Year] = vDataEffYear - 1 ), --this will be part of the the final return statement as 52 or 53 weeks depending on the fiscal calendar
        'Dim Calendar'[Week of Year]
    )
VAR vLastWeekofMaxMonth =
    CALCULATE (
        MAX ( 'Dim Calendar'[Week ID] ),
        FILTER ( 'Dim Calendar', 'Dim Calendar'[Month ID] <= vMaxMonthID1 )
    )
RETURN
    CALCULATE (
        [Transaction Amt GP*],
        FILTER (
            ALL ( 'Dim Calendar' ),
            'Dim Calendar'[Week ID] = vLastWeekofMaxMonth - vNumofWeeksPY  --this will either be 52 or 53 weeks depending on the fiscal calendar for given organization
        )
    )

Ahora, cuando los valores de la segmentación de datos de fecha del mes fiscal y del año fiscal NO están seleccionados, obtengo los resultados correctos para cada semana, excepto para la semana del mes 5. Las imágenes de la tabla agregada muestran que todo se ve bien con los números de cada semana del mes, excepto la semana 5.

Imagen de tabla que se ha convertido a partir de un gráfico de líneas para facilitar la legibilidad.

GP - Incorrect week 5 values for CY and PY - Org 1.png

- Para la semana 5, el valor de la medida CY es en realidad de la semana 5 de enero de 2022 en lugar de la semana 5 de mayo de 2022. (El valor esperado debe estar en blanco).

- Para la semana 5, el valor de la medida PY es en realidad de la semana 5 de enero de 2021 en lugar de la semana 5 de mayo de 2022. (El valor esperado debe ser 98,734.25)

Tablas que me dicen cuáles deberían ser los valores esperados para la semana 5 de mayo de 2022 y mayo de 2021.

GP - Expected Week of Month Values for May 2022 and May 2021 - Org 1.png

-- Fin del Escenario 1 --

-- Inicio del escenario 2 --

-- Esto es para demostrar lo que sucede cuando se seleccionan los valores de la segmentación de datos de fecha del año fiscal y del mes fiscal.

Imagen de tabla que se ha convertido a partir de un gráfico de líneas para facilitar la legibilidad.

GP - Incorrect week 5 value ONLY for PY when slicers selected - Org 1.png

- Para la semana 5, el valor de la medida PY no debe estar en blanco. (El valor esperado debe ser 98,734.25)

- Todo lo demás es correcto.

-- Fin del escenario 2 --

Como puede ver, estoy tratando de dar cuenta de dos escenarios diferentes con el visual ... uno para cuando los valores de la segmentación de datos de fecha fiscal NO ESTÁN seleccionados frente a cuando los valores de la segmentación de datos de fecha fiscal ESTÁN seleccionados. Aquí es donde quizás fundamentalmente esto no es posible en función del contexto de filtro del propio objeto visual y la forma en que Power BI está destinado a funcionar.... pero podría estar equivocado aquí.

Además, hablé mal antes de que todo parecía correcto cuando se seleccionan los valores de la segmentación de datos de fecha fiscal. Tengo diferentes medidas DE DAX separadas que muestran correctamente los valores del gráfico de líneas SOLO cuando se seleccionan los valores de la segmentación de datos de fecha fiscal, pero en realidad estoy tratando de resolver los dos escenarios que describí anteriormente.

Con suerte, estos detalles ayudan a explicar lo que estoy tratando de hacer.

Hola

Mirando los datos que proporcionó, el error en sus cálculos es el contexto de la fecha máxima. He hecho alguna depuración a su medida y en la última línea, es decir, la semana 5 para el mes, obtenemos el 1013 (mes de enero en lugar del 1017) por lo que el contexto de filtro para esta línea específica es incorrecto ya que esto debería devolver el mismo valor para todas las líneas lo mismo sucede en los valores py.

Así que en este caso lo que tienes que hacer es cambiar el contexto de filtro de tu Mes Máximo por lo que si reemplazas los valores que tienes deberías tener el resultado esperado:

Previous

VAR vMaxMonthID =[v_MaxMonthID] 

Updated
VAR vMaxMonthID =CALCULATE([v_MaxMonthID],ALLSELECTED('Dim Calendar'))

Puedes ver en la parte inferior que obtienes el resultado esperado:

MFelix_7-1658391774951.png

MFelix_6-1658391764361.png

MFelix_5-1658391751196.png

Syndicate_Admin
Administrator
Administrator

@Magellan2022 , a la semana del año este año vs el año pasado

Esta semana = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Year]=max('Date'[Year]) && 'Date'[Week] = Max('Date'[Week]) ))
El año pasado misma semana = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Year]=max('Date'[Year])-1 && 'Date'[Week] = Max('Date'[Week])))

Consulte también

Calendario estándar, Calendario no estándar, Calendario 4-4-4
https://www.youtube.com/watch?v=IsfCMzjKTQ0&t=145s

Inteligencia de tiempo, DATESMTD, DATESQTD, DATESYTD, semana a semana, semana hasta la fecha, período personalizado en el período,
Período personalizado hasta la fecha: https://youtu.be/aU2aKbnHuWs&t=145s

Power BI— Semana a semana y DMT
https://medium.com/@amitchandak.1978/power-bi-wtd-questions-time-intelligence-4-5-98c30fab69d3
https://community.powerbi.com/t5/Community-Blog/Week-Is-Not-So-Weak-WTD-Last-WTD-and-This-Week-vs-La...
https://www.youtube.com/watch?v=pnAesWxYgJ8

@amitchandak

Probé su solución, pero no funciona para mi escenario específico que describí cuando no se seleccionan valores de segmentación de datos de fecha. Estoy tratando de ver si puedo crear el comportamiento con el visual que proporcioné en la publicación original que está impulsado por un campo Fecha de vigencia de datos (por ejemplo, 5/19/2022). Estoy tratando de averiguar las dos medidas DAX del eje Y (Año curr y Año anterior) que resolverían esto, pero parece que se necesita algún tipo de filtro en la imagen en sí (desde una cortadora o filtro desde el panel de filtros) para lograr el resultado final que estoy buscando. Creo que hay algunos fundamentos de cómo Power BI está destinado a funcionar aquí que podrían no permitirme hacer lo que quiero... es por eso que me estoy comunicando con la comunidad de Power BI para obtener algo de claridad sobre si lo que estoy tratando de hacer es posible o no. Por el momento, no estoy seguro de si puedo lograr mi escenario con ONLY usando la lógica DAX para las medidas del eje y del año curr y el año anterior. Es por eso que ni siquiera estoy seguro de si lo que estoy tratando de lograr es posible sin usar selecciones de segmentación de datos de fecha.

NOTA: La lógica dax que proporcionó funciona cuando el año, el mes y la semana del mes se agregan a la imagen, pero mi requisito específico es MOSTRAR SOLO la semana del mes en el eje x.

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