pyspark中groupby多条件查询
时间: 2023-07-31 20:11:14 浏览: 86
在 PySpark 中,可以使用 `groupBy` 函数进行分组操作。对于多条件查询,可以使用 `groupBy` 函数的多个参数来指定分组条件。例如,假设有一个包含以下数据的 DataFrame:
```
+-----+------+--------+
| name|gender| city|
+-----+------+--------+
|Alice| F|New York|
| Bob| M| London|
|Alice| F| London|
| Bob| M|New York|
+-----+------+--------+
```
如果要按照 `name` 和 `gender` 两个字段进行分组,可以使用以下代码:
```python
from pyspark.sql.functions import *
df.groupBy("name", "gender").agg(count("*").alias("count"))
```
这将返回以下结果:
```
+-----+------+-----+
| name|gender|count|
+-----+------+-----+
|Alice| F| 2|
| Bob| M| 2|
+-----+------+-----+
```
如果要按照 `name` 和 `city` 两个字段进行分组,可以使用以下代码:
```python
df.groupBy("name", "city").agg(count("*").alias("count"))
```
这将返回以下结果:
```
+-----+--------+-----+
| name| city|count|
+-----+--------+-----+
|Alice|New York| 1|
| Bob|New York| 1|
| Bob| London| 1|
|Alice| London| 1|
+-----+--------+-----+
```
注意,`groupBy` 函数的参数可以是列名的字符串,也可以是 `Column` 对象。如果要使用 `Column` 对象,可以使用 `col` 函数。例如:
```python
from pyspark.sql.functions import col
df.groupBy(col("name"), col("city")).agg(count("*").alias("count"))
```
阅读全文