首页 > 解决方案 > 如何在 Spark SQL DSL 中表示数学表达式

问题描述

虽然我更喜欢直接使用SQL而不是使用DSL后者,但在某些情况下需要后者:当我们想要对分组的行执行自定义聚合时。

我不确定的是如何将这个简单的计算转换为DSL

 100.0 * (count(*)-sum(dep_delayed))/count(*)

中的等价物是DSL什么?是否有必要创建一个UDF(/ AggUDF),如果是这样,那将如何完成?

标签: scalaapache-sparkapache-spark-sql

解决方案


我今天遇到了答案:使用

 expr("some sql clause")

所以代码可以实现为

.agg(expr("100.0 * (count(*)-sum(dep_delayed))/count(*)"))

推荐阅读