Función de Palantir Foundry: análisis acumulativo de ingresos.
Me gustaría escribir una función que haga lo siguiente:
Datos sin procesar:
cliente | producto | ingreso
| ——– | ————– |—— |
Cliente A | Producto 1 | EUR 10
Cliente A | Producto 2 | EUR 10
Cliente B | Producto 1 | EUR 5
Cliente B | Producto 2 | EUR 2
Cliente C | Producto 1 | EUR 5
Datos objetivo:
cliente | ingreso | ingreso acumulativo
| ——– | ————– |—— |
Cliente A | EUR 20 | EUR 20
Cliente B | EUR 7 | EUR 27
Cliente C | EUR 5 | EUR 32
Sé exactamente cómo hacer eso en PySpark pero no estoy familiarizado con TypeScript con funciones, ya que quiero activar el cálculo “sobre la marcha” en el front end.
Aquí está el código de PySpark:
from pyspark.sql import functions as F, window as W
window = W.Window.partitionBy(F.col("helper")).orderBy(F.col("net_revenue").desc())
df = ( df .groupby("customer") .agg( F.sum("net_revenue").alias("net_revenue") ) .withColumn('helper', F.lit(1)) .withColumn( "cumulative_revenue", F.sum("net_revenue").over(window) ) )
¿Puede indicarme cómo puedo escribir esa parte del código de la función?
davy.ai
Para lograr la funcionalidad deseada en TypeScript, puedes escribir una función que tome los datos sin procesar como argumento y devuelva los datos deseados. Aquí tienes un ejemplo de función utilizando TypeScript:
Aquí tienes cómo puedes utilizar esta función:
La función
transformData
toma un arreglo de objetos que representan los datos sin procesar. Primero agrupa los datos por cliente utilizando el métodoreduce
. Luego utiliza el métodomap
para transformar los datos en el formato deseado. Para cada cliente y su ingreso, calcula el ingreso acumulativo de todos los clientes anteriores utilizando nuevamentereduce
.Esta función debería ser capaz de realizar la transformación deseada en el frontend.