The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now
Como no puedo compartir el archivo .pbix aquí, intentaré explicar lo más detallado posible cuál es el escenario y el problema al que me enfrento.
Utilizo varias funciones de inteligencia de tiempo para obtener valores por M, Q, YTD y FY. Sin embargo, el cálculo no es tan simple. Para obtener el valor M, mi cliente tiene una lógica donde debemos hacer lo siguiente:
M = Valor mensual
YTD = Valor del año hasta la fecha
PM = Mes anterior
LC = Moneda local
GC = Moneda global (€)
FX = Tipo de cambio
M GC = (YTD LC * FX) - (YTD PM LC * FX PM) -> (Valor del año hasta la fecha mes actual * tipo de cambio del mes actual) - (valor del año hasta la fecha del mes anterior * tipo de cambio del mes anterior)
Para calcular eso, tuve que crear algunas funciones, que son:
YTD GC:
YTD GC =
VAR Result = SUMX(SUMMARIZE('Fact Data', 'Currency Exchange Rate'[CurrencyCode], 'Date'[Year], 'Date'[Month Number]),
CALCULATE([YTD LC] * SELECTEDVALUE('Fact Data'[FX Rate]))
)
RETURN Result
YTD PM GC:
YTD PM GC =
VAR MM = MAX('Date'[Month Number])
VAR Result = SUMX(SUMMARIZE('Fact Data', 'Currency Exchange Rate'[CurrencyCode], 'Date'[Year], 'Date'[Month Number]),
CALCULATE([YTD LC] * SELECTEDVALUE('Fact Data'[ExchangeRate_EURY]), PREVIOUSMONTH('Date'[Date]))
)
RETURN IF(MM=1, 0, Result)
Tenga en cuenta que hay una trampa aquí: Para evitar traer un número incorrecto en enero (como tomaría el YTD de diciembre del año anterior, y no quiero eso), aplico una condición que asigna 0 si el mes seleccionado es enero. Eso parece estar funcionando perfectamente para mis valores de fila, como se puede ver en la imagen de abajo. Sin embargo, el total de filas sigue teniendo en cuenta el valor de enero (creé una función ficticia para mostrar el valor) al resumir todas las filas.
El número correcto del total de filas debe ser 72.144 en lugar de 129.857, ya que el valor de enero (57.713) se eliminó de mi código.
No puedo encontrar una razón por la que el total de filas siga sumando el valor de enero, incluso si en mi fórmula asigné 0 a ese mes. ¿Cómo puedo asegurarme de que el total de la fila tendrá en cuenta el RETURN IF(MM=1, 0, Result) al calcular el subtotal?
Solved! Go to Solution.
Resolví el problema agregando el condicional dentro del CALCULATE en la función SUMX:
YTD PM GC:
YTD PM GC =
VAR YYYY = MAX('Date'[Year])
VAR Result = SUMX(SUMMARIZE('Fact Data', 'Currency Exchange Rate'[CurrencyCode], 'Date'[Year], 'Date'[Month Number]),
CALCULATE(IF(SELECTEDVALUE('Date'[Year]) < ode="">
With that, every data from previous year will be 0, so I keep only data from current year.
Resolví el problema agregando el condicional dentro del CALCULATE en la función SUMX:
YTD PM GC:
YTD PM GC =
VAR YYYY = MAX('Date'[Year])
VAR Result = SUMX(SUMMARIZE('Fact Data', 'Currency Exchange Rate'[CurrencyCode], 'Date'[Year], 'Date'[Month Number]),
CALCULATE(IF(SELECTEDVALUE('Date'[Year]) < ode="">
With that, every data from previous year will be 0, so I keep only data from current year.
Los totales de columna se calculan en todas las filas individuales. su función MAX() tiene un resultado diferente en el total de la columna, es 6,no 1.
En su lugar, debe usar funciones de iterador.
Ya estoy usando la función iteradora para calcular los valores. Pero para el total necesito esta verificación solo para evitar traer diciembre del año anterior allí. No encontré una manera de hacer eso dentro del SUMX, ya que se necesita fila por fila para calcularlo.
¿Tendrías alguna idea de lo que podría hacer allí?
Proporcione datos de muestra desinfectados que cubran completamente su problema. Solo puedo ayudarlo con datos de muestra significativos.
Pegue los datos en una tabla en su publicación o use uno de los servicios de archivos como OneDrive o Google Drive. Las capturas de pantalla de los datos de origen no son útiles.