gpt4 book ai didi

sql - 如何在 Scala 中获取每个 ID 的电子邮件数量

转载 作者:行者123 更新时间:2023-12-01 12:06:29 24 4
gpt4 key购买 nike

我在 SQL 中使用此查询来返回有多少 user_id 有多个电子邮件。我将如何针对 Scala 中的用户 DataFrame 编写相同的查询?还有我如何能够返回每个 user_id 的确切电子邮件

SELECT DISTINCT user_id
FROM Users
Group by user_id
Having count(DISTINCT email) > 1

最佳答案

假设您有一个用户数据框。在 spark 中,可以创建这样一个数据框的样本:

import spark.implicits._
val df = Seq(("me", "contact@me.com"),
("me", "me@company.com"),
("you", "you@company.com")).toDF("user_id", "email")
df.show()

+-------+---------------+
|user_id| email|
+-------+---------------+
| me| contact@me.com|
| me| me@company.com|
| you|you@company.com|
+-------+---------------+

现在,逻辑将与您在 SQL 中的逻辑非常相似:

df.groupBy("user_id")
.agg(countDistinct("email") as "count")
.where('count > 1)
.show()

+-------+-----+
|user_id|count|
+-------+-----+
| me| 2|
+-------+-----+

然后您可以添加 .drop("count").select("user_id") 以仅保留用户。

请注意,spark 中没有having 子句。一旦您调用了 agg 来按用户聚合您的数据框,您就有了一个常规数据框,您可以在其上调用任何转换函数,例如此处的 count 列上的过滤器。

关于sql - 如何在 Scala 中获取每个 ID 的电子邮件数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com