pyspark 查询的 SQL 等价物

Posted

技术标签:

【中文标题】pyspark 查询的 SQL 等价物【英文标题】:SQL equivalent of pyspark query 【发布时间】:2021-12-15 16:57:42 【问题描述】:

假设我有这张桌子

user | variable
1    |  2
1    |  3
2    |  4

我有以下 pyspark 查询

df.groupby("user").agg(F.udf(lambda x: 2 in x)(F.collect_list("variable")))

你知道这在 SQL 中的等价物是什么吗?

【问题讨论】:

pyspark 代码做什么/返回? 如果你解释了想要的结果,提供一个等价物应该很容易。 【参考方案1】:

假设 pyspark 只是检查用户是否有一行 variable==2...

SELECT
  user,
  MAX(CASE WHEN variable = 2 THEN 1 ELSE 0 END)
FROM
  table
GROUP BY
  user

更直接地说,假设 HiveQL...

SELECT
  user,
  array_contains(collect_list(variable), 2)
FROM
  table
GROUP BY
  user 

【讨论】:

以上是关于pyspark 查询的 SQL 等价物的主要内容,如果未能解决你的问题,请参考以下文章

在 Pyspark HiveContext 中,SQL OFFSET 的等价物是啥?

如何在pyspark中将GUID转换为整数

带有点“。”的数据框的 pyspark 访问列

如何更改pyspark中的列元数据?

pySpark:获取执行者 ID

PYSPARK:如何将带有多个 case 语句的 SQL 查询转换为 Pyspark/Pyspark-SQL?