我正在尝试使用groupby和aggregate将sparksql查询重写为数据帧转换。以下是原始的sparksql查询。
result = spark.sql(
"select date, Full_Subcategory, Budget_Type, SUM(measure_value) AS planned_sales_inputs FROM lookups GROUP BY date, Budget_Type, Full_Subcategory")
下面是我正在尝试进行的Dataframe转换。
df_lookups.groupBy('Full_Subcategory','Budget_Type','date').agg(col('measure_value'),sum('measure_value')).show()
但是我不断遇到以下错误。
Py4JJavaError: An error occurred while calling o2475.agg.
: org.apache.spark.sql.AnalysisException: cannot resolve '`measure_value`' given input columns: [Full_Subcategory, Budget_Type, date];;
'Aggregate [Full_Subcategory#278, Budget_Type#279, date#413], [Full_Subcategory#278, Budget_Type#279, date#413, 'measure_value, sum('measure_value) AS sum(measure_value)#16168]
我很确定这与按列分组以及select子句中存在的那些列有关。
请帮助。
答案 0 :(得分:1)
我认为这是因为您正在col('measure_value')
函数内执行agg
,对我而言这没有意义,因为您没有以这种方式聚合任何值。
只需从col('measure_value')
中删除agg
,您将得到正确的结果。