【发布时间】:2016-11-08 13:55:40
【问题描述】:
我有兴趣对属性执行聚合(例如常规计数)以下属性:
'category', 'sub-category', age, city, education... (around 10 more)
我对 group by 中所有可能的属性组合感兴趣,因此使用 dataframes cube 函数可以帮助我实现这一点。
但这里有个问题:sub-category 没有 category 就没有任何意义,所以为了实现这一点,我需要结合 rollup(category, sub-类别)与立方体(年龄,城市。教育......)。
如何做到这一点?
这是我尝试过的,其中 test 是我的表的名称:
val data = sqlContext.sql("select category,'sub-category',age from test group by cube(rollup(category,'sub-category'), age )")
这是我得到的错误:
org.apache.spark.sql.AnalysisException: 表达式 'test.
category' 既不在 group by 中,也不是聚合函数。如果您不在乎获得哪个值,请添加到分组依据或包装在 first() (或 first_value)中。;
【问题讨论】:
-
请通过共享示例数据、您尝试过的代码和预期输出提供可重现的示例。
-
@Srdjan Nikitovic:您尝试过窗口函数,它可能对您有所帮助吗?
-
@Shankar 我看不出窗口函数如何帮助我解决这个问题......
-
@SrdjanNikitovic:错误清楚地表明,您需要使用 group by 中的选定属性,或者您应该使用 agg 函数,但您没有执行任何操作。我不确定立方体功能。
标签: apache-spark apache-spark-sql