Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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|
# ...
# +-----------+-------+--------+----------+-------+--------+