Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Lateral bergabung dengan DataFrame lain, menggunakan ekspresi gabungan yang diberikan.
Sintaksis
lateralJoin(other: "DataFrame", on: Optional[Column] = None, how: Optional[str] = None)
Parameter-parameternya
| Parameter | Tipe | Deskripsi |
|---|---|---|
other |
DataFrame | Sisi kanan gabungan. |
on |
Kolom, opsional | ekspresi gabungan (Kolom). |
how |
str, opsional | default inner. Harus salah satu dari: inner, , crossleft, leftouter, dan left_outer. |
Pengembalian Barang
DataFrame: Bergabung dengan DataFrame.
Catatan
Gabungan lateral (juga dikenal sebagai gabungan yang berkorelasi) adalah jenis gabungan di mana setiap baris dari satu DataFrame digunakan sebagai input ke subkueri atau tabel turunan yang menghitung hasil khusus untuk baris tersebut. Sisi kanan DataFrame dapat mereferensikan kolom dari baris saat ini dari sisi DataFramekiri , memungkinkan hasil yang lebih kompleks dan tergantung konteks daripada gabungan standar.
Examples
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|
# ...
# +-----------+-------+--------+----------+-------+--------+