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
Anonymous
Not applicable

% 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
Anonymous
Not applicable

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
amitchandak
Super User
Super User

@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))

Greg_Deckler
Super User
Super User

@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!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

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

Anonymous
Not applicable

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

Anonymous
Not applicable

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

Anonymous
Not applicable

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

Anonymous
Not applicable

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!

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