PySpark中基于指定条件求和的最简实现方式咨询
简化实现方案
你的代码可以更简洁高效,不需要先对所有Mea_Desc分组聚合,直接先过滤目标条件再求和即可,能减少不必要的计算:
df.filter(col('Mea_Desc') == 'xycvg').agg(sum('Meas_Val').alias("Totl")).collect()[0][1]
如果只需要数值结果,还可以用first()方法替代collect()[0][1],可读性更好:
df.filter(col('Mea_Desc') == 'xycvg').agg(sum('Meas_Val')).first()[0]
这两种写法都能得到你需要的Decimal('10366755770.00')结果,而且逻辑更直接,执行效率也更高——因为先过滤后聚合,只处理符合条件的数据,避免了对全量数据的分组操作。
内容的提问来源于stack exchange,提问作者user3521180
相关产品推荐
相关产品推荐

