cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Helper II
Helper II

% YTD para períodos de fecha dinámicos

Hola a todos

Estoy luchando para mostrar el cambio de YTD % basado en un filtro de fecha dinámico.

Tengo una tabla Calendario que tiene:

Date, QuarterInCalendar, IsFirstDateOfYear

1/1/2019, Q1 2019, 1

1/2/2019, Q1 2019, 0

9/14/2020, Q3 2020, 0 (El calendario sube a la fecha más reciente en el conjunto de datos)

Estoy usando QuarterInCalendar como mi filtro de fecha para mostrar un % total de YTD a partir de la última fecha disponible en el período.

Estoy usando 5 medidas:

AUM Total = CALCULATE(SUM(DailyAssets[AUM]),LASTDATE('Calendar'[Date]))

(Estoy usando LASTDATE aquí porque de lo contrario, obtendré una suma diaria de activos de una serie fechada, que no es lo que quiero; Quiero la cantidad a partir de la última fecha.)

AUM FirstOfYear = CALCULATE([AUM Total],'Calendar'[FirstDayOfYearYN]-1)

(Esto sólo devolvía registros para el primer día del año, pero quería que ese valor se cumpliera para todas las demás fechas. Por lo tanto, mi próxima medida.)

AUM FirstOfYear Fill =
VAR y - SELECTEDVALUE('Calendario'[Fecha])
devolución
CALCULATE([AUM FirstOfYear], TOPN(2, FILTER(ALLSELECTED('Calendar'[Date]),'Calendar'[Date]<-y && NOT (ISBLANK([AUM FirstOfYear])))))))
(Busqué éste. En el ejemplo se utilizó TOPN(1,...), pero mi conjunto de datos cubre 2 años calendario, por lo que tengo 2 "primeros días del año", y el uso de TOPN(1,...) llenó todas las filas con el valor de 1/1/2019, incluidas las filas hasta 2020.)
Por último, utilizo estas dos últimas medidas para obtener YTD %:
AUM YTD Diff = IF(ISBLANK([AUM Total]), BLANK(), IFERROR([AUM Total] - [AUM FirstOfYear Fill],BLANK()))
AUM YTD % = IF(ISBLANK([AUM Total]), BLANK(), IFERROR([AUM YTD Diff]/[AUM FirstOfYear Fill],BLANK()))
Los datos de mi tabla resultante son correctos, pero por alguna razón no estoy obteniendo totales para AUM FirstOfYear Fill o AUM YTD %:
1 No Totals.JPG
Y cuando intento cortar dinámicamente basado en QuarterInCalendar, obtengo espacios en blanco:
2 No Values.JPG
Todo esto, sólo para mostrar YTD % ! Parece que debería ser más fácil.
1) ¿Hay una manera más fácil de llegar a mi estado final deseado, mostrando YTD % a partir de la última fecha basada en la segmentación QuarterInCalendar?
2) Si no es así, ¿cómo obtengo estas medidas para mostrar registros para QuarterInCalendar en lugar de fechas específicas?
Cualquier ayuda sería tremendamente apreciada. ¡¡¡Gracias!!!
1 ACCEPTED SOLUTION

Finalmente lo conseguí. Publicar respuesta en caso de que ayude a otra persona.

Nota para la Medida 1 a continuación, el LASTDATE se utiliza al final porque este es un total rodante que en realidad no quiero SUMA. Tal vez hay una mejor manera de lograr esto que lo que tengo para la Medida 1, pero oye, funciona.

Measure 1 (Total Current Value) = CALCULATE(SUM(Table[Value]),LASTDATE('Date'[Date]))

Measure 2 (First Value of each Year) = CALCULATE([Measure 1],STARTOFYEAR('Date'[Date])) 

Measure 3 (Difference between Current Value and Start-of-Year value over multiple years) = IF(ISBLANK([Measure 1]), BLANK(), IFERROR([Measure 1] - [Measure 2],BLANK()))

