Aller au contenu principal

existe (DataFrame)

Renvoie un objet Column pour une sous-requête EXISTS.

Syntaxe

exists()

Renvoie

Column: Un objet Column représentant une sous-requête EXISTS.

Notes

La méthode exists offre un moyen de créer une colonne booléenne qui vérifie la présence d'enregistrements liés dans une sous-requête. Lorsqu'elle est appliquée au sein d'un DataFrame, cette méthode vous permet de filtrer les lignes en fonction de l'existence d'enregistrements correspondants dans le dataset lié. L'objet Column résultant peut être utilisé directement dans les conditions de filtrage ou comme colonne calculée.

Exemples

Python
data_customers = [
(101, "Alice", "USA"), (102, "Bob", "Canada"), (103, "Charlie", "USA"),
(104, "David", "Australia")
]
data_orders = [
(1, 101, "2023-01-15", 250), (2, 102, "2023-01-20", 300),
(3, 103, "2023-01-25", 400), (4, 101, "2023-02-05", 150)
]
customers = spark.createDataFrame(
data_customers, ["customer_id", "customer_name", "country"])
orders = spark.createDataFrame(
data_orders, ["order_id", "customer_id", "order_date", "total_amount"])

from pyspark.sql import functions as sf
customers.alias("c").where(
orders.alias("o").where(
sf.col("o.customer_id") == sf.col("c.customer_id").outer()
).exists()
).orderBy("customer_id").show()
# +-----------+-------------+-------+
# |customer_id|customer_name|country|
# +-----------+-------------+-------+
# | 101| Alice| USA|
# | 102| Bob| Canada|
# | 103| Charlie| USA|
# +-----------+-------------+-------+

customers.alias("c").where(
~orders.alias("o").where(
sf.col("o.customer_id") == sf.col("c.customer_id").outer()
).exists()
).orderBy("customer_id").show()
# +-----------+-------------+---------+
# |customer_id|customer_name| country|
# +-----------+-------------+---------+
# | 104| David|Australia|
# +-----------+-------------+---------+