【问题标题】:Aggregate on multiple columns in spark dataframe (all combination)聚合火花数据框中的多列(所有组合)
【发布时间】:2017-09-30 18:40:14
【问题描述】:

我想根据我在数据框中的所有列组合来计算客户数量。

例如:-假设我有 5 列的数据框。

id, col1, col2, col3, cust_id

我需要所有组合的客户数量:

    id, col1, count(cust_id)
    id, col1, col2, count(cust_id)
    id, col1, col3, count(cust_id)
    id, col1, col2, col3, count(cust_id)
    id, col2, count(cust_id)
    id, col2, col3, count(cust_id)

等等所有排列和组合。

很难单独为数据框的groupBy功能提供所有不同的组合,然后汇总客户数量。

有什么方法可以实现这一点,然后将所有结果合并到一个数据帧中,这样我们就可以将结果写入一个输出文件。

对我来说它看起来有点复杂,如果有人能提供任何解决方案,我真的很感激。如果需要更多详细信息,请告诉我。

非常感谢。

【问题讨论】:

  • 感谢劳尔,感谢您的帮助。会试试这个,让你知道
  • 嗨 Raul,是否可以在多维数据集函数中提供一组 col,例如 (col1, col2), (col3,col4) 作为 CUBE 中的两个集合

标签: scala apache-spark spark-dataframe


【解决方案1】:

有可能and it is called cube:

df.cube("id", "col1", "col2", "col3").agg(count("cust_id"))
  .na.drop(minNonNulls=3)  // To exclude some combinations

SQL版本还提供了GROUPING SET,比.na.drop效率更高。

【讨论】:

  • 嗨 Raul,是否可以在多维数据集函数中提供一组 col,例如 (col1, col2), (col3,col4) 作为 CUBE 中的两个集合
猜你喜欢
  • 2019-02-27
  • 1970-01-01
  • 2018-11-30
  • 2018-01-16
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多