Pyspark - 立方体聚合

问题描述 投票:0回答:1

我正在尝试使用 pyspark 中的立方体函数,而不包含立方体中的所有列。

SQL 相当于我想要实现的目标:

从表中选择 col1, col2, col3, sum(col4) 按 col1、cube(col2、col3) 分组

这按 col1 以及 col2 和 col3 的所有组合进行分组

在 pyspark 中,运行下面的命令时,我收到消息 GroupedData object has no attibute 'cube'

spark.table("table").groupBy(col1).cube(col2,col3).agg(sum(col4))

我可以使用cube,但我需要包含我不想包含的col1

spark.table(“表”).cube(col1,col2,col3).agg(sum(col4))

pyspark cube group
1个回答
0
投票

有两种选择:

  1. 使用 SQL:
spark.sql("""
    col1, col2, col3, sum(col4)
    from table 
    group by col1, cube(col2, col3)
""").show()
  1. 使用 Dataframe API 并过滤掉附加维度:
from pyspark.sql import functions as F

spark.table("data") \
    .cube("col1", "col2", "col3") \
    .agg(F.sum("col4")) \
    .where(F.col("col1").isNotNull()) \
    .show()
© www.soinside.com 2019 - 2024. All rights reserved.