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|
# +-----------+-------------+---------+