首页 > 解决方案 > 将 Sparksql 查询转换为 Dataframe 转换

问题描述

我正在尝试使用 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 子句中存在的那些列有关。

请帮助。

标签: apache-spark-sql

解决方案


我认为这是因为你在做col('measure_value')内部agg函数,这对我来说没有意义,因为你没有以这种方式聚合任何价值。

只需从中删除col('measure_value')agg您将获得正确的结果。


推荐阅读