我有强大的统计数据来计算火花。从数据框中,必须计算大约50个KPI(每个KPI具有不同的过滤器和总和或平均...),按5列分组。
预期结果如下:
col1 col2 col3 col4 kpi1 kpi2 ... kpi50
我对每个kpis都有不同的请求(适用于相同的数据帧)。我正在寻找最优化的方式来实现它。
我目前的解决方案是计算每个KPI,其他kpi的值为0,如
df1.filter(...).select("col1", "col2", "col3", "col4", lit(1) as "col1", "col2", "col3", "col4""kpi1").sum("kpi1").groupBy().withColumn("kpi2", lit(0)).withColumn("kpi3", ....
df2.filter....
然后执行生成的df的联合,然后执行groupby和sum之类的
df1.union(df2).union(...).groupBy("col1", "col2", "col3", "col4").sum()
但在我看来,这似乎是一个常见的问题。是否有一种模式可以用火花或更好的解决方案来做到这一点?