Freigeben über


exists (DataFrame)

Gibt ein Column Objekt für eine EXISTS-Unterabfrage zurück.

Syntax

exists()

Rückkehr

Column: Ein Column Objekt, das eine EXISTS-Unterabfrage darstellt.

Hinweise

Die exists Methode bietet eine Möglichkeit, eine boolesche Spalte zu erstellen, die auf das Vorhandensein verwandter Datensätze in einer Unterabfrage überprüft. Wenn sie in einer DataFrameMethode angewendet wird, können Sie Zeilen basierend darauf filtern, ob übereinstimmende Datensätze im verknüpften Dataset vorhanden sind. Das resultierende Column Objekt kann direkt in Filterbedingungen oder als berechnete Spalte verwendet werden.

Beispiele

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