Measure 4 (Dynamic YTD %) = IF(ISBLANK([Measure 1]), BLANK(), IFERROR(TOTALQTD([Measure 3]/[Measure 2],'Date'[Date]),BLANK()))

Cambios realizados:

  • Fue capaz de obtener mi "Primer Valor de cada Año" (Medida 2) para llenar cada fila para cada fecha. Esto era la clave. Esto me permitió eliminar mi antigua medida "AUM FirstOfYear Fill". Hice esto basado en este cambio:
    • Medida 2 - CALCULATE([Medida 1],'Calendario'[FirstDayOfYearYN]-1) STARTOFYEAR('Date'[Date]))

  • El paso anterior me permitió extraer un valor para YTD %, pero sin un filtro de fecha, estaba mostrando una suma de porcentajes, cuando quería mostrar el porcentaje más reciente. Para mostrar el porcentaje más reciente de mi período, hice este cambio:
    • Medida 4 - IF(ISBLANK([Measure 1]), BLANK(), IFERROR([AUM YTD Diff]/[AUM FirstOfYear Fill]TOTALQTD([Measure 3]/[Measure 2], 'Date'[Date]),BLANK()))

¡Salud!

View solution in original post

9 REPLIES 9
Super User IV
Super User IV

@dkrw88 , Probar como

AUM YTD Diff á [AUM Total] - [AUM FirstOfYear Fill]
AUM YTD % - divide([AUM YTD Diff],[AUM FirstOfYear Fill],0)

De

AUM YTD Diff á sumx(Values(Date[Date]),[AUM Total] - [AUM FirstOfYear Fill])

AUM YTD % ? Average(Values(Date[Date]), divide([AUM YTD Diff],[AUM FirstOfYear Fill],0))



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
Dashboard of My Blogs !! YouTube Channel !! Connect on Linkedin

Proud to be a Super User!

Super User IV
Super User IV

@dkrw88 Esto parece un problema de totales de medida. Muy común. Vea mi post al respecto aquí: https://community.powerbi.com/t5/DAX-Commands-and-Tips/Dealing-with-Measure-Totals/td-p/63376

Además, esta Medida Rápida, Medir Totales, La Palabra Final debe obtener lo que necesita:
https://community.powerbi.com/t5/Quick-Measures-Gallery/Measure-Totals-The-Final-Word/m-p/547907


---------------------------------------

@ me in replies or I'll lose your thread!!!

I have a NEW book! 
DAX Cookbook from Packt
Over 120 DAX Recipes!




Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Gracias por los enlaces. Intenté crear una nueva medida RESUME para agrupar por QuarterInCalendar, pero todavía tengo espacios en blanco. Aquí está mi medida; tal vez hice algo malo?

AUM YTD % 2 ?
VAR _table ? SUMMARIZE(DailyAssets,'Calendar'[QuarterInCalendar],"AUM YTD %",[AUM YTD %])
devolución
IF(HASONEVALUE('Calendar'[QuarterInCalendar]),[AUM YTD %],SUMX(_table,[AUM YTD %]))
3 Attempt.JPG

@dkrw88 , En lugar de resumir sumx(values() ,[] ) , con YTD



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
Dashboard of My Blogs !! YouTube Channel !! Connect on Linkedin

Proud to be a Super User!

Intenté su sugerencia como nueva medida AUM YTD % 3 y se acercó, en que ahora veo un total, pero se muestra como 0

AUM YTD % 3 - DIVIDE([AUM YTD Diff],[AUM FirstOfYear Fill],0)

4 Attempt.JPG

Además, no estoy seguro de lo que quería decir cambiando SUMMARIZE a SUMX. Intenté hacer eso, pero recibí un error de sintaxis:

5 DAX.JPG

Medida actualizada. ¿Estoy más cerca?

