lateralJoin

Verilen birleştirme ifadesini kullanarak başka bir DataFrame ile yanal birleşimler.

Sözdizimi

lateralJoin(other: "DataFrame", on: Optional[Column] = None, how: Optional[str] = None)

Parametreler

Parametre Türü Açıklama
other DataFrame Birleştirmenin sağ tarafı.
on Sütun, isteğe bağlı birleştirme ifadesi (Sütun).
how str, isteğe bağlı varsayılan innerdeğeridir. Bunlardan biri olmalıdır: inner, cross, left, leftouterve left_outer.

İadeler

DataFrame: Birleştirilmiş DataFrame.

Notlar

Yanal birleştirme (bağıntılı birleştirme olarak da bilinir), bir DataFrame'den alınan her satırın bir alt sorguya giriş olarak veya bu satıra özgü bir sonucu hesaplayan türetilmiş bir tablo olarak kullanıldığı birleştirme türüdür. Sağ taraf, sol taraftaki DataFrameDataFramegeçerli satırdaki sütunlara başvurarak standart birleşimden daha karmaşık ve bağlama bağımlı sonuçlar elde edebilir.

Örnekler

from pyspark.sql import functions as sf
from pyspark.sql import Row
customers_data = [
    Row(customer_id=1, name="Alice"), Row(customer_id=2, name="Bob"),
    Row(customer_id=3, name="Charlie"), Row(customer_id=4, name="Diana")
]
customers = spark.createDataFrame(customers_data)
orders_data = [
    Row(order_id=101, customer_id=1, order_date="2024-01-10",
        items=[Row(product="laptop", quantity=5), Row(product="mouse", quantity=12)]),
    Row(order_id=102, customer_id=1, order_date="2024-02-15",
        items=[Row(product="phone", quantity=2), Row(product="charger", quantity=15)]),
    Row(order_id=105, customer_id=1, order_date="2024-03-20",
        items=[Row(product="tablet", quantity=4)]),
    Row(order_id=103, customer_id=2, order_date="2024-01-12",
        items=[Row(product="tablet", quantity=8)]),
    Row(order_id=104, customer_id=2, order_date="2024-03-05",
        items=[Row(product="laptop", quantity=7)]),
    Row(order_id=106, customer_id=3, order_date="2024-04-05",
        items=[Row(product="monitor", quantity=1)]),
]
orders = spark.createDataFrame(orders_data)

customers.join(orders, "customer_id").lateralJoin(
    spark.tvf.explode(sf.col("items").outer()).select("col.*")
).select(
    "customer_id", "name", "order_id", "order_date", "product", "quantity"
).orderBy("customer_id", "order_id", "product").show()
# +-----------+-------+--------+----------+-------+--------+
# |customer_id|   name|order_id|order_date|product|quantity|
# +-----------+-------+--------+----------+-------+--------+
# |          1|  Alice|     101|2024-01-10| laptop|       5|
# |          1|  Alice|     101|2024-01-10|  mouse|      12|
# ...
# +-----------+-------+--------+----------+-------+--------+