如何将变量参数传递给spark sql中的Cube函数?

时间:2016-06-14 14:40:16

标签: apache-spark-sql cube spark-dataframe

如何将变量参数传递给spark sql中的Cube函数以及多维数据集的agg函数?

我有一个列列表,我想在列上找到立方体函数,也想找到aggerations函数。

例如:

val columnsInsideCube = List("data", "product","country")
val aggColumns = List("revenue")

我想要这样的事情:

dataFrame.cube(columns:String*).agg(aggcolumns:String*)

这不像将scala数组传递给Cube。 Cube是datafram中的预定义类。我们必须以适当的方式发送它。

1 个答案:

答案 0 :(得分:0)

您可以使用

Spark(1.4版中的新功能)

import pyspark.sql.DataFrame.cube
df.cube("name", df.age).count().orderBy("name", "age").show()

另请参阅How to use "cube" only for specific fields on Spark dataframe?


或HiveSQL

GROUP BY a, b, c WITH CUBE

或等同于

GROUP BY a, b, c GROUPING SETS ( (a, b, c), (a, b), (b, c), (a, c), (a), (b), (c), ( ))

https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation,+Cube,+Grouping+and+Rollup#space-menu-link-content


或者您可以使用其他库,例如

import com.activeviam.sparkube._