gpt4 book ai didi

python - 我如何在 PySpark 的 DataFrame 中按总和排序?

转载 作者:行者123 更新时间:2023-11-28 20:41:04 26 4
gpt4 key购买 nike

类似于:

order_items.groupBy("order_item_order_id").count().orderBy(desc("count")).show()

我试过:

order_items.groupBy("order_item_order_id").sum("order_item_subtotal").orderBy(desc("sum")).show()

但这给出了一个错误:

Py4JJavaError: An error occurred while calling o501.sort. : org.apache.spark.sql.AnalysisException: cannot resolve 'sum' given input columns order_item_order_id, SUM(order_item_subtotal#429);

我也试过:

order_items.groupBy("order_item_order_id").sum("order_item_subtotal").orderBy(desc("SUM(order_item_subtotal)")).show()

但我得到了同样的错误:

Py4JJavaError: An error occurred while calling o512.sort. : org.apache.spark.sql.AnalysisException: cannot resolve 'SUM(order_item_subtotal)' given input columns order_item_order_id, SUM(order_item_subtotal#429);

我在执行时得到了正确的结果:

order_items.groupBy("order_item_order_id").sum("order_item_subtotal").orderBy(desc("SUM(order_item_subtotal#429)")).show()

但这是后验完成的,在看到 Spark 附加到总和列名称的数字后,即 #429

有没有办法得到相同的结果,但先验,而不知道将追加哪个数字?

最佳答案

您应该为您的列使用别名:

import pyspark.sql.functions as func

order_items.groupBy("order_item_order_id")\
.agg(func.sum("order_item_subtotal")\
.alias("sum_column_name"))\
.orderBy("sum_column_name")

关于python - 我如何在 PySpark 的 DataFrame 中按总和排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34394745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com