Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Necesito el total acumulado para cada intervalo de cuarto Fórmula DAX
Resultado mostrado en la tabla "Total acumulado promedio"
El trimestre del segundo trimestre de 2025 aún se ejecuta, muestra el valor como cero una vez que se completa este trimestre y luego cambia automáticamente al total acumulado habitual, sugiere
Cuarto | Ventas | Total acumulado |
1T 2023 | 30 | 30 |
2023-T2 | 20 | 25 |
3º trimestre 2023 | 10 | 20 |
4º trimestre 2023 | 30 | 22.5 |
2024-T1 | 34 | 23.5 |
2024-T2 | 45 | 29.75 |
3º trimestre 2024 | 34 | 35.75 |
4º trimestre 2024 | 32 | 36.25 |
2025-T1 | 45 | 39 |
2025-T2 | 50 |
Hola @RajK2,
Quería comprobar si ha tenido la oportunidad de revisar la información proporcionada por @danextian @andrewsommer @burakkaragoz . No dude en ponerse en contacto con nosotros si tiene más preguntas. Si la respuesta ha abordado su consulta, acéptela como una solución para que otros miembros puedan encontrarla fácilmente.
Gracias.
Use una tabla de fechas dedicada con una clave de cuarto que se pueda ordenar cronológicamente y pruebe esto:
Qtr Avg Running Total =
// Get the latest date that has data, considering slicers (ALLSELECTED)
VAR LatestDateWithData =
CALCULATE (
LASTNONBLANK ( Dates[Date], [Total Revenue] ),
ALLSELECTED ( Dates )
)
// Get the month number of the latest date with data
VAR LatestMonthNumber =
MONTH ( LatestDateWithData )
// Get the YearQuarter key (formatted as "YYYYQQ") for the latest date with data
VAR LatestYearQuarter =
FORMAT ( LatestDateWithData, "YYYYQQ" )
// Get the YearQuarter key for the current row
VAR RowQuarter =
MAX ( Dates[YearQuarter] )
// Define the end months of each quarter
VAR QuarterEnds = { 3, 6, 9, 12 }
RETURN
IF (
// Check if the current row is the latest (still running) quarter
LatestYearQuarter = RowQuarter
&& NOT LatestMonthNumber
IN QuarterEnds && ISFILTERED ( Dates[YearQuarter] ),
0, // Show 0 for the latest incomplete quarter
CALCULATE (
// Calculate the running average up to the current quarter
AVERAGEX ( VALUES ( Dates[YearQuarter] ), [Total Revenue] ),
FILTER ( ALL ( Dates[YearQuarter] ), Dates[YearQuarter] <= RowQuarter )
)
)
Consulte el pbix adjunto para obtener más detalles.
@danextian - Gracias por su respuesta.
Básicamente, necesitamos comparar el precio promedio del trimestre actual Vs los 4 trimestres anteriores
Ejemplo: Precio del trimestre actual 40 y promedio de los últimos 4 trimestres = 60, es decir, 240/4 (60,30,70,80)
Reducción de ingresos = 20, por lo tanto, resalte como color rojo usando formato condicional.
Pasé por el archivo pbix y mis salidas de vista: resaltadas y deberían ser números.
Por favor, sugiera
Puede cambiar la instrucción RETURN de la siguiente manera:
RETURN
IF (
// Check if the current row is the latest (still running) quarter
LatestYearQuarter = RowQuarter
&& NOT LatestMonthNumber
IN QuarterEnds && ISFILTERED ( Dates[YearQuarter] ),
0, // Show 0 for the latest incomplete quarter
CALCULATE (
// Calculate the running average up to the current quarter
AVERAGEX ( VALUES ( Dates[YearQuarter] ), [Total Revenue] ),
DATESINPERIOD ( Dates[Date], MAX ( Dates[Date] ), -4, QUARTER ),
REMOVEFILTERS ( Dates )
)
)
REMOVEFILTERS ( Fechas ) no es necesario si ha configurado su tabla de Fechas/Calendario como tal.
@danextian - Funciona como una cosa, no funciona para ejecutar el trimestre actual, esto hará que sea cero si el trimestre actual es 2025-Q2, aún nos quedan 18 días.
otra ayuda para que estemos dando un promedio por encima de 4 trimestres en el trimestre actual, en caso de que no tenga 4 trimestres, entonces el valor debe ser 0 (ejemplo de la siguiente manera)
Esto es confuso. Quería obtener el promedio de hasta los últimos 4 trimestres antes de la corriente en su respuesta anterior, pero ahora desea que devuelvan cero. Esto también es diferente de su ejemplo inicial que tomó el promedio de los últimos 4 trimestres, incluido el actual.
@danextian disculpas por la confusión, trátelo como si este fuera el requisito final, ya que algunas necesidades internas cambian, por lo tanto, mi necesidad de cambiar ligeramente la fórmula DAX, sugiero sobre esto.
Espero que hayas tenido la oportunidad de revisar la solución compartida por @danextian . Si abordó su problema, considere aceptarlo como la solución: ayuda a otros a encontrar respuestas más rápidamente.
Si sigues teniendo el problema, no dudes en responder y estaremos encantados de ayudarte.
Gracias.
Pruebe esto:
Qtr Avg Running Total 3 =
// Get latest visible date with data
VAR LatestDateWithData =
CALCULATE (
LASTNONBLANK ( Dates[Date], [Total Revenue] ),
ALLSELECTED ( Dates )
) // Get earliest YearQuarter
VAR EarliestQtr =
CALCULATE ( MIN ( Dates[YearQuarter] ), ALL ( Dates ) )
VAR LatestMonthNumber =
MONTH ( LatestDateWithData ) // Get month number of latest date
VAR QuarterNumber4Start =
EDATE (
CALCULATE ( MINX ( STARTOFQUARTER ( Dates[Date] ), [Date] ), ALL ( Dates ) ),
3 * 3
)
VAR LatestYearQuarter =
FORMAT ( LatestDateWithData, "YYYY0Q" ) // Get YearQuarter key of latest date
VAR RowQuarter =
MAX ( Dates[YearQuarter] ) // Get YearQuarter key for current row
VAR QuarterEnds = { 3, 6, 9, 12 } // Quarter end months
VAR StartOfQtr =
MINX ( STARTOFQUARTER ( Dates[Date] ), [Date] )
VAR StartOfPrevQtr = StartOfQtr - 1 // Day before start of current quarter
VAR _Result =
IF (
HASONEVALUE ( Dates[YearQuarter] ),
SWITCH (
TRUE (),
StartOfQtr <= QuarterNumber4Start, 0, // Show 0 if earliest quarter
LatestYearQuarter = RowQuarter
&& NOT LatestMonthNumber
IN QuarterEnds && ISFILTERED ( Dates[YearQuarter] ), 0, // Show 0 if latest incomplete quarter
CALCULATE (
AVERAGEX (
VALUES ( Dates[YearQuarter] ),
[Total Revenue]
),
DATESINPERIOD ( Dates[Date], StartOfPrevQtr, -4, QUARTER ),
REMOVEFILTERS ( Dates )
)
)
)
RETURN
_Result
Gracias por la respuesta.
Está funcionando para el promedio total móvil 3, ya que no funciona para mí para el trimestre actual porque debería ser un valor cero como el mío, dando los valores y la fórmula aplicada como esta según lo sugerido por usted.
si no funciona, ¿podría sugerir otra medida? Si el trimestre del año es igual al trimestre actual, entonces cero, de lo contrario, aplique el total acumulado qtr 3
Hola
¿Sus datos reales tienen una columna de fecha adecuada? En caso afirmativo, comparta esos datos en un formato que se pueda pegar en un archivo de MS Excel. Además, ¿el primer trimestre sería de abril-junio o de enero a marzo?
Puede cumplir este requisito en DAX con una medida que compruebe si el trimestre actual está incompleto (es decir, si el último trimestre aún está en ejecución) y devuelva cero para él; De lo contrario, calculará el total acumulado promedio como de costumbre.
Medida DAX sugerida:
Average Running Total = VAR MaxQuarter = MAX('Table'[Quarter]) VAR CurrentQuarter = SELECTEDVALUE('Table'[Quarter]) VAR IsCurrent = CurrentQuarter = MaxQuarter RETURN IF( IsCurrent, 0, // Show 0 for the latest (still running) quarter CALCULATE( AVERAGEX( FILTER( ALL('Table'), 'Table'[Quarter] <= CurrentQuarter ), 'Table'[Sales] ) ) )
Si desea que la lógica se base en un campo de fecha en lugar de en una columna de un cuarto, o si necesita que la medida se actualice dinámicamente cuando haya nuevos datos disponibles, ¡hágamelo saber!
¡Espero que esto ayude!
@burakkaragoz otro copiar y pegar de IA?
@RajK2 Esto se debe a que MaxQuarter y CurrentQuarter devuelven el mismo valor en la fila actual, IsCurrent es TRUE y, por lo tanto, la condición devuelve cero.
Suponiendo que tiene una tabla de fechas y si no hay una columna de un cuarto en ella, debe agregar una
QuarterID =
"Q" & FORMAT(QUARTER('Date'[Date]), "0") & "-" & FORMAT('Date'[Date], "YYYY")
Utilice una medida o variable para detectar dinámicamente el trimestre actual:
CurrentQuarter =
VAR TodayDate = TODAY()
RETURN
FORMAT(TodayDate, "YYYY") & "-Q" & FORMAT(TodayDate, "Q")
Promedio móvil excluyendo el trimestre actual
Average Running Total =
VAR CurrentQ = FORMAT(TODAY(), "YYYY") & "-Q" & FORMAT(TODAY(), "Q")
VAR SelectedQ = SELECTEDVALUE('Date'[QuarterLabel])
VAR IsPast = SelectedQ < CurrentQ
RETURN
IF (
IsPast,
CALCULATE (
AVERAGEX (
DATESQTD('Date'[Date]),
CALCULATE(SUM('SalesTable'[Sales]))
),
FILTER (
ALLSELECTED('Date'),
'Date'[QuarterLabel] <= SelectedQ &&
'Date'[QuarterLabel] < CurrentQ
)
),
0
)
Por favor, marque esta publicación como una solución si le ayuda. Agradezco felicitaciones.