cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
cong_nguyen_acc
Frequent Visitor

Desviación del precio de cálculo a lo largo del tiempo

Hola

Necesito ayuda para resolver un cálculo como este:

+ La siguiente tabla muestra el precio de compra de un artículo de vez en cuando.

+ Una fecha mays tienen muchos precios, distintos por el aumento de record_ID.

+ Un artículo puede tener muchos códigos de divisa.

+ las fechas no son continuas.

el objetivo es calcular la desviación del precio con el precio anterior, correlacionando con el código de divisa.

Pls ayúdame con esto.

Gracias y saludos,

Record_ID SKU_ID Invoice_Date Invoice_Datetime Purchase_Price Currency_Code

5637227309FO0115/05/201915/05/2019 9:385.68Usd
5637227316FO0116/05/201915/05/2019 10:025.05Usd
5637227328FO0116/05/201916/05/2019 9:096.68Usd
5637227329FO0116/05/201916/05/2019 9:105.68Usd
5637227376FO0117/05/201917/05/2019 7:005.68Usd
5637234115FO0126/06/201926/06/2019 9:425.08Usd
5637234804FO0128/06/201928/06/2019 9:265.08Usd
5637234805FO0128/06/201928/06/2019 9:395.08Usd
5637237067FO0122/07/201922/07/2019 2:507.08Usd
5637255524FO0123/10/201925/10/2019 6:0515.00Sgd
6 REPLIES 6
v-zhenbw-msft
Community Support
Community Support

Hola @cong_nguyen_acc ,

Probamos el código de los nandukrishnavs y funciona bien.

Tal vez puedas probar la siguiente medida.

Measure = 
VAR current_time =
    MIN ( 'Table'[Invoice_Datetime] )
VAR _previousDateTime =
    CALCULATE (
        MAX ( 'Table'[Invoice_Datetime] ),
        ALLSELECTED ( 'Table' ),
        'Table'[SKU_ID] IN DISTINCT ( 'Table'[SKU_ID] ),
        'Table'[Invoice_Datetime] < current_time,
        'Table'[Currency_Code] IN DISTINCT ( 'Table'[Currency_Code] )
    )
VAR _previousPrice =
    CALCULATE (
        SUM ( 'Table'[Purchase_Price] ),
        ALLSELECTED ( 'Table' ),
        'Table'[Invoice_Datetime] = _previousDateTime
    )
RETURN
    IF (
        ISBLANK ( _previousPrice ),
        BLANK (),
        SUM ( 'Table'[Purchase_Price] ) - _previousPrice
)

El resultado así,

C 1.jpg

Si no cumple con su requisito, ¿podría mostrar el resultado exacto esperado basado en la tabla que ha compartido?

BTW, pbix como adjunto.

Saludos

Equipo de Apoyo comunitario _ zhenbw

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

amitchandak
Super User
Super User

@cong_nguyen_acc , Usted puede obtener el precio de la última fecha como. Usar tabla de fechas

Una nueva medida

Precio no contincioso de último día: CALCULATE(Avg('Table'[Price]),filter(all('Date'),'Date'[Date] ?MAXX(FILTER(all('Date'),'Date'[Date]<max('Date'[Date]]),Table['Date'])))

Y tomar diff con el precio

Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/



Power BI Features || Datamarts: https://youtu.be/8tskWsJTEpg || Field Parameters : https://youtu.be/lqF3Wa1FllE?t=70
Time Intelligence Decoded : https://youtu.be/aU2aKbnHuWs&t=145s
Did I answer your question? Mark my post as a solution! Appreciate your Kudos !! Proud to be a Super User! !!
Dashboard of My Blogs !! Connect on Linkedin !! Subscribe to my youtube Channel !!
Want To Learn Power BI | Beginners !! Advance Concepts !! Power BI For Tableau User !!
nandukrishnavs
Community Champion
Community Champion

@cong_nguyen_acc

Variation = 
var _currencu='Table'[Currency_Code]
var _previousDateTime=MAXX(FILTER(ALL('Table'),'Table'[SKU_ID]=EARLIER('Table'[SKU_ID])&&'Table'[Invoice_Datetime ]<EARLIER('Table'[Invoice_Datetime ])&&'Table'[Currency_Code]=_currencu),'Table'[Invoice_Datetime ])
var _previousPrice= MAXX(FILTER(ALL('Table'),'Table'[Invoice_Datetime ]=_previousDateTime),'Table'[Purchase_Price ])
var _variation= 'Table'[Purchase_Price ]-_previousPrice
return IF(ISBLANK(_previousPrice),BLANK(),_variation)

