Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

cambio mes a mes

Hola, estoy tratando de calcular el cambio mes a mes para que pueda trazar los valores netos de ganancia/pérdida en un gráfico de líneas. ¿Es una columna calculada o una medida la mejor manera de hacerlo? Encontré otros mensajes que sugestó hacer una columna de prev_month, así que lo hice usando DAX, pero no estoy seguro de cómo proceder. Mi conjunto de datos tiene varios campos, necesito la diferencia de MoM acumulada en ese nivel (como un grupo por en SQL) - imagen aquí para demostrar la necesidad.

sk824a_0-1596141493388.png

9 REPLIES 9
V-pazhen-msft
Community Support
Community Support

@sk824a

Mi preocupación es si tienes el calendario unido correctamente. La imagen muestra que la columna de fecha tiene fechas replicadas. Debe haber más condiciones porque no sabe qué rol se considera como el valor del mes actual.

saludos
Paul

Anonymous
Not applicable

Hola Paul, Las fechas se replican porque hay varias combinaciones de atributos que hacen que cada fila sea única. No hay cálculo de "mes actual" que necesito, necesito ser capaz de volver atrás en el tiempo y calcular la ganancia / pérdida neta para cada mes, específico de esas combinaciones de atributos para que sólo comparemos manzanas con manzanas. Por favor, vea mi imagen de los datos de muestra arriba.

Anonymous
Not applicable

Traté de crear un

Rango (medida):

Rango de Rango (Rank)

RANKX (
ALLSELECTED ( 'Todos'),
CALCULATE ( MAX ( 'Todos'[date_column].[ Fecha] ) ),
,
Asc
Denso
)

&

MoM (medida):

Mes tras mes ?
Valor de corriente de VAR ?
SUM ( 'Todos'[in_service_value] )
VAR PreviousRank á [Rank] - 1
Valor anterior de VAR ?
CALCULAR (
SUM ( 'Todos'[in_service_value] ),
FILTRO ( ALLEXCEPT ('All', 'All'[product_name],'All'[forecast_start_date].[ Fecha],'All'[subproduct],'All'[value_title], 'All'[forecast_start_month], 'All'[forecast_start_year], 'All'[concat], 'All'[product_concat]), [Rank] á PreviousRank )
)
devolución
IF ( PreviousValue <> BLANK (), CurrentValue - PreviousValue )
Pero los valores son incorrectos. Creo que los valores son incorrectos porque hay fechas duplicadas en la tabla.
¿Alguna idea?
Anonymous
Not applicable

Aún no tengo solución para esto. ¿Alguna otra idea?

lbendlin
Super User
Super User

Aquí está la definición de la tabla

Gain_Loss:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtU31DcyMLRU0lFyBOIIII4EYlOlWJ1oJRNUSZBEFBCbgyWNsUsaY9MZAZU0wyUJ0m2hFBsLAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [date_column = _t, product_name = _t, speed = _t, region = _t, value = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"date_column", type date}, {"value", type number}})
in
    #"Changed Type"

y aquí está la medida:

Net_Gain := 
var e=edate(max(Gain_Loss[date_column]),-1)
return sum(Gain_Loss[value])-CALCULATE(sum(Gain_Loss[value]),ALL(Gain_Loss[date_column]),Gain_Loss[date_column]=e)

Produce algunos resultados inesperados, causados por la falta de datos del "mes anterior". El problema es que querrá distinguir entre la ausencia de datos y un caso cuando el valor del mes anterior era realmente cero.

Aquí hay otras dos variaciones.

Net_Gain := 
var pm=CALCULATE(sum(Gain_Loss[value]),dateadd(Gain_Loss[date_column],-1,MONTH))
return if(ISBLANK(pm),pm,sum(Gain_Loss[value])-pm)

Ese todavía tiene algo de rareza en los totales. Aquí hay uno que no muestra totales en absoluto.

Net_Gain = 
var pm=CALCULATE(sum(Gain_Loss[value]),PREVIOUSMONTH(Gain_Loss[date_column]))
return if(ISBLANK(pm),pm,sum(Gain_Loss[value])-pm)

nandic
Memorable Member
Memorable Member

@sk824a ,
Aquí está el cálculo de la medida mes a mes:

Diferencia de MoM ( MoM Difference)
var _currentMonth [Ventas totales]
var _previousMonth - CALCULATE([Total Sales],PREVIOUSMONTH('Date'[Date]))
devolución
_currentMonth-_previousMonth

*Nota: debe marcar la tabla de fechas como tabla de fechas para poder utilizar las funciones de inteligencia de tiempo.


Month over month calculation.PNG

Marque la tabla de fechas como tabla de fechas:
mark as date table new.PNG

Anonymous
Not applicable

Si la tabla de fechas tiene otros campos además de las fechas, ¿es un problema?

@sk824a , la práctica recomendada (para futuras demandas) es que tiene tabla de fechas.
En este caso se puede marcar como tabla de fechas, no se arruinará el modelo. El único must-have en esta tabla es tener la columna de fecha. Basado en esta columna, todas las funciones de inteligencia de tiempo funcionarán.
Puede encontrar tablas de fechas en línea en Dax.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.