scala - 如何在 Spark SQL DSL 中表示数学表达式
问题描述
虽然我更喜欢直接使用SQL
而不是使用DSL
后者,但在某些情况下需要后者:当我们想要对分组的行执行自定义聚合时。
我不确定的是如何将这个简单的计算转换为DSL
:
100.0 * (count(*)-sum(dep_delayed))/count(*)
中的等价物是DSL
什么?是否有必要创建一个UDF
(/ AggUDF
),如果是这样,那将如何完成?
解决方案
我今天遇到了答案:使用
expr("some sql clause")
所以代码可以实现为
.agg(expr("100.0 * (count(*)-sum(dep_delayed))/count(*)"))
推荐阅读
- c - gcc 按位奇怪的行为
- c - 为什么 sendto() 返回“无效参数”?
- lodash - 如何使用 lodash 做到这一点?
- python - Can VSCode interact with the kernel of current Jupyter notebook?
- java - 如何将位图加载到画布中并用手指在位图上自由绘制?
- android - 类 Lcom/mapbox/services/android/navigation/ui/v5/R$id 中没有类型 I 的静态字段 navigationView
- python - 如何从字符串中删除某些 utf-8 字符?
- acumatica - 可以更改客户 ID 查找
- scala - Writing ListBuffer[List[Any]] values into CSV using spark and scala
- javascript - 是否可以使用 Javascript 等将用户输入的数据写入 HTML 文本文件,而无需将其上传到服务器?