Py (Spark) orden más grande y orden total
Tengo datos en los que tengo el ID del cliente, el ID del producto y el monto total ordenado. En algunos casos, un cliente puede ordenar varios productos o viceversa.
Ahora quiero sumar según el ID del cliente y el producto que ordenaron.
Esta parte va bien para mí.
Pero al mismo tiempo, quiero tener información sobre el mayor pedido realizado.
cust_id | prod_id | order_amount |
---|---|---|
4726050 | 805300 | 6000 |
4726050 | 805300 | 12000 |
4733572 | 413800 | 25000 |
4733968 | 415400 | 4000 |
4733981 | 798400 | 8000 |
4735096 | 412200 | 14000 |
4735096 | 410600 | 32000 |
4735096 | 414200 | 15000 |
4735096 | 410600 | 7000 |
4735200 | 470600 | 5000 |
Intenté el siguiente código en pyspark
.
order_df.createOrReplaceTempView(‘order_df’)
order_agg_df = spark.sql(“””
SELECT cust_id, prod_id,
MAX(order_amount) as largest_order
,
SUM(order_amount) as `total_order
FROM
order_df
GROUP BY 1, 2
“””)
display(order_agg_df)
El problema que tengo es que obtengo el monto total de la orden para “largest_order”.
Cualquier ayuda o sugerencia sería apreciada.
Gracias de antemano.
davy.ai
Como se mencionó, está tratando de obtener el pedido más grande realizado por cada cliente para cada producto que pidieron junto con el monto total del pedido realizado. Puede lograr esto agregando una subconsulta y uniendo los resultados con los resultados agregados usando
cust_id
,prod_id
yorder_amount
. La subconsulta obtendrá el monto del pedido más grande para cada grupo(cust_id, prod_id)
.Código actualizado en
pyspark
:Esto debería darle el resultado deseado.