Capture.JPG



¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Apreciar con un kudos
🙂

Gracias nandukrishnavs,

El código funciona, pero todavía tiene fallos:

La variación sale mal cuando selecciono este elemento:

+ Línea 5637171193 , el resultado esperado debe ser 0 .

+ La línea 5637177070 debe ser 35.

+ La línea 5637182299 debe ser 0.

+ La línea 5637250795 debe ser 0.

Pls comprobar el código con este ejemplo de datos.

Gracias.

Record_IDSKU_IDInvoice_DateInvoice_DatetimeM_Previous_DateM_Min_DatePurchase_PriceCurrency_CodeVariación
563716501601VCDB5TP29/05/2017 0:0030/05/2017 1:5529/05/2017 0:0029/05/2017 0:0030Usd
563717119301VCDB5TP06/09/2017 0:0011/09/2017 6:5306/09/2017 0:0006/09/2017 0:0030Usd-15
563717707001VCDB5TP22/11/2017 0:0022/11/2017 9:1822/11/2017 0:0022/11/2017 0:0065Usd-30
563717707101VCDB5TP22/11/2017 0:0022/11/2017 9:2022/11/2017 0:0022/11/2017 0:0065Usd
563718229901VCDB5TP29/01/2018 0:0030/01/2018 3:3929/01/2018 0:0029/01/2018 0:0065Usd-189
563723263001VCDB5TP12/06/2019 0:0013/06/2019 10:3612/06/2019 0:0012/06/2019 0:0039Usd-26
563725079501VCDB5TP13/09/2019 0:0013/09/2019 7:2913/09/2019 0:0013/09/2019 0:0039Usd-31
563725234901VCDB5TP27/09/2019 0:0027/09/2019 7:2027/09/2019 0:0027/09/2019 0:0039Usd
563726634001VCDB5TP24/02/2020 0:0024/02/2020 10:5724/02/2020 0:0024/02/2020 0:0039Usd
563727006901VCDB5TP08/04/2020 0:0009/04/2020 8:2008/04/2020 0:0008/04/2020 0:0039Usd
AllisonKennedy
Super User
Super User

Si desea el precio al que se vendió más recientemente, deberá utilizar la función EARLIER dentro de una columna calculada. Si desea que el precio de un día o mes anterior, debe crear una tabla de fechas continua, relacionarla con la tabla existente y utilizar la inteligencia de tiempo.

¿Este post ha resuelto tu problema? Por favor, márquelo como una solución para que otros puedan encontrarlo rápidamente y para que la comunidad sepa que su problema ha sido resuelto.

Si has encontrado este post útil, por favor, dale a Kudos.

Trabajo como instructor y consultor para Microsoft 365, especializado en Power BI y Power Query.

https://sites.google.com/site/allisonkennedycv


Please @mention me in your reply if you want a response.

Check out my Olympics report with live stats - KUDOS much appreciated

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Además de mi respuesta anterior, aquí hay una fórmula de muestra que debería ayudar a:

Precio de compra anterior: MAXX(FILTER(Items, Items[SKU_ID]-EARLIER(Items[SKU_ID])&&Items[Currency_Code]-EARLIER(Items[Currency_Code])&& Items[Invoice_DateTime]<EARLIER(Items[Invoice_DateTime])),Items[Purchase_Price])

¿Este post ha resuelto tu problema? Por favor, márquelo como una solución para que otros puedan encontrarlo rápidamente y para que la comunidad sepa que su problema ha sido resuelto.


Si has encontrado este post útil, por favor, dale a Kudos.

Trabajo como instructor y consultor para Microsoft 365, especializado en Power BI y Power Query.

https://sites.google.com/site/allisonkennedycv


Please @mention me in your reply if you want a response.

Check out my Olympics report with live stats - KUDOS much appreciated

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Helpful resources

Announcements
August 1 episode 9_no_dates 768x460.jpg

The Power BI Community Show

Watch the playback when Priya Sathy and Charles Webb discuss Datamarts! Kelly also shares Power BI Community updates.

Power BI Dev Camp Session 24 without aka link and time 768x460.jpg

Ted's Dev Camp - July 28, 2022

Watch Session 24 of Ted's Dev Camp along with past sessions!

Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

Top Solution Authors