AUM YTD % 2 = VAR _table - SUMMARIZE('Calendar','Calendar'[QuarterInCalendar],"_value",[AUM YTD %])
devolución
IF(HASONEVALUE('Calendar'[QuarterInCalendar]),[AUM YTD %],SUMX(SUMMARIZE(VALUES(_table),[_value]), ... ??
Además, para mi aprendizaje: si el objetivo final es mostrar un %YTD, ¿qué sería exactamente sumando a través de SUMX? No quiero sumar los porcentajes, pero mostrar YTD % a partir de la fecha más reciente en el QuarterInCalendar (período) seleccionado.

@dkrw88 , En primer lugar, tener YTD medida sin ninguno tiene uno valores. Haga que la segmentación de datos en la página seleccione una fecha en este año o coloque una página o un filtro de nivel visual y use un filtro de fecha relativa, digamos los últimos 5 años, incluido hoy.

YTD necesita una fecha para detenerse. Ahora tendrá la fecha de este año. de lo contrario irá hasta la fecha de finalización del calendario y calculará el total general. Gran total en calculado de nuevo. No hay mes/cantidad/año en la fila, por lo que la última fecha disponible en la página para datesytd



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
Dashboard of My Blogs !! YouTube Channel !! Connect on Linkedin

Proud to be a Super User!

Intenté agregar fechas específicas al filtro visual para que el calc supiera dónde detenerse al seleccionar un QuarterInCalendar, pero eso no funcionó. Parece que cualquier restricción en la fecha impide que aparezca mi AUM YTD % . Ver más abajo; la tabla inferior tiene los registros aparecen, pero no tiene filtro de fecha. La tabla superior tiene un filtro de nivel visual para fechas de fin de trimestre específicas, pero tan pronto como selecciono una fecha, el valor desaparece.

6 Attempt.JPG

Finalmente lo conseguí. Publicar respuesta en caso de que ayude a otra persona.

Nota para la Medida 1 a continuación, el LASTDATE se utiliza al final porque este es un total rodante que en realidad no quiero SUMA. Tal vez hay una mejor manera de lograr esto que lo que tengo para la Medida 1, pero oye, funciona.

Measure 1 (Total Current Value) = CALCULATE(SUM(Table[Value]),LASTDATE('Date'[Date]))

Measure 2 (First Value of each Year) = CALCULATE([Measure 1],STARTOFYEAR('Date'[Date])) 

Measure 3 (Difference between Current Value and Start-of-Year value over multiple years) = IF(ISBLANK([Measure 1]), BLANK(), IFERROR([Measure 1] - [Measure 2],BLANK()))

Measure 4 (Dynamic YTD %) = IF(ISBLANK([Measure 1]), BLANK(), IFERROR(TOTALQTD([Measure 3]/[Measure 2],'Date'[Date]),BLANK()))

Cambios realizados:

  • Fue capaz de obtener mi "Primer Valor de cada Año" (Medida 2) para llenar cada fila para cada fecha. Esto era la clave. Esto me permitió eliminar mi antigua medida "AUM FirstOfYear Fill". Hice esto basado en este cambio:
    • Medida 2 - CALCULATE([Medida 1],'Calendario'[FirstDayOfYearYN]-1) STARTOFYEAR('Date'[Date]))

  • El paso anterior me permitió extraer un valor para YTD %, pero sin un filtro de fecha, estaba mostrando una suma de porcentajes, cuando quería mostrar el porcentaje más reciente. Para mostrar el porcentaje más reciente de mi período, hice este cambio:
    • Medida 4 - IF(ISBLANK([Measure 1]), BLANK(), IFERROR([AUM YTD Diff]/[AUM FirstOfYear Fill]TOTALQTD([Measure 3]/[Measure 2], 'Date'[Date]),BLANK()))

¡Salud!

View solution in original post

Helpful resources

Announcements
secondImage

Congratulations!

We are excited to announce the Power BI Super Users!

Wave Release 2

Check out the updates in Power BI.

Overview of Power BI 2020 release wave 2!

Microsoft Ignite

Microsoft Ignite

Join digitally, March 2–4, 2021 to explore new tech that's ready to implement. Experience the keynote in mixed reality through AltspaceVR!

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.